diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index fef36d79a9c2ad981dee9d92acdab459f2a0c0b9..4cd7565091c9a8a27c6f2125a9a6ce8234f93dd7 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -6,61 +6,81 @@ stages: - build - manifest - deploy +- tech_registry variables: - DOCKER_CONFIG: ~/.docker/$CI_JOB_ID + DOCKER_CONFIG: ~/.docker/$CI_JOB_ID + IMAGE_amd64: $CI_REGISTRY/$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME/amd64:$CI_COMMIT_REF_NAME + IMAGE_ppc64le: $CI_REGISTRY/$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME/ppc64le:$CI_COMMIT_REF_NAME + MANIFEST: $CI_REGISTRY/$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME:$CI_COMMIT_REF_NAME + TECH_IMAGE_amd64: $REGISTRY_TECH_URL/$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME/amd64:$CI_COMMIT_REF_NAME + TECH_IMAGE_ppc64le: $REGISTRY_TECH_URL/$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME/ppc64le:$CI_COMMIT_REF_NAME + TECH_MANIFEST: $REGISTRY_TECH_URL/$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME:$CI_COMMIT_REF_NAME before_script: - "[ -d $DOCKER_CONFIG ] || mkdir -p $DOCKER_CONFIG" - "echo '{ \"experimental\": \"enabled\" }' > $DOCKER_CONFIG/config.json" - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY + - docker login $REGISTRY_TECH_URL --username $REGISTRY_TECH_USER --password $REGISTRY_TECH_PASS + after_script: - "rm -vRf $DOCKER_CONFIG" ppc64le: - variables: - 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 --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 build --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_ppc64le -f Dockerfile . + - docker push $IMAGE_ppc64le amd64: variables: - 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 --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 build --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_amd64 -f Dockerfile . + - docker push $IMAGE_amd64 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 $MANIFEST $IMAGE_amd64 $IMAGE_ppc64le + - docker manifest annotate $MANIFEST $IMAGE_amd64 --os linux --arch amd64 + - docker manifest annotate $MANIFEST $IMAGE_ppc64le --os linux --arch ppc64le + - docker manifest push $MANIFEST + + deploy: stage: deploy tags: - hv2 only: - - master + - master script: - apk add curl - - for ref in $DEPLOYENVS; do curl -X POST -F token=$TRIGGER_TOKEN -F ref=$ref -F variables[branch]=master https://code.vereign.com/api/v4/projects/59/trigger/pipeline; done + - for ref in $DEPLOYENVS; do curl -X POST -F token=$TRIGGER_TOKEN -F ref=$ref -F variables[branch]=$CI_COMMIT_REF_NAME $TRIGGER_CODE_BUILD; done + +duplicate: + stage: tech_registry + tags: + - amd64 + only: + refs: + - tags + - master + script: + - docker pull $IMAGE_amd64 + - docker tag $IMAGE_amd64 $TECH_IMAGE_amd64 + - docker pull $IMAGE_ppc64le + - docker tag $IMAGE_ppc64le $TECH_IMAGE_ppc64le + - docker push $TECH_IMAGE_amd64 + - docker push $TECH_IMAGE_ppc64le + - docker manifest create $TECH_MANIFEST $TECH_IMAGE_amd64 $TECH_IMAGE_ppc64le + - docker manifest annotate $TECH_MANIFEST $TECH_IMAGE_amd64 --os linux --arch amd64 + - docker manifest annotate $TECH_MANIFEST $TECH_IMAGE_ppc64le --os linux --arch ppc64le + - docker manifest push $TECH_MANIFEST