.gitlab-ci.yml 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. stages:
  2. - build
  3. - build docker
  4. .build: &build
  5. stage: build
  6. cache:
  7. paths:
  8. - .cache
  9. before_script:
  10. - mkdir -p .cache
  11. - export GOPATH="$CI_PROJECT_DIR/.cache"
  12. - export GOCACHE="$CI_PROJECT_DIR/.cache/build"
  13. - export GO_LDFLAGS="-s -w -linkmode external -extldflags -static -X main.Tag=$CI_COMMIT_TAG -X main.Commit=$CI_COMMIT_SHA -X 'main.BuildTime=`date '+%b %_d %Y, %H:%M:%S'`'"
  14. script:
  15. - go build -ldflags "$GO_LDFLAGS" -o mautrix-discord
  16. - sha256sum mautrix-discord | tee mautrix-discord.sha256sum
  17. artifacts:
  18. paths:
  19. - mautrix-discord
  20. - mautrix-discord.sha256sum
  21. - example-config.yaml
  22. .build-docker: &build-docker
  23. image: docker:stable
  24. stage: build docker
  25. before_script:
  26. - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
  27. script:
  28. - docker pull $CI_REGISTRY_IMAGE:latest || true
  29. - docker build --pull --cache-from $CI_REGISTRY_IMAGE:latest --tag $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA-$DOCKER_ARCH . --file Dockerfile.ci
  30. - docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA-$DOCKER_ARCH
  31. - docker rmi $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA-$DOCKER_ARCH
  32. - if [ "$CI_COMMIT_BRANCH" = "main" ]; then docker tag $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA $CI_REGISTRY_IMAGE:latest && docker push $CI_REGISTRY_IMAGE:latest; fi
  33. build amd64:
  34. <<: *build
  35. image: dock.mau.dev/tulir/gomuks-build-docker:linux-amd64
  36. build docker amd64:
  37. <<: *build-docker
  38. dependencies:
  39. - build amd64
  40. needs:
  41. - build amd64
  42. variables:
  43. DOCKER_ARCH: amd64
  44. after_script:
  45. - |
  46. if [[ "$CI_COMMIT_BRANCH" == "main" && "$CI_JOB_STATUS" == "success" ]]; then
  47. apk add --update curl jq
  48. rm -rf /var/cache/apk/*
  49. jq -n '
  50. {
  51. password: env.BEEPER_DEV_ADMIN_NIGHTLY_PASS,
  52. bridge: env.BEEPER_BRIDGE_TYPE,
  53. image: "\(env.CI_REGISTRY_IMAGE):\(env.CI_COMMIT_SHA)-amd64",
  54. channel: "STABLE"
  55. }
  56. ' | curl "$BEEPER_DEV_ADMIN_API_URL" -H "Content-Type: application/json" -d @-
  57. jq -n '
  58. {
  59. password: env.BEEPER_PROD_ADMIN_NIGHTLY_PASS,
  60. bridge: env.BEEPER_BRIDGE_TYPE,
  61. image: "\(env.CI_REGISTRY_IMAGE):\(env.CI_COMMIT_SHA)-amd64",
  62. channel: "INTERNAL",
  63. deployNext: true
  64. }
  65. ' | curl "$BEEPER_PROD_ADMIN_API_URL" -H "Content-Type: application/json" -d @-
  66. fi