doc
playbooks
roles
add-authorized-keys
add-build-sshkey
add-build-winrm-cert
add-fileserver
add-gpgkey
add-launchpad-credentials
add-sshkey
ansible-galaxy-import
ara-report
bazel-build
bindep
build-container-image
build-diskimage
build-docker-image
build-puppet-module
build-python-release
build-releasenotes
buildset-artifacts-location
cabal-test
chart-testing
clear-firewall
collect-container-logs
collect-kubernetes-logs
configure-mirrors
convert-diskimage
copy-build-sshkey
create-afs-token
deploy-openshift
destroy-afs-token
download-artifact
dstat-graph
emit-job-header
enable-fips
enable-netconsole
enable-ua-subscription
encrypt-file
ensure-babel
ensure-bazel
ensure-bazelisk
ensure-cabal
ensure-chart-testing
ensure-devstack
ensure-dhall
ensure-dib
ensure-docker
ensure-dstat-graph
ensure-ghc
ensure-go
ensure-golangci-lint
ensure-haskell-stack
ensure-helm
ensure-hlint
ensure-if-python
ensure-java
ensure-javascript-build-tool
ensure-javascript-packages
ensure-kubernetes
ensure-markdownlint
ensure-nimble
ensure-nodejs
ensure-nox
ensure-openshift
ensure-output-dirs
ensure-package-repositories
ensure-packer
ensure-pdk-dependencies
ensure-phoronix-test-suite
ensure-pip
ensure-podman
ensure-poetry
ensure-pyproject-build
ensure-python
ensure-python-command
ensure-quay-repo
ensure-rust
ensure-shake
ensure-skopeo
ensure-sphinx
ensure-terraform
ensure-tox
ensure-twine
ensure-uv
ensure-virtualenv
ensure-yarn
ensure-zookeeper
fetch-coverage-output
fetch-javascript-content-tarball
fetch-javascript-output
fetch-javascript-tarball
fetch-markdownlint
fetch-output
fetch-output-openshift
fetch-phoronix-results
fetch-puppet-module-output
fetch-python-sdist-output
fetch-sphinx-output
fetch-sphinx-tarball
fetch-subunit-output
fetch-tox-output
fetch-translation-output
fetch-zuul-cloner
find-constraints
generate-zuul-manifest
git-prepare-nodecache
go
golangci-lint
haskell-stack-test
helm-lint
helm-template
hlint
htmlify-logs
intercept-job
js-package-manager
limit-log-files
local-log-download
log-inventory
markdownlint
merge-output-to-logs
mirror-container-images
tasks
inner.yaml
main.yaml
README.rst
mirror-workspace-git-repos
multi-node-bridge
multi-node-firewall
multi-node-hosts-file
multi-node-known-hosts
netlify-publish
nimble
nodejs-test-dependencies
nox
npm
packer
pause-buildset-registry
persistent-firewall
phoronix-combine-results
phoronix-test-suite
post-reboot-tasks
prepare-workspace
prepare-workspace-git
prepare-workspace-openshift
promote-artifact
promote-container-image
promote-docker-image
publish-artifacts-to-fileserver
pull-from-intermediate-registry
push-to-intermediate-registry
release-afs-volume
remove-build-sshkey
remove-build-winrm-cert
remove-gpgkey
remove-launchpad-credentials
remove-registry-tag
remove-sshkey
remove-zuul-sshkey
render-diff
report-logjuicer
revoke-sudo
run-buildset-registry
run-dstat
run-logjuicer
set-zuul-log-path-fact
shake-build
sign-artifacts
sphinx
stage-output
start-zuul-console
terraform
test-mirror-workspace-git-repos
test-prepare-workspace-git
test-setup
test-upload-logs-swift
tox
trigger-readthedocs
update-json-file
upload-afs-roots
upload-afs-synchronize
upload-artifactory
upload-container-image
upload-docker-image
upload-forge
upload-git-mirror
upload-image-s3
upload-image-swift
upload-logs
upload-logs-azure
upload-logs-base
upload-logs-failover
upload-logs-gcs
upload-logs-ibm
upload-logs-s3
upload-logs-swift
upload-npm
upload-pypi
use-buildset-registry
use-docker-mirror
validate-dco-license
validate-host
validate-zone-db
version-from-git
wait-for-pods
write-inventory
yarn
zuul-tenant-conf-check
__init__.py
test-playbooks
tests
tools
util-tasks
zuul-tests.d
zuul.d
.ansible-lint
.gitignore
.gitreview
.stestr.conf
.yamllint
CONTRIBUTING.rst
LICENSE
README.rst
bindep.txt
linters-requirements.txt
setup.cfg
setup.py
test-requirements.txt
tox.ini

Use skopeo to copy images between registries instead of docker/podman as this allows to copy layers and manifests of different architectures. The same would require far more steps with docker/podman. Change-Id: I1e6cda57d1eb827cc95eee54b19e9fd952cbf99e
26 lines
1.2 KiB
YAML
26 lines
1.2 KiB
YAML
- name: Verify repository names
|
|
when: |
|
|
container_registry_credentials is defined
|
|
and zj_image.dest_registry not in container_registry_credentials
|
|
fail:
|
|
msg: "{{ zj_image.dest_registry }} credentials not found"
|
|
|
|
- name: Verify repository permission
|
|
when: |
|
|
container_registry_credentials[zj_image.dest_registry].repository is defined and
|
|
not zj_image.dest_repository | regex_search(container_registry_credentials[zj_image.dest_registry].repository)
|
|
fail:
|
|
msg: "{{ zj_image.repository }} not permitted by {{ container_registry_credentials[zj_image.dest_registry].repository }}"
|
|
|
|
- name: Log in to registry
|
|
command: "skopeo login -u {{ container_registry_credentials[zj_image.dest_registry].username }} -p {{ container_registry_credentials[zj_image.dest_registry].password }} {{ zj_image.dest_registry }}"
|
|
no_log: true
|
|
|
|
- name: Copy image
|
|
block:
|
|
- name: "Copy to {{ zj_image.dest_repository }}:{{ zj_image.dest_tag }}"
|
|
command: "skopeo copy --all docker://{{ zj_image.src_repository }}:{{ zj_image.src_tag }} docker://{{ zj_image.dest_repository }}:{{ zj_image.dest_tag }}"
|
|
always:
|
|
- name: Log out of registry
|
|
command: "skopeo logout {{ zj_image.dest_registry }}"
|