mirror of
https://github.com/superseriousbusiness/gotosocial.git
synced 2024-11-22 19:56:39 +00:00
275a3f8636
There is a new lint for unchecked int casts. Integer overflows are bad, but the old code that triggers this lint seems to be perfectly fine. Instead of disabling the lint entirely for new code as well, grandfather in existing code.
219 lines
6.4 KiB
YAML
219 lines
6.4 KiB
YAML
---
|
|
### 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.61.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.22-alpine
|
|
volumes:
|
|
- name: go-build-cache
|
|
path: /root/.cache/go-build
|
|
- name: go-src
|
|
path: /go
|
|
- name: wazero-compilation-cache
|
|
path: /root/.cache/wazero
|
|
environment:
|
|
CGO_ENABLED: "0"
|
|
GTS_WAZERO_COMPILATION_CACHE: "/root/.cache/wazero"
|
|
commands:
|
|
- apk update --no-cache && apk add git
|
|
- >-
|
|
go test
|
|
-failfast
|
|
-timeout=20m
|
|
-tags "netgo osusergo static_build kvformat timetzdata"
|
|
./...
|
|
- ./test/envparsing.sh
|
|
- ./test/swagger.sh
|
|
depends_on:
|
|
- lint
|
|
when:
|
|
event:
|
|
include:
|
|
- pull_request
|
|
|
|
- name: web-setup
|
|
image: node:18-alpine
|
|
volumes:
|
|
- name: yarn_cache
|
|
path: /tmp/cache
|
|
commands:
|
|
- yarn --cwd ./web/source install --frozen-lockfile --cache-folder /tmp/cache
|
|
- yarn --cwd ./web/source ts-patch install # https://typia.io/docs/setup/#manual-setup
|
|
depends_on:
|
|
- test
|
|
when:
|
|
event:
|
|
include:
|
|
- pull_request
|
|
|
|
- name: web-lint
|
|
image: node:18-alpine
|
|
commands:
|
|
- yarn --cwd ./web/source lint
|
|
depends_on:
|
|
- web-setup
|
|
when:
|
|
event:
|
|
include:
|
|
- pull_request
|
|
|
|
- name: web-build
|
|
image: node:18-alpine
|
|
commands:
|
|
- yarn --cwd ./web/source build
|
|
depends_on:
|
|
- web-setup
|
|
when:
|
|
event:
|
|
include:
|
|
- pull_request
|
|
|
|
- name: snapshot
|
|
image: superseriousbusiness/gotosocial-drone-build:0.6.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
|
|
S3_ACCESS_KEY_ID:
|
|
from_secret: gts_s3_access_key_id
|
|
S3_SECRET_ACCESS_KEY:
|
|
from_secret: gts_s3_secret_access_key
|
|
S3_HOSTNAME: "https://s3.superseriousbusiness.org"
|
|
S3_BUCKET_NAME: "gotosocial-snapshots"
|
|
commands:
|
|
# Create a snapshot build with GoReleaser.
|
|
- git fetch --tags
|
|
- goreleaser release --clean --snapshot
|
|
|
|
# Login to Docker, push Docker image snapshots + manifests.
|
|
- /go/dockerlogin.sh
|
|
- docker push superseriousbusiness/gotosocial:snapshot-armv6
|
|
- docker push superseriousbusiness/gotosocial:snapshot-armv7
|
|
- docker push superseriousbusiness/gotosocial:snapshot-arm64v8
|
|
- docker push superseriousbusiness/gotosocial:snapshot-amd64
|
|
- docker manifest create superseriousbusiness/gotosocial:snapshot superseriousbusiness/gotosocial:snapshot-armv6 superseriousbusiness/gotosocial:snapshot-armv7 superseriousbusiness/gotosocial:snapshot-amd64 superseriousbusiness/gotosocial:snapshot-arm64v8
|
|
- docker manifest push superseriousbusiness/gotosocial:snapshot
|
|
- docker push superseriousbusiness/gotosocial:snapshot-armv6-moderncsqlite
|
|
- docker push superseriousbusiness/gotosocial:snapshot-armv7-moderncsqlite
|
|
- docker push superseriousbusiness/gotosocial:snapshot-arm64v8-moderncsqlite
|
|
- docker push superseriousbusiness/gotosocial:snapshot-amd64-moderncsqlite
|
|
- docker manifest create superseriousbusiness/gotosocial:snapshot-moderncsqlite superseriousbusiness/gotosocial:snapshot-armv6-moderncsqlite superseriousbusiness/gotosocial:snapshot-armv7-moderncsqlite superseriousbusiness/gotosocial:snapshot-amd64-moderncsqlite superseriousbusiness/gotosocial:snapshot-arm64v8-moderncsqlite
|
|
- docker manifest push superseriousbusiness/gotosocial:snapshot-moderncsqlite
|
|
|
|
# Publish binary .tar.gz snapshots to S3.
|
|
- /go/snapshot_publish.sh
|
|
when:
|
|
event:
|
|
include:
|
|
- push
|
|
branch:
|
|
include:
|
|
- main
|
|
|
|
- name: release
|
|
image: superseriousbusiness/gotosocial-drone-build:0.6.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 --clean
|
|
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.6.1
|
|
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: 475acfffed0cc2d45304f253cc8e57c6c19b8437571ec7e343a2ef85a7a270b8
|
|
|
|
...
|