ef47a743b6
Use '{{ zuul.pipeline }}' tag prefix in *-docker-image instead of 'change_{{ zuul.change }}' one when zuul.change is not provided, that is the case with periodic jobs. This allows to build, upload and promote images using periodic jobs e.g: - project: periodic: - project-buildset-registry - project-build-image1: dependencies: - name: project-buildset-registry - project-build-image2: dependencies: - name: project-buildset-registry # pulls from buildset registry and tests both images - project-test: dependencies: - name: project-build-image1 - name: project-build-image2 # pre-pulls images from buildset registry for fast build - project-upload-image1: dependencies: - name: project-test - project-upload-image2: dependencies: - name: project-test - project-promote: dependencies: - name: project-upload-image1 - name: project-upload-image2 This fuctionality will allow to keep latest images up to date for the case when image incorporates continuously updating code from multiple repositories. Using true ternary for tag evaluation because ternary filter requires all passed to it variables be defined or defaulted [0]. [0] https://github.com/ansible/ansible/issues/51276 Change-Id: I8eb7d2baa24905e7aac51fce0b2f9b1f24f037f9 Signed-off-by: Andrii Ostapenko <andrii.ostapenko@att.com>
43 lines
1.8 KiB
YAML
43 lines
1.8 KiB
YAML
- hosts: all
|
|
vars:
|
|
upload_docker_image_promote: false
|
|
_arch_docker_images:
|
|
- context: test-playbooks/container/docker
|
|
repository: "testrepo"
|
|
# This is what the Zuul repo uses to tag its releases:
|
|
tags: "{{ zuul.tag is defined | ternary([zuul.get('tag', '').split('.')[0], '.'.join(zuul.get('tag', '').split('.')[:2]), zuul.get('tag', '')], ['latest']) }}"
|
|
arch: ['linux/amd64', 'linux/arm64']
|
|
_normal_docker_images:
|
|
- context: test-playbooks/container/docker
|
|
repository: "testrepo"
|
|
# This is what the Zuul repo uses to tag its releases:
|
|
tags: "{{ zuul.tag is defined | ternary([zuul.get('tag', '').split('.')[0], '.'.join(zuul.get('tag', '').split('.')[:2]), zuul.get('tag', '')], ['latest']) }}"
|
|
container_images: "{{ docker_images }}"
|
|
tasks:
|
|
- name: Save zuul variables
|
|
set_fact:
|
|
old_zuul: "{{ zuul }}"
|
|
- name: Set simulated zuul variables
|
|
set_fact:
|
|
new_zuul:
|
|
pipeline: "{{ old_zuul.pipeline }}"
|
|
change_url: "{{ old_zuul.change_url }}"
|
|
executor: "{{ old_zuul.executor }}"
|
|
newrev: c12f3fe1defe8b61d59061363c9c04fb520dae18
|
|
project: "{{ old_zuul.project }}"
|
|
ref: refs/tags/3.19.0
|
|
tag: 3.19.0
|
|
|
|
- name: "Build a container image"
|
|
include_role:
|
|
name: "build-{{ (container_command == 'docker') | ternary('docker', 'container') }}-image"
|
|
vars:
|
|
zuul: "{{ new_zuul }}"
|
|
docker_images: "{{ multiarch | ternary(_arch_docker_images, _normal_docker_images) }}"
|
|
|
|
- include_role:
|
|
name: "upload-{{ (container_command == 'docker') | ternary('docker', 'container') }}-image"
|
|
vars:
|
|
zuul: "{{ new_zuul }}"
|
|
docker_images: "{{ multiarch | ternary(_arch_docker_images, _normal_docker_images) }}"
|