From 15a3afdc3550f8bc883b50aa85be30ba1dbcb69b Mon Sep 17 00:00:00 2001 From: Kevin Minehart <5140827+kminehart@users.noreply.github.com> Date: Tue, 30 Jul 2024 09:44:04 -0500 Subject: [PATCH] CI: Fix drone docker publish (#91204) * $debug -> $$debug * use bash instead of sh * Update publish_images.star * Install bash in the docker/docker image * buildifier (cherry picked from commit bee678da94621eed1826d3344d074b693cdfd63b) # Conflicts: # .drone.yml --- .drone.yml | 110 ++++++++++++-------- scripts/drone/pipelines/publish_images.star | 37 ++++--- 2 files changed, 89 insertions(+), 58 deletions(-) diff --git a/.drone.yml b/.drone.yml index 68734237f10..600e9a4a5e3 100644 --- a/.drone.yml +++ b/.drone.yml @@ -2700,26 +2700,40 @@ steps: - name: docker path: /var/run/docker.sock - commands: - - "\n debug=\n if [[ -n $${DRY_RUN} ]]; then debug=echo; fi\n docker login - -u $${DOCKER_USER} -p $${DOCKER_PASSWORD}\n\n # Push the grafana-image-tags - images\n $debug docker push grafana/grafana-image-tags:$${TAG}-amd64\n $debug - docker push grafana/grafana-image-tags:$${TAG}-arm64\n $debug docker push grafana/grafana-image-tags:$${TAG}-armv7\n - \ $debug docker push grafana/grafana-image-tags:$${TAG}-ubuntu-amd64\n $debug - docker push grafana/grafana-image-tags:$${TAG}-ubuntu-arm64\n $debug docker - push grafana/grafana-image-tags:$${TAG}-ubuntu-armv7\n\n # Create the grafana - manifests\n $debug docker manifest create grafana/grafana:${TAG} grafana/grafana-image-tags:$${TAG}-amd64 - \ grafana/grafana-image-tags:$${TAG}-arm64 grafana/grafana-image-tags:$${TAG}-armv7\n\n - \ $debug docker manifest create grafana/grafana:${TAG}-ubuntu grafana/grafana-image-tags:$${TAG}-ubuntu-amd64 - \ grafana/grafana-image-tags:$${TAG}-ubuntu-arm64 grafana/grafana-image-tags:$${TAG}-ubuntu-armv7\n\n - \ # Push the grafana manifests\n $debug docker manifest push grafana/grafana:$${TAG}\n - \ $debug docker manifest push grafana/grafana:$${TAG}-ubuntu\n\n # if LATEST - is set, then also create & push latest\n if [[ -n $${LATEST} ]]; then\n $debug - docker manifest create grafana/grafana:latest grafana/grafana-image-tags:$${TAG}-amd64 - \ grafana/grafana-image-tags:$${TAG}-arm64 grafana/grafana-image-tags:$${TAG}-armv7\n - \ $debug docker manifest create grafana/grafana:latest-ubuntu grafana/grafana-image-tags:$${TAG}-ubuntu-amd64 - \ grafana/grafana-image-tags:$${TAG}-ubuntu-arm64 grafana/grafana-image-tags:$${TAG}-ubuntu-armv7\n\n - \ $debug docker manifest push grafana/grafana:latest\n $debug docker - manifest push grafana/grafana:latest-ubuntu\n\n fi\n " + - apk add bash + - |2- + + bash -c ' + debug= + if [[ -n $${DRY_RUN} ]]; then debug=echo; fi + docker login -u $${DOCKER_USER} -p $${DOCKER_PASSWORD} + + # Push the grafana-image-tags images + $$debug docker push grafana/grafana-image-tags:$${TAG}-amd64 + $$debug docker push grafana/grafana-image-tags:$${TAG}-arm64 + $$debug docker push grafana/grafana-image-tags:$${TAG}-armv7 + $$debug docker push grafana/grafana-image-tags:$${TAG}-ubuntu-amd64 + $$debug docker push grafana/grafana-image-tags:$${TAG}-ubuntu-arm64 + $$debug docker push grafana/grafana-image-tags:$${TAG}-ubuntu-armv7 + + # Create the grafana manifests + $$debug docker manifest create grafana/grafana:${TAG} grafana/grafana-image-tags:$${TAG}-amd64 grafana/grafana-image-tags:$${TAG}-arm64 grafana/grafana-image-tags:$${TAG}-armv7 + + $$debug docker manifest create grafana/grafana:${TAG}-ubuntu grafana/grafana-image-tags:$${TAG}-ubuntu-amd64 grafana/grafana-image-tags:$${TAG}-ubuntu-arm64 grafana/grafana-image-tags:$${TAG}-ubuntu-armv7 + + # Push the grafana manifests + $$debug docker manifest push grafana/grafana:$${TAG} + $$debug docker manifest push grafana/grafana:$${TAG}-ubuntu + + # if LATEST is set, then also create & push latest + if [[ -n $${LATEST} ]]; then + $$debug docker manifest create grafana/grafana:latest grafana/grafana-image-tags:$${TAG}-amd64 grafana/grafana-image-tags:$${TAG}-arm64 grafana/grafana-image-tags:$${TAG}-armv7 + $$debug docker manifest create grafana/grafana:latest-ubuntu grafana/grafana-image-tags:$${TAG}-ubuntu-amd64 grafana/grafana-image-tags:$${TAG}-ubuntu-arm64 grafana/grafana-image-tags:$${TAG}-ubuntu-armv7 + + $$debug docker manifest push grafana/grafana:latest + $$debug docker manifest push grafana/grafana:latest-ubuntu + + fi' depends_on: - fetch-images environment: @@ -2817,26 +2831,40 @@ steps: - name: docker path: /var/run/docker.sock - commands: - - "\n debug=\n if [[ -n $${DRY_RUN} ]]; then debug=echo; fi\n docker login - -u $${DOCKER_USER} -p $${DOCKER_PASSWORD}\n\n # Push the grafana-image-tags - images\n $debug docker push grafana/grafana-image-tags:$${TAG}-amd64\n $debug - docker push grafana/grafana-image-tags:$${TAG}-arm64\n $debug docker push grafana/grafana-image-tags:$${TAG}-armv7\n - \ $debug docker push grafana/grafana-image-tags:$${TAG}-ubuntu-amd64\n $debug - docker push grafana/grafana-image-tags:$${TAG}-ubuntu-arm64\n $debug docker - push grafana/grafana-image-tags:$${TAG}-ubuntu-armv7\n\n # Create the grafana - manifests\n $debug docker manifest create grafana/grafana:${TAG} grafana/grafana-image-tags:$${TAG}-amd64 - \ grafana/grafana-image-tags:$${TAG}-arm64 grafana/grafana-image-tags:$${TAG}-armv7\n\n - \ $debug docker manifest create grafana/grafana:${TAG}-ubuntu grafana/grafana-image-tags:$${TAG}-ubuntu-amd64 - \ grafana/grafana-image-tags:$${TAG}-ubuntu-arm64 grafana/grafana-image-tags:$${TAG}-ubuntu-armv7\n\n - \ # Push the grafana manifests\n $debug docker manifest push grafana/grafana:$${TAG}\n - \ $debug docker manifest push grafana/grafana:$${TAG}-ubuntu\n\n # if LATEST - is set, then also create & push latest\n if [[ -n $${LATEST} ]]; then\n $debug - docker manifest create grafana/grafana:latest grafana/grafana-image-tags:$${TAG}-amd64 - \ grafana/grafana-image-tags:$${TAG}-arm64 grafana/grafana-image-tags:$${TAG}-armv7\n - \ $debug docker manifest create grafana/grafana:latest-ubuntu grafana/grafana-image-tags:$${TAG}-ubuntu-amd64 - \ grafana/grafana-image-tags:$${TAG}-ubuntu-arm64 grafana/grafana-image-tags:$${TAG}-ubuntu-armv7\n\n - \ $debug docker manifest push grafana/grafana:latest\n $debug docker - manifest push grafana/grafana:latest-ubuntu\n\n fi\n " + - apk add bash + - |2- + + bash -c ' + debug= + if [[ -n $${DRY_RUN} ]]; then debug=echo; fi + docker login -u $${DOCKER_USER} -p $${DOCKER_PASSWORD} + + # Push the grafana-image-tags images + $$debug docker push grafana/grafana-image-tags:$${TAG}-amd64 + $$debug docker push grafana/grafana-image-tags:$${TAG}-arm64 + $$debug docker push grafana/grafana-image-tags:$${TAG}-armv7 + $$debug docker push grafana/grafana-image-tags:$${TAG}-ubuntu-amd64 + $$debug docker push grafana/grafana-image-tags:$${TAG}-ubuntu-arm64 + $$debug docker push grafana/grafana-image-tags:$${TAG}-ubuntu-armv7 + + # Create the grafana manifests + $$debug docker manifest create grafana/grafana:${TAG} grafana/grafana-image-tags:$${TAG}-amd64 grafana/grafana-image-tags:$${TAG}-arm64 grafana/grafana-image-tags:$${TAG}-armv7 + + $$debug docker manifest create grafana/grafana:${TAG}-ubuntu grafana/grafana-image-tags:$${TAG}-ubuntu-amd64 grafana/grafana-image-tags:$${TAG}-ubuntu-arm64 grafana/grafana-image-tags:$${TAG}-ubuntu-armv7 + + # Push the grafana manifests + $$debug docker manifest push grafana/grafana:$${TAG} + $$debug docker manifest push grafana/grafana:$${TAG}-ubuntu + + # if LATEST is set, then also create & push latest + if [[ -n $${LATEST} ]]; then + $$debug docker manifest create grafana/grafana:latest grafana/grafana-image-tags:$${TAG}-amd64 grafana/grafana-image-tags:$${TAG}-arm64 grafana/grafana-image-tags:$${TAG}-armv7 + $$debug docker manifest create grafana/grafana:latest-ubuntu grafana/grafana-image-tags:$${TAG}-ubuntu-amd64 grafana/grafana-image-tags:$${TAG}-ubuntu-arm64 grafana/grafana-image-tags:$${TAG}-ubuntu-armv7 + + $$debug docker manifest push grafana/grafana:latest + $$debug docker manifest push grafana/grafana:latest-ubuntu + + fi' depends_on: - fetch-images environment: @@ -5353,6 +5381,6 @@ kind: secret name: gcr_credentials --- kind: signature -hmac: 1b4f0dff67ac27605a6a28ca95f607d8fda78d559fa0eb5fb0ce243351f52b1b +hmac: 6f869f73371948ecd50f13c122a7554b88dc8856768e5c068edb3b2411f2972b ... diff --git a/scripts/drone/pipelines/publish_images.star b/scripts/drone/pipelines/publish_images.star index 060e14598fb..6fbcb7c475c 100644 --- a/scripts/drone/pipelines/publish_images.star +++ b/scripts/drone/pipelines/publish_images.star @@ -30,49 +30,49 @@ def publish_image_public_step(): A drone step which publishes Docker images for a public release. """ command = """ + bash -c ' debug= if [[ -n $${DRY_RUN} ]]; then debug=echo; fi docker login -u $${DOCKER_USER} -p $${DOCKER_PASSWORD} # Push the grafana-image-tags images - $debug docker push grafana/grafana-image-tags:$${TAG}-amd64 - $debug docker push grafana/grafana-image-tags:$${TAG}-arm64 - $debug docker push grafana/grafana-image-tags:$${TAG}-armv7 - $debug docker push grafana/grafana-image-tags:$${TAG}-ubuntu-amd64 - $debug docker push grafana/grafana-image-tags:$${TAG}-ubuntu-arm64 - $debug docker push grafana/grafana-image-tags:$${TAG}-ubuntu-armv7 + $$debug docker push grafana/grafana-image-tags:$${TAG}-amd64 + $$debug docker push grafana/grafana-image-tags:$${TAG}-arm64 + $$debug docker push grafana/grafana-image-tags:$${TAG}-armv7 + $$debug docker push grafana/grafana-image-tags:$${TAG}-ubuntu-amd64 + $$debug docker push grafana/grafana-image-tags:$${TAG}-ubuntu-arm64 + $$debug docker push grafana/grafana-image-tags:$${TAG}-ubuntu-armv7 # Create the grafana manifests - $debug docker manifest create grafana/grafana:${TAG} \ + $$debug docker manifest create grafana/grafana:${TAG} \ grafana/grafana-image-tags:$${TAG}-amd64 \ grafana/grafana-image-tags:$${TAG}-arm64 \ grafana/grafana-image-tags:$${TAG}-armv7 - $debug docker manifest create grafana/grafana:${TAG}-ubuntu \ + $$debug docker manifest create grafana/grafana:${TAG}-ubuntu \ grafana/grafana-image-tags:$${TAG}-ubuntu-amd64 \ grafana/grafana-image-tags:$${TAG}-ubuntu-arm64 \ grafana/grafana-image-tags:$${TAG}-ubuntu-armv7 # Push the grafana manifests - $debug docker manifest push grafana/grafana:$${TAG} - $debug docker manifest push grafana/grafana:$${TAG}-ubuntu + $$debug docker manifest push grafana/grafana:$${TAG} + $$debug docker manifest push grafana/grafana:$${TAG}-ubuntu # if LATEST is set, then also create & push latest if [[ -n $${LATEST} ]]; then - $debug docker manifest create grafana/grafana:latest \ + $$debug docker manifest create grafana/grafana:latest \ grafana/grafana-image-tags:$${TAG}-amd64 \ grafana/grafana-image-tags:$${TAG}-arm64 \ grafana/grafana-image-tags:$${TAG}-armv7 - $debug docker manifest create grafana/grafana:latest-ubuntu \ + $$debug docker manifest create grafana/grafana:latest-ubuntu \ grafana/grafana-image-tags:$${TAG}-ubuntu-amd64 \ grafana/grafana-image-tags:$${TAG}-ubuntu-arm64 \ grafana/grafana-image-tags:$${TAG}-ubuntu-armv7 - $debug docker manifest push grafana/grafana:latest - $debug docker manifest push grafana/grafana:latest-ubuntu + $$debug docker manifest push grafana/grafana:latest + $$debug docker manifest push grafana/grafana:latest-ubuntu - fi - """ + fi'""" return { "environment": { "DOCKER_USER": from_secret("docker_username"), @@ -81,7 +81,10 @@ def publish_image_public_step(): "name": "publish-images-grafana", "image": images["docker"], "depends_on": ["fetch-images"], - "commands": [command], + "commands": [ + "apk add bash", + command, + ], "volumes": [{"name": "docker", "path": "/var/run/docker.sock"}], }