.gitlab-ci.yml 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. stages:
  2. - build
  3. - build docker
  4. - manifest
  5. build:
  6. image: golang:1-alpine
  7. stage: build
  8. tags:
  9. - amd64
  10. cache:
  11. paths:
  12. - .cache
  13. before_script:
  14. - apk add git build-base
  15. - mkdir -p .cache
  16. - export GOPATH="$CI_PROJECT_DIR/.cache"
  17. script:
  18. - GOARCH=amd64 go build -o mautrix-whatsapp-amd64
  19. - GOARCH=arm64 go build -o mautrix-whatsapp-arm64
  20. artifacts:
  21. paths:
  22. - mautrix-whatsapp-amd64
  23. - mautrix-whatsapp-arm64
  24. - example-config.yaml
  25. build docker amd64:
  26. image: docker:stable
  27. stage: build docker
  28. tags:
  29. - amd64
  30. before_script:
  31. - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
  32. script:
  33. - docker pull $CI_REGISTRY_IMAGE:latest || true
  34. - docker build --pull --cache-from $CI_REGISTRY_IMAGE:latest --tag $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA-amd64 . --file Dockerfile.ci --build-args EXECUTABLE=./mautrix-whatsapp-amd64
  35. - docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA-amd64
  36. - docker rmi $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA-amd64
  37. build docker arm64:
  38. image: docker:stable
  39. stage: build docker
  40. tags:
  41. - arm64
  42. before_script:
  43. - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
  44. script:
  45. - docker pull $CI_REGISTRY_IMAGE:latest || true
  46. - docker build --pull --cache-from $CI_REGISTRY_IMAGE:latest --tag $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA-amd64 . --file Dockerfile.ci --build-args EXECUTABLE=./mautrix-whatsapp-arm64
  47. - docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA-amd64
  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