108 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			108 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
| ---
 | |
| # variables:
 | |
| #   # Available platforms: linux/amd64, linux/amd64/v2, linux/amd64/v3, linux/arm64, linux/riscv64, linux/ppc64, linux/ppc64le, linux/s390x, linux/386, linux/mips64le, linux/mips64, linux/arm/v7, linux/arm/v6
 | |
| #   # DOCKER_IMAGE_BUILD_TARGET_PLATFORMS: "linux/amd64,linux/arm64,linux/arm/v7"
 | |
| #   DOCKER_IMAGE_BUILD_NAME: $CI_PROJECT_NAME
 | |
| #   DOCKER_IMAGE_BUILD_REGISTRY: $CI_REGISTRY_IMAGE
 | |
| #   DOCKER_IMAGE_BUILD_TAG: $CI_COMMIT_SHA
 | |
| 
 | |
| 
 | |
| .publish-docker-hub:
 | |
|   stage: publish
 | |
|   image: docker:23-dind
 | |
|   services:
 | |
|     - docker:23-dind
 | |
|   before_script:
 | |
|     - |
 | |
| 
 | |
|       docker login $CI_REGISTRY -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD;
 | |
| 
 | |
|       if [ "0$DOCKER_IMAGE_BUILD_TARGET_PLATFORMS" != "0" ]; then
 | |
| 
 | |
