.gitlab-ci.yml 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. image: docker:stable
  2. stages:
  3. - build
  4. - manifest
  5. default:
  6. before_script:
  7. - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
  8. build amd64:
  9. stage: build
  10. tags:
  11. - amd64
  12. script:
  13. - docker pull $CI_REGISTRY_IMAGE:latest || true
  14. - docker build --pull --cache-from $CI_REGISTRY_IMAGE:latest --build-arg TARGETARCH=amd64 --tag $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA-amd64 .
  15. - docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA-amd64
  16. - docker rmi $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA-amd64
  17. build arm64:
  18. stage: build
  19. tags:
  20. - arm64
  21. script:
  22. - docker pull $CI_REGISTRY_IMAGE:latest || true
  23. - docker build --pull --cache-from $CI_REGISTRY_IMAGE:latest --build-arg TARGETARCH=arm64 --tag $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA-arm64 .
  24. - docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA-arm64
  25. - docker rmi $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA-arm64
  26. manifest:
  27. stage: manifest
  28. before_script:
  29. - "mkdir -p $HOME/.docker && echo '{\"experimental\": \"enabled\"}' > $HOME/.docker/config.json"
  30. - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
  31. script:
  32. - docker pull $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA-amd64
  33. - docker pull $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA-arm64
  34. - if [ "$CI_COMMIT_BRANCH" = "master" ]; then docker manifest create $CI_REGISTRY_IMAGE:latest $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA-amd64 $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA-arm64 && docker manifest push $CI_REGISTRY_IMAGE:latest; fi
  35. - if [ "$CI_COMMIT_BRANCH" != "master" ]; then docker manifest create $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA-amd64 $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA-arm64 && docker manifest push $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME; fi
  36. - docker rmi $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA-amd64 $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA-arm64