Skip to content
Snippets Groups Projects

Multistage and multiarch support

Closed Alexander Kulikov requested to merge multistage into master
2 files
+ 53
30
Compare changes
  • Side-by-side
  • Inline
Files
2
+ 45
26
image: docker
image: docker:latest
services:
- docker:dind
stages:
- build
- manifest
- deploy
variables:
TEST_IMAGE: registry.vereign.com/$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME:$CI_COMMIT_REF_NAME
TEST_IMAGE_SHA: registry.vereign.com/$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME:$CI_COMMIT_SHA
RELEASE_IMAGE: registry.vereign.com/$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME:latest
build:
before_script:
- "[ -d ~/.docker] || mkdir ~/.docker"
- "echo '{ \"experimental\": \"enabled\" }' > ~/.docker/config.json"
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
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:
- hv2
services:
- docker:dind
before_script:
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN registry.vereign.com
- 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 $TEST_IMAGE -f Dockerfile .
- docker push $TEST_IMAGE
- docker tag $TEST_IMAGE $TEST_IMAGE_SHA
- docker push $TEST_IMAGE_SHA
build-x86:
- 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 tag $IMAGE $IMAGE_SHA
- docker push $IMAGE_SHA
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:
- dell
services:
- docker:dind
before_script:
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN registry.vereign.com
- 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 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 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 $TEST_IMAGE-x86 -f Dockerfile-x86 .
- docker push $TEST_IMAGE-x86
- docker tag $TEST_IMAGE-x86 $TEST_IMAGE_SHA-x86
- docker push $TEST_IMAGE_SHA-x86
- 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
deploy:
stage: deploy
tags:
@@ -40,4 +59,4 @@ deploy:
- master
script:
- apk add curl
- curl -X POST -F token=$TRIGGER_TOKEN -F ref=integration2 -F variables[branch]=master https://code.vereign.com/api/v4/projects/59/trigger/pipeline
- 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
Loading