zuul-registry/playbooks/functional-test/docker-buildset.yaml
Ian Wienand 0601df0049 Fix and/or matching for image pre-conditions
These matches look like they should be "or" (if any of these images is
already there, fail), not "and".  This caused some confusion when the
image was being leaked (I722ba599fbc690d6cb967070c05215b98a73dcaf) as
this wasn't triggering.

Change-Id: Ic6dad7bbf9013e994eb80a54bc5191a96bd4be94
2022-03-04 06:45:21 +11:00

94 lines
2.5 KiB
YAML

# Test push and pull from the buildset registry
- name: Create new docker daemon config
set_fact:
new_daemon_config:
registry-mirrors:
- "https://localhost:9000"
- name: Write docker daemon configuration
copy:
content: "{{ new_daemon_config | to_nice_json }}"
dest: /etc/docker/daemon.json
become: true
- name: Restart docker daemon
service:
name: docker
state: restarted
become: true
register: docker_restart
failed_when: docker_restart is failed and not 'Could not find the requested service' in docker_restart.msg
- name: Start the registry
shell:
cmd: docker-compose up -d
chdir: "{{ ansible_user_dir }}/src/opendev.org/zuul/zuul-registry/playbooks/functional-test"
- name: Wait for registry to come up
uri:
url: https://localhost:9000/v2/
validate_certs: false
status_code: 401
register: result
until: result.status is defined and result.status == 401
delay: 1
retries: 120
- name: Create new docker user config
set_fact:
new_user_config: {}
- name: Write docker user configuration
copy:
content: "{{ new_user_config | to_nice_json }}"
dest: ~/.docker/config.json
- name: Copy the test image into the buildset registry
command: >
skopeo copy --dest-creds testuser:testpass
docker-archive:{{ workspace }}/test.img
docker://localhost:9000/test/image:latest
- name: Print list of images
command: docker image ls --all --digests --no-trunc
register: image_list
failed_when: >
('test/image' in image_list.stdout) or
('alpine' in image_list.stdout)
- name: Pull the image from the buildset registry
command: docker pull test/image
- name: Print list of images
command: docker image ls --all --digests --no-trunc
register: image_list
failed_when: "'test/image' not in image_list.stdout"
- name: Try to pull an image that does not exist
command: docker pull test/dne
register: result
failed_when: result.rc != 1
- name: Pull an image from upstream
command: docker pull alpine
- name: Print list of images
command: docker image ls --all --digests --no-trunc
register: image_list
failed_when: "'alpine' not in image_list.stdout"
- name: Remove the test image from the local cache
command: docker rmi test/image
- name: Remove the test image from the local cache
command: docker rmi alpine
- name: Stop the registry
shell:
cmd: docker-compose down
chdir: "{{ ansible_user_dir }}/src/opendev.org/zuul/zuul-registry/playbooks/functional-test"
- name: Clean up docker volumes
command: docker volume prune -f