Sumner Evans 3 лет назад
Родитель
Сommit
ff16cdf3f1
2 измененных файлов с 86 добавлено и 0 удалено
  1. 72 0
      .gitlab-ci.yml
  2. 14 0
      Dockerfile.ci

+ 72 - 0
.gitlab-ci.yml

@@ -0,0 +1,72 @@
+stages:
+- build
+- build docker
+
+.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-discord
+  - sha256sum mautrix-discord | tee mautrix-discord.sha256sum
+  artifacts:
+    paths:
+    - mautrix-discord
+    - mautrix-discord.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
+  - if [ "$CI_COMMIT_BRANCH" = "master" ]; then docker tag $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA $CI_REGISTRY_IMAGE:latest && docker push $CI_REGISTRY_IMAGE:latest; fi
+
+build amd64:
+  <<: *build
+  image: dock.mau.dev/tulir/gomuks-build-docker:linux-amd64
+
+build docker amd64:
+  <<: *build-docker
+  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_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

+ 14 - 0
Dockerfile.ci

@@ -0,0 +1,14 @@
+FROM alpine:3.15
+
+ENV UID=1337 \
+    GID=1337
+
+RUN apk add --no-cache ffmpeg su-exec ca-certificates bash jq curl yq
+
+ARG EXECUTABLE=./mautrix-discord
+COPY $EXECUTABLE /usr/bin/mautrix-discord
+COPY ./example-config.yaml /opt/mautrix-discord/example-config.yaml
+COPY ./docker-run.sh /docker-run.sh
+VOLUME /data
+
+CMD ["/docker-run.sh"]