porthole/tools/gate/playbooks/docker-image-build.yaml
Sergiy Markin 8c69a118df Add zuul gate variable
This PS adds zuul gate variable args.chdir to the jobs where it has been
missed. This variable helps to control relative path to the source code
folder in cases when  playbooks have been inherited.

Change-Id: Iea56ea4d00b9449c129afb34f4f91952fcc015c4
2023-06-26 16:43:37 +00:00

115 lines
3.6 KiB
YAML

# Copyright 2019 AT&T Intellectual Property. All other rights reserved.
#
# 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
#
# https://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.
- hosts: all
roles:
- ensure-docker
- ensure-python
- ensure-pip
tasks:
- include_vars: vars.yaml
- name: Debug inputs
block:
- debug:
var: distro_suffix
- debug:
var: image_name
- debug:
var: publish
- debug:
var: tags
- debug:
var: zuul
- debug:
msg: "{{ tags | to_json }}"
- name: Determine tags
shell: echo '{{ tags | to_json }}' | python3 {{ zuul.project.src_dir }}/tools/image_tags.py
environment:
BRANCH: "{{ zuul.branch | default('') }}"
CHANGE: "{{ zuul.change | default('') }}"
COMMIT: "{{ zuul.newrev | default('') }}"
PATCHSET: "{{ zuul.patchset | default('') }}"
register: image_tags
- name: Debug computed tags
debug:
var: image_tags
- name: Install Docker python module for ansible docker login
block:
- pip:
name: docker
version: 4.4.4
executable: pip3
become: True
- name: Make images
when: not publish
block:
- make:
chdir: "{{ zuul.project.src_dir }}/{{ args.chdir }}"
target: "build"
params:
DISTRO_SUFFIX: "{{ distro_suffix }}"
IMAGE_NAME: "{{ image_name }}"
IMAGE_TAG: "{{ item }}"
with_items: "{{ image_tags.stdout_lines }}"
- shell: "docker images"
register: docker_images
- debug:
var: docker_images
- shell: |
docker images --format \
'{{ '{{' }}.Repository{{ '}}' }}:{{ '{{' }}.Tag{{ '}}' }}'
register: docker_images_formatted
with_items: "{{ image_tags.stdout_lines }}"
failed_when: "'{{ image_name }}:{{ item }}' not in docker_images_formatted.stdout"
become: True
- name: Publish images
when: publish
block:
- docker_login:
username: "{{ quay_credentials.username }}"
password: "{{ quay_credentials.password }}"
registry_url: "https://quay.io/api/v1/"
- make:
chdir: "{{ zuul.project.src_dir }}/{{ args.chdir }}"
target: "build"
params:
COMMIT: "{{ zuul.newrev | default('') }}"
DISTRO_SUFFIX: "{{ distro_suffix }}"
DOCKER_REGISTRY: "quay.io"
IMAGE_NAME: "{{ image_name }}"
IMAGE_PREFIX: "airshipit"
IMAGE_TAG: "{{ item }}"
PUSH_IMAGE: "true"
with_items: "{{ image_tags.stdout_lines }}"
- shell: "docker images"
register: docker_images
- debug:
var: docker_images
- shell: |
docker images --format \
'{{ '{{' }}.Repository{{ '}}' }}:{{ '{{' }}.Tag{{ '}}' }}'
register: docker_images_formatted
with_items: "{{ image_tags.stdout_lines }}"
failed_when: "'{{ image_name }}:{{ item }}' not in docker_images_formatted.stdout"
become: True