zuul-jobs/roles/remove-registry-tag/tasks/docker.yaml

69 lines
2.0 KiB
YAML

- name: Ensure registry token is set
assert:
that: >
(container_registry_credentials[_registry].username is defined) and
(container_registry_credentials[_registry].password is defined)
- name: Set API base
when: remove_registry_tag_api_url is not defined
set_fact:
remove_registry_tag_api_url: 'https://hub.docker.com/v2'
- name: Delete single tag
when: remove_registry_tag_tag is defined
set_fact:
_to_delete:
- '{{ remove_registry_tag_tag }}'
- name: Iterate old tags
when: remove_registry_tag_tag is not defined
block:
- name: Setup vars
set_fact:
_to_delete: []
- name: Get project tags
uri:
url: '{{ remove_registry_tag_api_url }}/repositories/{{ _repopath }}/tags?page_size=1000'
status_code: 200
register: _tags
- name: Build list of old tags
loop: "{{ _tags.json.results }}"
loop_control:
loop_var: zj_docker_tag
set_fact:
_to_delete: '{{ _to_delete|default([]) + [zj_docker_tag] }}'
when:
- zj_docker_tag.name is regex(remove_registry_tag_regex)
- (now() - (zj_docker_tag.last_updated | to_datetime('%Y-%m-%dT%H:%M:%S.%fZ')).seconds > remove_registry_tag_age
- name: List tags to remove
debug:
var: _to_delete
- name: Get dockerhub JWT token
no_log: true
uri:
url: "{{ remove_registry_tag_api_url }}/users/login/"
body_format: json
body:
username: "{{ container_registry_credentials[_registry].username }}"
password: "{{ container_registry_credentials[_registry].password }}"
register: jwt_token
delay: 5
retries: 3
until: jwt_token and jwt_token.status==200
- name: Delete tag
no_log: true
uri:
url: '{{ remove_registry_tag_api_url }}/repositories/{{ _repopath }}/tags/{{ zj_docker_tag }}'
method: DELETE
status_code: [200, 204]
headers:
'Authorization': 'JWT {{ jwt_token.json.token }}'
loop: '{{ _to_delete }}'
loop_control:
loop_var: zj_docker_tag