--- ### Drone configuration file for GoToSocial. ### Connects to https://drone.superseriousbusiness.org to perform testing, linting, and automatic builds/pushes to docker. ### ### For documentation on drone, see: https://docs.drone.io/ ### For documentation on drone docker pipelines in particular: https://docs.drone.io/pipeline/docker/overview/ kind: pipeline type: docker name: default steps: # We use golangci-lint for linting. # See: https://golangci-lint.run/ - name: lint image: golangci/golangci-lint:v1.43.0 volumes: - name: go-build-cache path: /root/.cache/go-build - name: golangci-lint-cache path: /root/.cache/golangci-lint - name: go-src path: /go commands: - golangci-lint run when: event: include: - pull_request - name: test image: golang:1.17.5-alpine3.14 volumes: - name: go-build-cache path: /root/.cache/go-build - name: go-src path: /go commands: - CGO_ENABLED=0 GTS_DB_TYPE="sqlite" GTS_DB_ADDRESS=":memory:" go test ./... - CGO_ENABLED=0 ./test/cliparsing.sh when: event: include: - pull_request - name: snapshot image: superseriousbusiness/gotosocial-drone-build:0.0.1 # https://github.com/superseriousbusiness/gotosocial-drone-build volumes: - name: go-build-cache path: /root/.cache/go-build - name: docker path: /var/run/docker.sock environment: DOCKER_USERNAME: gotosocial DOCKER_PASSWORD: from_secret: gts_docker_password commands: - git fetch --tags - /go/dockerlogin.sh - goreleaser release --rm-dist --snapshot - docker push superseriousbusiness/gotosocial:latest-armv6 && - docker push superseriousbusiness/gotosocial:latest-armv7 - docker push superseriousbusiness/gotosocial:latest-arm64v8 - docker push superseriousbusiness/gotosocial:latest-amd64 - docker manifest create superseriousbusiness/gotosocial:latest superseriousbusiness/gotosocial:latest-armv6 superseriousbusiness/gotosocial:latest-armv7 superseriousbusiness/gotosocial:latest-amd64 superseriousbusiness/gotosocial:latest-arm64v8 - docker manifest push superseriousbusiness/gotosocial:latest when: event: include: - push branch: include: - main - name: release image: superseriousbusiness/gotosocial-drone-build:0.0.1 # https://github.com/superseriousbusiness/gotosocial-drone-build volumes: - name: go-build-cache path: /root/.cache/go-build - name: docker path: /var/run/docker.sock environment: DOCKER_USERNAME: gotosocial DOCKER_PASSWORD: from_secret: gts_docker_password GITHUB_TOKEN: from_secret: github_token commands: - git fetch --tags - /go/dockerlogin.sh - goreleaser release --rm-dist when: event: include: - tag # We can speed up builds significantly by caching build artifacts between runs. # See: https://docs.drone.io/pipeline/docker/syntax/volumes/host/ volumes: - name: go-build-cache host: path: /drone/gotosocial/go-build - name: golangci-lint-cache host: path: /drone/gotosocial/golangci-lint - name: go-src host: path: /drone/gotosocial/go - name: docker host: path: /var/run/docker.sock trigger: repo: - superseriousbusiness/gotosocial - NyaaaWhatsUpDoc/gotosocial - f0x52/gotosocial --- kind: pipeline type: docker name: cron trigger: event: - cron cron: - nightly clone: disable: true steps: - name: mirror image: alpine/git environment: CODEBERG_TOKEN: from_secret: gts_codeberg_token commands: # clone mirror - git clone --mirror https://github.com/superseriousbusiness/gotosocial . # configure git credentials - git config --global user.email "admin@gotosocial.org" - git config credential.helper store - printf "https://gotosocialbot:${CODEBERG_TOKEN}@codeberg.org\n" >> ~/.git-credentials # push mirror - git push --mirror https://codeberg.org/superseriousbusiness/gotosocial # clean up - rm ~/.git-credentials --- kind: signature hmac: ea1a9c8fc0a872f43146651caeae4f724ca6a45c780456af5a1cbd093d9c51c5 ...