From 6864ddb18c1c68348417cb989805300ce821c99d Mon Sep 17 00:00:00 2001 From: alex kuklin <alex@kuklin.eu> Date: Fri, 4 Jan 2019 02:37:50 +0200 Subject: [PATCH] multiarch manifest --- .gitlab-ci.yml | 36 ++++++++++++++++++++++++++++++------ 1 file changed, 30 insertions(+), 6 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index dd18bc2..cc6440e 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -4,28 +4,52 @@ services: stages: - build - +- manifest before_script: + - mkdir ~/.docker + - "echo '{ \"experimental\": \"enabled\" }' > ~/.docker/config.json" - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN registry.vereign.com ppc64le: variables: - IMAGE: registry.vereign.com/$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME/$CI_JOB_NAME:$CI_COMMIT_REF_NAME + IMAGE: $CI_REGISTRY/$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME/$CI_JOB_NAME:$CI_COMMIT_REF_NAME + IMAGE_SHA: $CI_REGISTRY/$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME/$CI_JOB_NAME:$CI_COMMIT_SHA stage: build tags: - ppc64le script: - - docker build --pull --build-arg ARCH=$CI_JOB_NAME -t $IMAGE -f Dockerfile . + - docker build --build-arg ARCH=$CI_JOB_NAME --build-arg CI_COMMIT_SHA=$CI_COMMIT_SHA --build-arg CI_COMMIT_REF_NAME=$CI_COMMIT_REF_NAME --build-arg CI_PROJECT_NAME=$CI_PROJECT_NAME --build-arg CI_JOB_TOKEN=$CI_JOB_TOKEN --pull -t $IMAGE -f Dockerfile . - docker push $IMAGE - + - docker tag $IMAGE $IMAGE_SHA + - docker push $IMAGE_SHA amd64: variables: - IMAGE: registry.vereign.com/$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME/$CI_JOB_NAME:$CI_COMMIT_REF_NAME + IMAGE: $CI_REGISTRY/$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME/$CI_JOB_NAME:$CI_COMMIT_REF_NAME + IMAGE_SHA: $CI_REGISTRY/$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME/$CI_JOB_NAME:$CI_COMMIT_SHA stage: build tags: - amd64 script: - - docker build --pull --build-arg ARCH=$CI_JOB_NAME -t $IMAGE -f Dockerfile . + - docker build --build-arg ARCH=$CI_JOB_NAME --build-arg CI_COMMIT_SHA=$CI_COMMIT_SHA --build-arg CI_COMMIT_REF_NAME=$CI_COMMIT_REF_NAME --build-arg CI_PROJECT_NAME=$CI_PROJECT_NAME --build-arg CI_JOB_TOKEN=$CI_JOB_TOKEN --pull -t $IMAGE -f Dockerfile . - docker push $IMAGE + - docker tag $IMAGE $IMAGE_SHA + - docker push $IMAGE_SHA + +manifest: + variables: + IMAGE: $CI_REGISTRY/$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME:$CI_COMMIT_REF_NAME + IMAGE_SHA: $CI_REGISTRY/$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME:$CI_COMMIT_SHA + IMAGE_amd64: $CI_REGISTRY/$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME/amd64:$CI_COMMIT_REF_NAME + IMAGE_SHA_amd64: $CI_REGISTRY/$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME/amd64:$CI_COMMIT_SHA + IMAGE_ppc64le: $CI_REGISTRY/$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME/ppc64le:$CI_COMMIT_REF_NAME + IMAGE_SHA_ppc64le: $CI_REGISTRY/$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME/ppc64le:$CI_COMMIT_SHA + stage: manifest + tags: + - amd64 + script: + - docker manifest create $IMAGE $IMAGE_amd64 $IMAGE_ppc64le + - docker manifest push $IMAGE + - docker manifest create $IMAGE_SHA $IMAGE_SHA_amd64 $IMAGE_SHA_ppc64le + - docker manifest push $IMAGE_SHA -- GitLab