---
### 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.49.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.19.1-alpine
    volumes:
      - name: go-build-cache
        path: /root/.cache/go-build
      - name: go-src
        path: /go
    commands:
      - apk update --no-cache && apk add git
      - CGO_ENABLED=0 GTS_DB_TYPE="sqlite" GTS_DB_ADDRESS=":memory:" go test ./...
      - CGO_ENABLED=0 ./test/cliparsing.sh
      - CGO_ENABLED=0 ./test/envparsing.sh
    when:
      event:
        include:
          - pull_request

  - name: snapshot
    image: superseriousbusiness/gotosocial-drone-build:0.0.6 # 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.6 # 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: superseriousbusiness/gotosocial-drone-build:0.0.6
    environment:
      ORIGIN_REPO: https://github.com/superseriousbusiness/gotosocial
      TARGET_REPO: https://codeberg.org/superseriousbusiness/gotosocial
      CODEBERG_USER: gotosocialbot
      CODEBERG_EMAIL: admin@gotosocial.org
      CODEBERG_TOKEN:
        from_secret: gts_codeberg_token
    commands:
      - /go/codeberg_clone.sh

---
kind: signature
hmac: 59bf8f7a44f7c87e795b8a03a528c4cef0249815370c8bacaa3186f78c82e87c

...