diff --git a/roles/oooci-build-images/defaults/main.yaml b/roles/oooci-build-images/defaults/main.yaml new file mode 100644 index 000000000..4365c3eea --- /dev/null +++ b/roles/oooci-build-images/defaults/main.yaml @@ -0,0 +1,41 @@ +tripleo_image_source: https://images.rdoproject.org/CentOS-8-x86_64-GenericCloud.qcow2 +workspace: "{{ ansible_user_dir }}/workspace" +openstack_git_root: "{{ ansible_user_dir }}/src/opendev.org/openstack" +python_version: + py2: python + py3: python3 +base_image_config: + py2: overcloud-images.yaml + py3: overcloud-images-python3.yaml +tripleo_pip_projects: + - "file://{{ openstack_git_root }}/diskimage-builder" + - "file://{{ openstack_git_root }}/python-tripleoclient" + - "file://{{ openstack_git_root }}/tripleo-common" +tripleo_common_path: "{{ openstack_git_root }}/tripleo-common" +tripleo_elements_path: + - "{{ openstack_git_root }}/tripleo-puppet-elements/elements" + - "{{ openstack_git_root }}/tripleo-image-elements/elements" + - "{{ openstack_git_root }}/heat-agents" + - "{{ openstack_git_root }}/ironic-python-agent-builder/dib/" +tripleo_shebang_path: + - "{{ openstack_git_root }}/tripleo-image-elements/elements/os-svc-install/bin/map-services-tripleo" + - "{{ openstack_git_root }}/diskimage-builder/diskimage_builder/lib/outfilter.py" + - "{{ openstack_git_root }}/diskimage-builder/diskimage_builder/elements/package-installs/bin/package-installs-squash" + - "{{ openstack_git_root }}/diskimage-builder/diskimage_builder/elements/svc-map/extra-data.d/10-merge-svc-map-files" + - "{{ openstack_git_root }}/diskimage-builder/diskimage_builder/elements/pypi/pre-install.d/04-configure-pypi-mirror" + - "{{ openstack_git_root }}/diskimage-builder/diskimage_builder/elements/deploy-targetcli/extra-data.d/module/targetcli-wrapper" +dib_yum_repo_conf: >- + {% if ansible_distribution == 'RedHat' and ansible_distribution_major_version is version(8, '>=') -%} + {{ dib_yum_repo_conf_rhel }} + {%- else -%} + {{ dib_yum_repo_conf_centos }} + {%- endif %} +dib_yum_repo_conf_centos: + - /etc/yum.repos.d/tripleo-centos* + - /etc/yum.repos.d/delorean* + - /etc/yum.repos.d/CentOS* +dib_yum_repo_conf_rhel: + - /etc/yum.repos.d/rh-cloud.repo + - /etc/yum.repos.d/delorean* +dib_release: "8" +tripleo_image_os: centos8 diff --git a/roles/oooci-build-images/tasks/main.yaml b/roles/oooci-build-images/tasks/main.yaml index 68610bc86..a6a13f589 100644 --- a/roles/oooci-build-images/tasks/main.yaml +++ b/roles/oooci-build-images/tasks/main.yaml @@ -1,9 +1,38 @@ --- +- name: Include OS specific variables + include_vars: centos-7.yaml + when: + - ansible_distribution == "CentOS" + - ansible_distribution_major_version == '7' + +- name: Make sure logs directory exists + file: + path: '{{ workspace }}/logs' + state: directory + +- name: Set dib related facts used by tripleo-ci build-image role build template + set_fact: + dib_local_image: "{{ workspace }}/{{ tripleo_image_source | urlsplit('path') | basename }}" + dib_node_dist: "{{ (ansible_distribution == 'RedHat') | ternary('rhel', 'centos') }}" + cacheable: true + when: tripleo_image_source is defined + +- name: Download TripleO source image + get_url: + url: "{{ tripleo_image_source }}" + dest: "{{ dib_local_image }}" + # The python_v fact is used with vars/common.yaml to set the right # overcloud-images file in the build-images.sh.j2 template - name: Get python_v fact for py2 or py3 common vars include_tasks: check_set_py3.yaml +- name: Install qemu-img for image build + package: + name: qemu-img + state: present + become: true + - name: Generate build-images.sh script template: src: templates/build-images.sh.j2 diff --git a/roles/oooci-build-images/tasks/pre.yaml b/roles/oooci-build-images/tasks/pre.yaml index 8ec8e5a2a..1a08b8c03 100644 --- a/roles/oooci-build-images/tasks/pre.yaml +++ b/roles/oooci-build-images/tasks/pre.yaml @@ -1,38 +1,14 @@ --- -- when: tripleo_image_source is defined - block: - - name: Set dib related facts used by tripleo-ci build-image role build template - set_fact: - dib_local_image: "{{ workspace }}/{{ tripleo_image_source | urlsplit('path') | basename }}" - dib_node_dist: >- - {% if ansible_distribution == 'RedHat' and ansible_distribution_major_version is version(8, '>=') -%} - "rhel" - {%- else -%} - "centos" - {%- endif %} - dib_release: "8" - dib_yum_repo_conf: >- - /etc/yum.repos.d/delorean.repo - {% if ansible_distribution == 'RedHat' and ansible_distribution_major_version is version(8, '>=') -%} - /etc/yum.repos.d/delorean-rhel8-{{ release|default('master') }}-deps.repo - /etc/yum.repos.d/rh-cloud.repo - {%- else -%} - /etc/yum.repos.d/delorean-{{ release|default('master') }}-testing.repo - /etc/yum.repos.d/tripleo-centos-powertools.repo - /etc/yum.repos.d/tripleo-centos-highavailability.repo - {%- endif %} - cacheable: true - - - name: Download TripleO source image - get_url: - url: "{{ tripleo_image_source }}" - dest: "{{ dib_local_image }}" - # get python_v fact used with vars/common.yaml to get # python2 or python3 packages in below tasks - name: Get python_v fact for py2 or py3 common vars include_tasks: check_set_py3.yaml +- name: Make sure workspace exists + file: + path: '{{ workspace }}' + state: directory + - name: Install pip and virtualenv become: true package: @@ -76,6 +52,7 @@ command: bash {{ workspace }}/pathfix_repos.sh - name: Install deps from upper-constraints + when: ansible_distribution == 'CentOS' pip: extra_args: "-c {{ openstack_git_root }}/requirements/upper-constraints.txt" requirements: "{{ openstack_git_root }}/{{ item }}/requirements.txt" @@ -85,11 +62,9 @@ - python-tripleoclient - tripleo-common + - name: pip install tripleo items pip: - name: - - "file://{{ openstack_git_root }}/diskimage-builder" - - "file://{{ openstack_git_root }}/python-tripleoclient" - - "file://{{ openstack_git_root }}/tripleo-common" + name: "{{ tripleo_pip_projects }}" state: present virtualenv: "{{ workspace }}/venv" diff --git a/roles/oooci-build-images/templates/build-images.sh.j2 b/roles/oooci-build-images/templates/build-images.sh.j2 index 4e5297c6d..74819f418 100644 --- a/roles/oooci-build-images/templates/build-images.sh.j2 +++ b/roles/oooci-build-images/templates/build-images.sh.j2 @@ -1,11 +1,7 @@ set -x source {{ workspace }}/venv/bin/activate -TRIPLEO_COMMON_PATH="{{ openstack_git_root }}/tripleo-common" -ELEMENTS="{{ openstack_git_root }}/tripleo-puppet-elements/elements:" -ELEMENTS+="{{ openstack_git_root }}/tripleo-image-elements/elements:" -ELEMENTS+="{{ openstack_git_root }}/heat-agents:" -ELEMENTS+="{{ openstack_git_root }}/ironic-python-agent-builder/dib/" +ELEMENTS="{{ tripleo_elements_path | join(':') }}" if [ -d "{{ openstack_git_root }}/instack-undercloud/elements" ]; then ELEMENTS="{{ openstack_git_root }}/instack-undercloud/elements:${ELEMENTS}" @@ -14,14 +10,14 @@ fi # the tripleo_image_type is set and passed from the ci job definition if [ "{{ tripleo_image_type }}" == "overcloud-hardened-full" ]; then CONFIG_FILES="--config-file \ - $TRIPLEO_COMMON_PATH/image-yaml/overcloud-hardened-images.yaml \ - --config-file $TRIPLEO_COMMON_PATH/image-yaml/overcloud-hardened-images-{{ tripleo_image_os }}.yaml" + {{ tripleo_common_path }}/image-yaml/overcloud-hardened-images.yaml \ + --config-file {{ tripleo_common_path }}/image-yaml/overcloud-hardened-images-{{ tripleo_image_os }}.yaml" else # base_image_config in vars/common.yaml, python_v set in build-images role # to set either overcloud-images.yaml or overcloud-images-python3.yaml CONFIG_FILES="--config-file \ - $TRIPLEO_COMMON_PATH/image-yaml/{{ base_image_config[python_v] }} \ - --config-file $TRIPLEO_COMMON_PATH/image-yaml/overcloud-images-{{ tripleo_image_os }}.yaml" + {{ tripleo_common_path }}/image-yaml/{{ base_image_config[python_v] }} \ + --config-file {{ tripleo_common_path }}/image-yaml/overcloud-images-{{ tripleo_image_os }}.yaml" fi {% if dib_local_image is defined %} @@ -35,7 +31,6 @@ export DIB_LOCAL_IMAGE={{ dib_local_image }} export NODE_DIST={{ dib_node_dist }} export DISTRO_NAME={{ dib_node_dist }} -export DIB_PYTHON_VERSION=3 {% endif %} {% if dib_release is defined %} @@ -46,13 +41,10 @@ export DIB_RELEASE={{ dib_release }} {% if dib_yum_repo_conf is defined %} -export DIB_YUM_REPO_CONF='{{ dib_yum_repo_conf }}' - -{% elif ansible_distribution == 'CentOS' and ansible_distribution_major_version is version(8, '>=') %} - -export DIB_YUM_REPO_CONF="/etc/yum.repos.d/delorean* /etc/yum.repos.d/tripleo-centos*" +export DIB_YUM_REPO_CONF='{{ dib_yum_repo_conf | join(" ") }}' {% else %} + export DIB_YUM_REPO_CONF="/etc/yum.repos.d/delorean*" {% endif %} diff --git a/roles/oooci-build-images/templates/pathfix_repos.sh.j2 b/roles/oooci-build-images/templates/pathfix_repos.sh.j2 index dfb5578bb..86c88f000 100644 --- a/roles/oooci-build-images/templates/pathfix_repos.sh.j2 +++ b/roles/oooci-build-images/templates/pathfix_repos.sh.j2 @@ -3,14 +3,7 @@ # which fails in python3 hosts. # In packages it's fixed by adding pathfix.py tasks to spec files. # Add the same behavior here as we build from source, not packages. -for python_file in " - {{ openstack_git_root }}/tripleo-image-elements/elements/os-svc-install/bin/map-services-tripleo - {{ openstack_git_root }}/diskimage-builder/diskimage_builder/lib/outfilter.py - {{ openstack_git_root }}/diskimage-builder/diskimage_builder/elements/package-installs/bin/package-installs-squash - {{ openstack_git_root }}/diskimage-builder/diskimage_builder/elements/svc-map/extra-data.d/10-merge-svc-map-files - {{ openstack_git_root }}/diskimage-builder/diskimage_builder/elements/pypi/pre-install.d/04-configure-pypi-mirror - {{ openstack_git_root }}/diskimage-builder/diskimage_builder/elements/deploy-targetcli/extra-data.d/module/targetcli-wrapper -" +for python_file in "{{ tripleo_shebang_path | join(' ')}}" do /usr/bin/pathfix.py -pni /usr/bin/python3 $python_file done diff --git a/roles/oooci-build-images/vars/centos-7.yaml b/roles/oooci-build-images/vars/centos-7.yaml new file mode 100644 index 000000000..ca1956c09 --- /dev/null +++ b/roles/oooci-build-images/vars/centos-7.yaml @@ -0,0 +1,6 @@ +tripleo_image_source: https://images.rdoproject.org/CentOS-7-x86_64-GenericCloud.qcow2 +dib_yum_repo_conf: + - /etc/yum.repos.d/CentOS* + - /etc/yum.repos.d/delorean* +dib_release: "7" +tripleo_image_os: centos7 diff --git a/zuul.d/build-image.yaml b/zuul.d/build-image.yaml index 3ebcf8dec..f57f77c4c 100644 --- a/zuul.d/build-image.yaml +++ b/zuul.d/build-image.yaml @@ -8,10 +8,12 @@ jobs: - tripleo-buildimage-overcloud-full-centos-7 - tripleo-buildimage-overcloud-full-centos-8 + - tripleo-buildimage-overcloud-full-centos-7-train gate: jobs: - tripleo-buildimage-overcloud-full-centos-7 - tripleo-buildimage-overcloud-full-centos-8 + - tripleo-buildimage-overcloud-full-centos-7-train experimental: jobs: - tripleo-buildimage-ironic-python-agent-centos-7 @@ -41,6 +43,18 @@ - ^.*\.rst$ - ^releasenotes/.*$ +- job: + name: tripleo-buildimage-overcloud-full-centos-7-train + parent: tripleo-build-images-base + override-checkout: 'stable/train' + vars: + tripleo_image_type: overcloud-full + tripleo_image_os: centos7 + branch_override: stable/train + irrelevant-files: + - ^.*\.rst$ + - ^releasenotes/.*$ + - job: name: tripleo-buildimage-overcloud-hardened-full-centos-8 parent: tripleo-build-images-base-centos-8 diff --git a/zuul.d/layout.yaml b/zuul.d/layout.yaml index 0a41be414..591e7f120 100644 --- a/zuul.d/layout.yaml +++ b/zuul.d/layout.yaml @@ -39,10 +39,14 @@ files: &build_images_files - ^playbooks/tripleo-buildimages/.*$ - ^roles/oooci-build-images/.*$ + - zuul.d/layout.yaml + - zuul.d/build-image.yaml - tripleo-buildimage-ironic-python-agent-centos-8: files: *build_images_files - tripleo-buildimage-overcloud-hardened-full-centos-8: files: *build_images_files + - tripleo-buildimage-overcloud-full-centos-7-train: + files: *build_images_files - tripleo-buildimage-overcloud-full-centos-7: files: *build_images_files - tripleo-buildimage-ironic-python-agent-centos-7: