# 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 # # 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. - hosts: primary tasks: - include_vars: vars.yaml - name: Debug tag generation inputs block: - debug: var: publish - debug: var: tags - debug: var: distro - 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 (Debian) when: ansible_os_family == 'Debian' block: - file: path: "{{ item }}" state: directory with_items: - /etc/docker/ - /etc/systemd/system/docker.service.d/ - /var/lib/docker/ - mount: path: /var/lib/docker/ src: tmpfs fstype: tmpfs opts: size=25g state: mounted - copy: "{{ item }}" with_items: - content: "{{ docker_daemon | to_json }}" dest: /etc/docker/daemon.json - src: files/docker-systemd.conf dest: /etc/systemd/system/docker.service.d/ - apt_key: url: https://download.docker.com/linux/ubuntu/gpg - apt_repository: repo: deb http://{{ zuul_site_mirror_fqdn }}/deb-docker xenial stable - apt: name: "{{ item }}" allow_unauthenticated: True with_items: - docker-ce - python3-pip - python3-setuptools - pip: name: docker version: 2.7.0 executable: pip3 # NOTE(SamYaple): Allow all connections from containers to host so the # containers can access the http server for git and wheels - iptables: action: insert chain: INPUT in_interface: docker0 jump: ACCEPT become: True - name: Make images when: not publish block: - make: chdir: "{{ zuul.project.src_dir }}" target: images params: DISTRO: "{{ distro }}" IMAGE_TAG: "{{ item }}" with_items: "{{ image_tags.stdout_lines }}" - shell: "docker images" register: docker_images - debug: var: docker_images become: True - name: Publish images block: - docker_login: username: "{{ airship_spyglass_quay_creds.username }}" password: "{{ airship_spyglass_quay_creds.password }}" registry_url: "https://quay.io/api/v1/" - make: chdir: "{{ zuul.project.src_dir }}" target: images params: DOCKER_REGISTRY: "quay.io" IMAGE_PREFIX: "airshipit" DISTRO: "{{ distro }}" IMAGE_TAG: "{{ item }}" COMMIT: "{{ zuul.newrev | default('') }}" PUSH_IMAGE: "true" with_items: "{{ image_tags.stdout_lines }}" - shell: "docker images" register: docker_images - debug: var: docker_images when: publish become: True