diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index d242605..9037dbd 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,119 +1,3 @@ -stages: -- build -- build docker -- manifest - -.build: &build - stage: build - cache: - paths: - - .cache - before_script: - - mkdir -p .cache - - export GOPATH="$CI_PROJECT_DIR/.cache" - - export GOCACHE="$CI_PROJECT_DIR/.cache/build" - - 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'`'" - script: - - go build -ldflags "$GO_LDFLAGS" -o mautrix-whatsapp - - sha256sum mautrix-whatsapp | tee mautrix-whatsapp.sha256sum - artifacts: - paths: - - mautrix-whatsapp - - mautrix-whatsapp.sha256sum - - example-config.yaml - -.build-docker: &build-docker - image: docker:stable - stage: build docker - before_script: - - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY - script: - - docker pull $CI_REGISTRY_IMAGE:latest || true - - docker build --pull --cache-from $CI_REGISTRY_IMAGE:latest --tag $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA-$DOCKER_ARCH . --file Dockerfile.ci - - docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA-$DOCKER_ARCH - - docker rmi $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA-$DOCKER_ARCH - -build amd64: - <<: *build - image: dock.mau.dev/tulir/gomuks-build-docker:linux-amd64 - -build arm64: - <<: *build - image: dock.mau.dev/tulir/gomuks-build-docker:linux-arm64 - -build arm: - <<: *build - image: dock.mau.dev/tulir/gomuks-build-docker:linux-arm - -build docker amd64: - <<: *build-docker - tags: - - amd64 - dependencies: - - build amd64 - needs: - - build amd64 - variables: - DOCKER_ARCH: amd64 - after_script: - - | - if [[ "$CI_COMMIT_BRANCH" == "master" && "$CI_JOB_STATUS" == "success" ]]; then - apk add --update curl jq - rm -rf /var/cache/apk/* - - jq -n ' - { - password: env.BEEPER_DEV_ADMIN_NIGHTLY_PASS, - bridge: env.BEEPER_BRIDGE_TYPE, - image: "\(env.CI_REGISTRY_IMAGE):\(env.CI_COMMIT_SHA)-amd64", - channel: "STABLE" - } - ' | curl "$BEEPER_DEV_ADMIN_API_URL" -H "Content-Type: application/json" -d @- - - jq -n ' - { - password: env.BEEPER_DEV_ADMIN_NIGHTLY_PASS, - bridge: env.BEEPER_BRIDGE_TYPE, - image: "\(env.CI_REGISTRY_IMAGE):\(env.CI_COMMIT_SHA)-amd64", - channel: "NIGHTLY" - } - ' | curl "$BEEPER_DEV_ADMIN_API_URL" -H "Content-Type: application/json" -d @- - - jq -n ' - { - password: env.BEEPER_PROD_ADMIN_NIGHTLY_PASS, - bridge: env.BEEPER_BRIDGE_TYPE, - image: "\(env.CI_REGISTRY_IMAGE):\(env.CI_COMMIT_SHA)-amd64", - channel: "INTERNAL", - deployNext: true - } - ' | curl "$BEEPER_PROD_ADMIN_API_URL" -H "Content-Type: application/json" -d @- - fi - -build docker arm64: - <<: *build-docker - tags: - - arm64 - dependencies: - - build arm64 - needs: - - build arm64 - variables: - DOCKER_ARCH: arm64 - -manifest: - stage: manifest - variables: - GIT_STRATEGY: none - before_script: - - "mkdir -p $HOME/.docker && echo '{\"experimental\": \"enabled\"}' > $HOME/.docker/config.json" - - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY - needs: - - build docker amd64 - - build docker arm64 - script: - - docker pull $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA-amd64 - - docker pull $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA-arm64 - - 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 - - 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 - - docker rmi $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA-amd64 $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA-arm64 +include: +- project: 'mautrix/ci' + file: '/go.yml'