84 lines
2.1 KiB
YAML
84 lines
2.1 KiB
YAML
name: CI
|
|
|
|
on: [push]
|
|
|
|
jobs:
|
|
# These steps build the `gas/ci` docker image.
|
|
# There's a tricky bootstrapping problem here. We'll try to cheat first, and if that doesn't
|
|
# work, then we'll do a full bootstrapping build starting from Alpine and installing `gocheckout`
|
|
# first thing.
|
|
build-docker:
|
|
container:
|
|
image: gas/ci
|
|
volumes:
|
|
- woodpecker-gocache:/go-cache-volume
|
|
env:
|
|
GOPATH: /go-cache-volume
|
|
GOCACHE: /go-cache-volume/build-cache
|
|
steps:
|
|
- name: checkout
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
run: gocheckout
|
|
|
|
- name: build CI container
|
|
run: docker build -t gas/ci ops/devcontainer
|
|
|
|
# Fallback: full bootstrap build. This one is quite slow.
|
|
build-docker-bootstrap:
|
|
needs: build-docker
|
|
if: ${{ needs.build-docker.result == "failure" }}
|
|
|
|
container:
|
|
image: alpine:3.22
|
|
volumes:
|
|
- woodpecker-gocache:/go-cache-volume
|
|
env:
|
|
GOPATH: /go-cache-volume
|
|
GOCACHE: /go-cache-volume/build-cache
|
|
steps:
|
|
- name: checkout
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
run: |
|
|
env
|
|
apk add go
|
|
GOBIN=/usr/local/bin go install git.offline-twitter.com/offline-labs/gocheckout@v0.0.2
|
|
gocheckout
|
|
|
|
- name: install docker
|
|
run: apk add docker
|
|
|
|
- name: build CI container
|
|
run: docker build -t gas/ci ops/devcontainer
|
|
|
|
release-test:
|
|
container:
|
|
image: gas/ci
|
|
volumes:
|
|
- woodpecker-gocache:/go-cache-volume
|
|
env:
|
|
GOPATH: /go-cache-volume
|
|
GOCACHE: /go-cache-volume/build-cache
|
|
GOLANGCI_LINT_CACHE: /go-cache-volume/golangci-lint
|
|
steps:
|
|
- name: checkout
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
run: |
|
|
env
|
|
ls -la /usr/local/bin
|
|
gocheckout
|
|
|
|
- name: test
|
|
run: go test ./...
|
|
|
|
- name: lint
|
|
run: golangci-lint run
|
|
|
|
- name: Run sqlite_lint integration test
|
|
run: |
|
|
pwd
|
|
find .
|
|
ops/sqlite_lint_test.sh
|