ceph / ceph-container

Docker files and images to run Ceph in containers

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

refusing to amend an existing manifest list with no --amend flag

djgalloway opened this issue · comments

https://2.jenkins.ceph.com/job/ceph-container-build-push-imgs/285/console

master-ac0c05a-pacific-centos-8-x86_64: digest: sha256:fe3fa26e6696c9ca35f96cf5d6141efda590bd5834b2195861ae59b942f41ecb size: 2410
make[2]: Leaving directory '/home/jenkins-build/build/workspace/ceph-container-build-push-imgs/ceph-container/staging/pacific-centos-8-x86_64/daemon'
+ wait_for_arm_images
+ '[' -z '' ']'
+ echo 'ARM build is disabled, don'\''t wait for arm images'
ARM build is disabled, don't wait for arm images
+ return
+ create_registry_manifest
+ enable_experimental_docker_cli
+ grep experimental /home/jenkins-build/.docker/config.json
	"experimental": "enabled"
+ for image in daemon-base daemon
+ for ceph_release in "${CEPH_RELEASES[@]}"
+ '[' master == master ']'
+ continue
+ for ceph_release in "${CEPH_RELEASES[@]}"
+ '[' nautilus == master ']'
++ _centos_release nautilus
++ local release=nautilus
++ case "${release}" in
++ echo 7
+ TARGET_RELEASE=ceph/daemon-base:master-ac0c05a-nautilus-centos-7
+ DOCKER_IMAGES='ceph/daemon-base:master-ac0c05a-nautilus-centos-7 ceph/daemon-base:master-ac0c05a-nautilus-centos-7-x86_64'
+ '[' -n '' ']'
+ docker manifest create ceph/daemon-base:master-ac0c05a-nautilus-centos-7 ceph/daemon-base:master-ac0c05a-nautilus-centos-7-x86_64
refusing to amend an existing manifest list with no --amend flag
Build step 'Execute shell' marked build as failure

Finished: FAILURE

I don't know what this job is doing or trying to do but this happens often when I'm doing an upstream release.

I got the job to progress by pushing:

diff --git a/contrib/build-push-ceph-container-imgs.sh b/contrib/build-push-ceph-container-imgs.sh
index 89a7e75..6d6722e 100644
--- a/contrib/build-push-ceph-container-imgs.sh
+++ b/contrib/build-push-ceph-container-imgs.sh
@@ -379,7 +379,7 @@ function create_registry_manifest {
       fi
 
       #shellcheck disable=SC2086
-      docker manifest create $DOCKER_IMAGES
+      docker manifest create --amend $DOCKER_IMAGES
       if [ -n "$BUILD_ARM" ]; then
         docker manifest annotate --variant v8 "${TARGET_RELEASE}" "${TARGET_RELEASE}-aarch64"
       fi

And having the job use my branch.

I don't know if the job passed because I added --amend or if it's because the CEPH_CONTAINER branch was wip-amend.

This was the final step in releasing and announcing the first release of Ceph Pacific and nobody whom I knew could help was reachable.

The https://2.jenkins.ceph.com/job/ceph-container-build-push-imgs/ and https://2.jenkins.ceph.com/job/ceph-container-build-push-imgs-arm64/ are not used for building the ceph official releases (like ceph/ceph:v16.2.0).
This is only for building the latest-xxxx tags (like latest-pacific) for the ceph/daemon and ceph/daemon-base namespace on merge PR from ceph-container repository. So you don't need to trigger them when we have a new release.

This is done via the https://2.jenkins.ceph.com/job/ceph-container-build-ceph-base-push-imgs/ and https://2.jenkins.ceph.com/job/ceph-container-build-ceph-base-push-imgs-arm64/

And having the job use my branch.

I think you can revert your change.

IMO the real fix for this is to clean the manifest directory at the start of the job but using the --amend option could be dangerous.