.gitlab-ci.yml 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  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" && "$CI_JOB_STATUS" == "success" ]]; then
  20. apk add --update curl jq
  21. rm -rf /var/cache/apk/*
  22. jq -n '
  23. {
  24. password: env.BEEPER_DEV_ADMIN_NIGHTLY_PASS,
  25. bridge: env.BEEPER_BRIDGE_TYPE,
  26. image: "\(env.CI_REGISTRY_IMAGE):\(env.CI_COMMIT_SHA)-amd64",
  27. channel: "STABLE"
  28. }
  29. ' | curl "$BEEPER_DEV_ADMIN_API_URL" -H "Content-Type: application/json" -d @-
  30. jq -n '
  31. {
  32. password: env.BEEPER_PROD_ADMIN_NIGHTLY_PASS,
  33. bridge: env.BEEPER_BRIDGE_TYPE,
  34. image: "\(env.CI_REGISTRY_IMAGE):\(env.CI_COMMIT_SHA)-amd64",
  35. channel: "INTERNAL",
  36. deployNext: true
  37. }
  38. ' | curl "$BEEPER_PROD_ADMIN_API_URL" -H "Content-Type: application/json" -d @-
  39. fi
  40. build arm64:
  41. stage: build
  42. tags:
  43. - arm64
  44. script:
  45. - docker pull $CI_REGISTRY_IMAGE:latest || true
  46. - docker build --pull --cache-from $CI_REGISTRY_IMAGE:latest --build-arg TARGETARCH=arm64 --tag $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA-arm64 .
  47. - docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA-arm64
  48. - docker rmi $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA-arm64
  49. manifest:
  50. stage: manifest
  51. before_script:
  52. - "mkdir -p $HOME/.docker && echo '{\"experimental\": \"enabled\"}' > $HOME/.docker/config.json"
  53. - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
  54. script:
  55. - docker pull $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA-amd64
  56. - docker pull $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA-arm64
  57. - 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
  58. - 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
  59. - docker rmi $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA-amd64 $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA-arm64