summaryrefslogtreecommitdiff
path: root/.drone.yml
blob: c70afb81bed01e041c7e54a264811a56364f3e3a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
---
### 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.45.2
    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.18.3-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.5 # 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.5 # 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.5
    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: d696d93f3d1583b9815488fcd2ff1ade53a5d7512abac63f16bd8cd0079f03a5

...