Package: pubtools-quay
Set of scripts used for operating with Quay serviceRequirementsPython 3.5+Skopeo is required for the tagging operationFeaturespubtools-quay-tag-image - Copy a quay image from source to destination(s)pubtools-quay-merge-manifest-list - Merge manifest lists of new and old images. The architectures
of new (source) image overwrite destination’s archs. Archs missing from the source image will
still remain in the merged manifest list. Destination image’s manifest list is overwritten by
the merged manifest list.pubtools-quay-untag - Remove tags from quay repositories. Tags to remove are specified by
image references. In addition to Docker credentials, Quay API OAuth token has to be specified.
Script will not perform the untagging operation if some image in a repo will lose its last
tag. In this scenario, untagging can be forced by using the –remove-last argument.Setup$ pip install -r requirements.txt
$ pip install .
or
$ python setup.py installUsageLocally copy an image from source to destination. Quay password is injected
from the environment variable.$ export QUAY_PASSWORD=token
$ pubtools-quay-tag-image \
  --source-ref quay.io/source/image:34 \
  --dest-ref quay.io/target/image:34 \
  --quay-user quay+username \Connect to a remote host via ssh (using password) and perform the copying to multiple destinations.$ export QUAY_PASSWORD=token
$ export SSH_PASSWORD=123456
$ pubtools-quay-tag-image \
  --source-ref quay.io/source/image:34 \
  --dest-ref quay.io/target/image:34 \
  --dest-ref quay.io/target/image2:34 \
  --quay-user quay+username \
  --remote-exec \
  --ssh-remote-host 127.0.0.1 \
  --ssh-remote-host-port 2222 \
  --ssh-username userConnect to a remote host via ssh (using private key), perform the copying$ export QUAY_PASSWORD=token
$ export SSH_PASSWORD=123456
$ pubtools-quay-tag-image \
  --source-ref quay.io/source/image:34 \
  --dest-ref quay.io/target/image:34 \
  --quay-user quay+username \
  --remote-exec \
  --ssh-remote-host 127.0.0.1 \
  --ssh-remote-host-port 2222 \
  --ssh-username user \
  --ssh-key-filename /path/to/file.key \Merge manifest lists of source-ref and dest-ref and overwrite dest-ref with the result.$ export QUAY_PASSWORD=token
$ pubtools-quay-merge-manifest-list \
  --source-ref quay.io/src/image:1 \
  --dest-ref quay.io/dest/image:1 \
  --quay-user quay+usernameUntag multiple images$ export QUAY_PASSWORD=token
$ export QUAY_API_TOKEN=oauth_token
$ pubtools-quay-tag-image \
  --reference quay.io/src/image:1 \
  --reference quay.io/src/image:2 \
  --quay-user quay+username \
  --remote-exec \
  --ssh-remote-host 127.0.0.1 \
  --ssh-remote-host-port 2222 \
  --ssh-username user \
  --ssh-key-filename /path/to/file.key \Untag an image and force the operation in case the tag is a last reference of some digest.$ export QUAY_PASSWORD=token
