Execution
Date 08 Dec 2025 13:50:33 +0000
Duration 00:06:27.80
Controller aio1.openstack.local
User root
Versions
Ansible 2.18.6
ara 1.7.4 / 1.7.4
Python 3.12.11
Summary
7 Hosts
589 Tasks
576 Results
37 Plays
222 Files
0 Records

File: /home/zuul/src/opendev.org/openstack/ansible-role-python_venv_build/tasks/main.yml

---
# Copyright 2018, Rackspace US, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

- name: Gather variables for each operating system
  ansible.builtin.include_vars: "{{ lookup('first_found', params) }}"
  vars:
    params:
      files:
        - "{{ ansible_facts['distribution'] | lower }}-{{ ansible_facts['distribution_version'] | lower }}.yml"
        - "{{ ansible_facts['distribution'] | lower }}-{{ ansible_facts['distribution_major_version'] | lower }}.yml"
        - "{{ ansible_facts['os_family'] | lower }}-{{ ansible_facts['distribution_major_version'] | lower }}.yml"
        - "{{ ansible_facts['distribution'] | lower }}.yml"
        - "{{ ansible_facts['os_family'] | lower }}.yml"
      paths:
        - "{{ role_path }}/vars"
  tags:
    - always

- name: Gather build target facts
  ansible.builtin.setup:
    gather_subset: "!all:min"
  delegate_to: "{{ item }}"
  delegate_facts: true
  # NOTE(noonedeadpunk): failed_when is used instead of ignore_errors as latter
  #                      results in failed task, meaning that gathered facts for
  #                      reachable hosts are not preserved as a result.
  failed_when: false
  with_items: "{{ groups[venv_build_group] | default([inventory_hostname]) }}"
  tags:
    - always
  run_once: true

# NOTE(noonedeadpunk): If you are deploying services from local forks high load on which is not
#                      an issue for you, you can disable this with `venv_wheel_build_skip_check: true`
- name: Fail if wheels are not built for multiple hosts
  ansible.builtin.fail:
    msg: >-
      You are not building wheels while running role against multiple hosts.
      This might result in DOS-ing OpenDev infrustructure servers.
      In order to proceed, please ensure that you have repo servers
      for selected OS version and architecture.
      If you want to avoid building wheel on purpose, ensure that you run
      playbook in serial manner.
      In case of causing unreasonable load on the opendev.org git servers,
      your access may be blocked to protect other users and the OpenDev CI
      infrastructure which are reliant on this service.
      Found venv_build_targets: {{ venv_build_targets }}
  when:
    - not venv_wheel_build_enable | bool
    - ansible_play_batch | length > 2
    - not (venv_wheel_build_skip_check | default(False))

- name: Fail if no wheels build host is available
  ansible.builtin.fail:
    msg: >-
      You are trying to build wheels for the distribution or architecture
      that you don't have build host for.
      Please, ensure that you have at least 1 host in {{ venv_build_group }} group
      with the following distribution: {{ _venv_build_dist_arch | replace('-', ' ') }}
      Otherwise, consider adding matching OS to the group or set
      `venv_wheel_build_enable: False`. Note, that you can run
      only in a serial manner when wheel build is disabled.
      Found venv_build_targets: {{ venv_build_targets }}
  when:
    - venv_wheel_build_enable | bool
    - _venv_build_dist_arch not in venv_build_targets

- name: Including python_venv_wheel_build tasks
  ansible.builtin.include_tasks: "python_venv_wheel_build.yml"
  args:
    apply:
      tags:
        - build
  when:
    - venv_wheel_build_enable | bool
    - inventory_hostname in _venv_wheels_first_play_hosts
  tags:
    - always

- name: Including python_venv_install tasks
  ansible.builtin.import_tasks: "python_venv_install.yml"
  tags:
    - install

- name: Including python_venv_set_facts tasks
  ansible.builtin.include_tasks: "python_venv_set_facts.yml"
  args:
    apply:
      tags:
        - install
  when:
    - venv_facts_when_changed | length > 0
  tags:
    - always