|         for i in ${DOCKER_IMAGE_BUILD_TARGET_PLATFORMS//,/ }
 | |
|         do
 | |
| 
 | |
|           docker buildx imagetools inspect $DOCKER_IMAGE_BUILD_REGISTRY/$DOCKER_IMAGE_BUILD_NAME:$DOCKER_IMAGE_BUILD_TAG;
 | |
| 
 | |
|           #DOCKER_MULTI_ARCH_IMAGES=$(docker buildx imagetools inspect "$DOCKER_IMAGE_BUILD_REGISTRY/$DOCKER_IMAGE_BUILD_NAME:$DOCKER_IMAGE_BUILD_TAG" --format "{{ range .Manifest.Manifests }}{{ if ne (print .Platform) \"&{unknown unknown  [] }\" }}$DOCKER_IMAGE_BUILD_REGISTRY/$DOCKER_IMAGE_BUILD_NAME:$DOCKER_IMAGE_BUILD_TAG@{{ println .Digest }}{{end}} {{end}}")
 | |
|           DOCKER_MULTI_ARCH_IMAGES=$(docker buildx imagetools inspect "$DOCKER_IMAGE_BUILD_REGISTRY/$DOCKER_IMAGE_BUILD_NAME:$DOCKER_IMAGE_BUILD_TAG" --format "{{ range .Manifest.Manifests }}$DOCKER_IMAGE_BUILD_REGISTRY/$DOCKER_IMAGE_BUILD_NAME:$DOCKER_IMAGE_BUILD_TAG@{{ println .Digest }} {{end}}")
 | |
| 
 | |
| 
 | |
|           echo "[DEBUG] DOCKER_MULTI_ARCH_IMAGES=$DOCKER_MULTI_ARCH_IMAGES";
 | |
| 
 | |
|         done;
 | |
| 
 | |
|       else
 | |
| 
 | |
|         docker pull $DOCKER_IMAGE_BUILD_REGISTRY/$DOCKER_IMAGE_BUILD_NAME:$DOCKER_IMAGE_BUILD_TAG;
 | |
| 
 | |
|       fi
 | |
| 
 | |
|       #docker logout $CI_REGISTRY; # commented out to test if for private repo remaining logged in works to allow pulling image
 | |
| 
 | |
|   script:
 | |
|     - docker login docker.io -u $NFC_DOCKERHUB_USERNAME -p $NFC_DOCKERHUB_TOKEN
 | |
|     - docker image ls
 | |
|     - |
 | |
|       DOCKER_HUB_TAG=dev
 | |
| 
 | |
|       if [ "0$CI_COMMIT_TAG" != "0" ]; then
 | |
| 
 | |
|         DOCKER_HUB_TAG=latest
 | |
| 
 | |
|         if [ "0$CI_COMMIT_TAG" == *"rc"* ]; then
 | |
| 
 | |
|           DOCKER_HUB_TAG=dev
 | |
| 
 | |
|         fi
 | |
| 
 | |
|       fi
 | |
| 
 | |
|       echo "[DEBUG] DOCKER_IMAGE_PUBLISH_NAME=$DOCKER_IMAGE_PUBLISH_NAME";
 | |
|       echo "[DEBUG] DOCKER_HUB_TAG=$DOCKER_HUB_TAG";
 | |
| 
 | |
|       if [ "0$DOCKER_IMAGE_BUILD_TARGET_PLATFORMS" != "0" ]; then
 | |
| 
 | |
|         echo "[DEBUG] DOCKER_MULTI_ARCH_IMAGES=$DOCKER_MULTI_ARCH_IMAGES";
 | |
|         
 | |
|         docker buildx imagetools create $DOCKER_MULTI_ARCH_IMAGES --tag $DOCKER_IMAGE_PUBLISH_REGISTRY/$DOCKER_IMAGE_PUBLISH_NAME:$DOCKER_HUB_TAG;
 | |
| 
 | |
|         if [ "0$CI_COMMIT_TAG" != "0"  ]; then
 | |
| 
 | |
|           docker buildx imagetools create $DOCKER_MULTI_ARCH_IMAGES --tag $DOCKER_IMAGE_PUBLISH_REGISTRY/$DOCKER_IMAGE_PUBLISH_NAME:$CI_COMMIT_TAG;
 | |
| 
 | |
|         fi
 | |
| 
 | |
|       else
 | |
| 
 | |
|         docker image tag $DOCKER_IMAGE_BUILD_REGISTRY/$DOCKER_IMAGE_BUILD_NAME:$DOCKER_IMAGE_BUILD_TAG $DOCKER_IMAGE_PUBLISH_REGISTRY/$DOCKER_IMAGE_PUBLISH_NAME:$DOCKER_HUB_TAG;
 | |
| 
 | |
|         docker push $DOCKER_IMAGE_PUBLISH_REGISTRY/$DOCKER_IMAGE_PUBLISH_NAME:$DOCKER_HUB_TAG;
 | |
| 
 | |
|         if [ "0$CI_COMMIT_TAG" != "0" ]; then
 | |
| 
 | |
|           docker image tag $DOCKER_IMAGE_BUILD_NAME/$DOCKER_IMAGE_BUILD_REGISTRY:$DOCKER_IMAGE_BUILD_TAG $DOCKER_IMAGE_PUBLISH_REGISTRY/$DOCKER_IMAGE_PUBLISH_NAME:$CI_COMMIT_TAG;
 | |
| 
 | |
|           docker push $DOCKER_IMAGE_PUBLISH_REGISTRY/$DOCKER_IMAGE_PUBLISH_NAME:$CI_COMMIT_TAG;
 | |
| 
 | |
|         fi
 | |
| 
 | |
|       fi
 | |
| 
 | |
|     - docker logout docker.io
 | |
|   needs: [ "Docker Container" ]
 | |
|   environment:
 | |
|     name: DockerHub
 | |
|     url: $DOCKER_IMAGE_PUBLISH_URL
 | |
|   rules:
 | |
|     - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
 | |
|       when: never
 | |
|     - if: $CI_COMMIT_TAG
 | |
|       when: on_success
 | |
|     - if: '$CI_COMMIT_BRANCH == "development"'
 | |
|       when: on_success
 | |
|     - if: '$CI_COMMIT_BRANCH != "master"'
 | |
|       allow_failure: true
 | |
|       when: manual
 | |
|     - when: never
 |