$ export QUAY_API_TOKEN=oauth_token
$ pubtools-quay-tag-image \
  --reference quay.io/src/image:1 \
  --remove-last \
  --quay-user quay+username \ChangeLog0.17.0 (2024-02-27)Should not call IIB if bundle is opted in fbc and targets OCP >=4.110.16.0 (2024-02-08)Instrument tracing for container pushAdd option to disable sending transparency logs to rekor0.15.0 (2023-12-07)End task when IIB request failsSet AWS KMS credentials from target settingsFix a bug where 0 IIB builds cause a push to fail0.14.0 (2023-10-17)Add –check-related-images option while calling iib-add-bundlesRemove –skip-pulp argument when calling pubtools-iib0.13.0 (2023-09-27)Implement workflow to push container security manifestsSupport prerelease floating tagRemove images created by cosign0.12.1 (2023-09-13)Allow radas messaging address to be formatable0.12.0 (2023-07-25)Support pre-release containersBetter error reporting for skopeo copy commandsLocal executor for tag-docker operatoin0.11.3 (2023-07-25)Trigger building index images in parallelMake request session object per thread0.11.2 (2023-07-10)Add logs for adding and removing signaturesRemove less signaturesUse hotfix tag to sign an hotfix index image0.11.1 (2023-05-15)Make executor configurablePin bandit versionAdd removing outdated signatures into task_status.jsonl0.11.0 (2023-03-14)Fix race condition in parallel container pushesDelete signatures in parallelDo not execute iib operation on fbc errorsBetter error message when operator item fails due to fbc inconsistencyChange FBC logic to not call IIB only when ocp_version >=4.13Unpin requests-mock versionSet request threads for uploading signaturesReformatted with new tox versionAdded support for FBC operatorsDrop Python2 supportUse namespace from index image target settingsMake iib_deprecation_list_url optional target settings0.10.4 (2022-10-04)Verify bundles presenceDo not pass arches in IIB request0.10.3 (2022-10-04)Push images to quay in multi-threadsAdded support for hotfix operatorsUse a random filename for the password file in containersFix signatures removal0.10.2 (2022-08-16)Use real task ID for tag docker signingGet intermediate repo from build details0.10.1 (2022-6-17)Remove duplicate destinations when pushing dockerListen on specific sub topic on signing service0.10.0 (2022-6-01)Fix arch of amd64 imageReturn empty manifest claims when there’s nothing to signRemove sorting of Push itemsUnpin the version of python-qpid-protonRemove created from claim messageChange condition to not require hashingPush multiarch image when the current destination doesn’t have a MLPoll for consistent results of whether a tag exists0.9.3 (2022-04-01)Fixing signing issuesSkip getting v2s1 digest for non-amd64 imagesLess skopeo login to source registryTolerate get_manifest 404 in image untagger0.9.2 (2022-03-02)Add a timeout to all HTTP requestsRemoved the option for entrypoints to send UMB messages0.9.1 (2022-02-02)Fixed creating manifests for v2ch2 single arch containers0.9.0 (2022-28-1)Support v2ch2 single arch containersSupport v2ch1 containersRun rollback only when all index image builds failAdd retries to image tagging as a part of pushesSkip checking for repo deprecation based on value in target settingsSupport extra source host for quay operationsSign V2S1 manifestsTag index image timestamps with permanent index image as a source0.8.3 (2021-10-6)Fix the usage of overwrite from index0.8.2 (2021-10-6)Make deprecation list functionality optional0.8.1 (2021-10-5)Disable sending UMB messages for taggign and untagging images0.8.0 (2021-9-7)Use SSL certificates for Pyxis authenticationRemove duplicate digests when getting signatures from PyxisRemove return of push_docker entrypoint0.7.2 (2021-8-23)Don’t raise 404 errors when deleting tags during rollback0.7.1 (2021-8-20)Fix installation of ‘docker’ dependency on Python 2.60.7.0 (2021-8-18)Add hooks to declare events of interestCreate documentationAdd option to execute commands inside a containerAdd pagination support for getting all tags via Docker HTTP APICapture IIB operation exceptionGet index image manifests with its own tokenLower python-qpid-proton version0.6.0 (2021-7-14)Create entrypoint for removing a Quay repoCreate entrypoint for clearing a Quay repoAdd signature removal to tag-docker operationsDrop unnecessary ‘external_repos’Add using extra Quay tokens for OSBS organizationsAllow specifying multiple repos in remove-repo and clear-repo tasksSkip signing when no operator claim messages are constructedAdd support for delimeter-less repositoriesChange “repo” parameter of claim messages to have external representationFix loggers per pubtools conventionsCheck username in output of skopeo –get-loginRemove the usage of Quay API reading repo dataAdd signature removal for IIB operationsUpdate sigstore to be up-to-date with current implementationAllow pushing to non-existent repo0.5.0 (2021-6-2)Fix intermediate index imageImplement tag dockerAdd skip to signing if signing key is NoneFix pub XMLRPC callImplement entrypoints for IIB methods0.4.0 (2021-5-4)Implement push-docker prototypeChange signing order to happen before pushingUse intermediate index image for signing0.3.0 (2021-2-11)Fix the versioning constraint of pyrsistent dependency0.2.0 (2021-2-9)Fix the definition of requirements.txt, allowing installation on Python 2.60.1.0 (2021-2-9)Initial release.Added tag image entrypointAdded merge manifest list entrypointAdded push docker code skeleton