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: ops/sqlite_lint_test.sh