.gitlab-ci.yml 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  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. after_script:
  18. - |
  19. if [ "$CI_COMMIT_BRANCH" = "master" ] && [ ! -z "$NOVA_BRIDGE_TYPE" ]; then
  20. apk add --update curl
  21. rm -rf /var/cache/apk/*
  22. curl "$NOVA_ADMIN_API_URL" -H "Content-Type: application/json" -d '{"password":"'"$NOVA_ADMIN_NIGHTLY_PASS"'","bridge":"'$NOVA_BRIDGE_TYPE'","image":"'$CI_REGISTRY_IMAGE':'$CI_COMMIT_SHA'-amd64"}'
  23. fi
  24. build arm64:
  25. stage: build
  26. tags:
  27. - arm64
  28. script:
  29. - docker pull $CI_REGISTRY_IMAGE:latest || true
  30. - docker build --pull --cache-from $CI_REGISTRY_IMAGE:latest --build-arg TARGETARCH=arm64 --tag $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA-arm64 .
  31. - docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA-arm64
  32. - docker rmi $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA-arm64
  33. manifest:
  34. stage: manifest
  35. before_script:
  36. - "mkdir -p $HOME/.docker && echo '{\"experimental\": \"enabled\"}' > $HOME/.docker/config.json"
  37. - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
  38. script:
  39. - docker pull $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA-amd64
  40. - docker pull $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA-arm64
  41. - 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
  42. - 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
  43. - docker rmi $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA-amd64 $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA-arm64