.gitlab-ci.yml 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. stages:
  2. - build
  3. - build docker
  4. - manifest
  5. build amd64:
  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. - go build -o mautrix-whatsapp
  19. artifacts:
  20. paths:
  21. - mautrix-whatsapp-amd64
  22. - example-config.yaml
  23. build arm64:
  24. image: golang:1-alpine
  25. stage: build
  26. tags:
  27. - arm64
  28. cache:
  29. paths:
  30. - .cache
  31. before_script:
  32. - apk add git build-base
  33. - mkdir -p .cache
  34. - export GOPATH="$CI_PROJECT_DIR/.cache"
  35. script:
  36. - go build -o mautrix-whatsapp
  37. artifacts:
  38. paths:
  39. - mautrix-whatsapp-arm64
  40. - example-config.yaml
  41. build docker amd64:
  42. image: docker:stable
  43. stage: build docker
  44. tags:
  45. - amd64
  46. before_script:
  47. - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
  48. script:
  49. - docker pull $CI_REGISTRY_IMAGE:latest || true
  50. - 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
  51. - docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA-amd64
  52. - docker rmi $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA-amd64
  53. build docker arm64:
  54. image: docker:stable
  55. stage: build docker
  56. tags:
  57. - arm64
  58. before_script:
  59. - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
  60. script:
  61. - docker pull $CI_REGISTRY_IMAGE:latest || true
  62. - 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
  63. - docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA-amd64
  64. - docker rmi $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA-arm64
  65. manifest:
  66. stage: manifest
  67. before_script:
  68. - "mkdir -p $HOME/.docker && echo '{\"experimental\": \"enabled\"}' > $HOME/.docker/config.json"
  69. - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
  70. script:
  71. - docker pull $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA-amd64
  72. - docker pull $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA-arm64
  73. - 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
  74. - 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
  75. - docker rmi $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA-amd64 $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA-arm64