name: ci on: push: branches: [main] pull_request: branches: [main] permissions: contents: read jobs: go: runs-on: ubuntu-latest strategy: matrix: go: ['1.26.5'] steps: - uses: actions/checkout@v6 - uses: actions/setup-go@v6 with: go-version: ${{ matrix.go }} cache: true - name: go vet run: go vet ./... # Pinning the lint binary to v2.12.x because our .golangci.yml targets # Go 1.26 and earlier v2.x releases were built against older Go versions, # which the lint config rejects with "Go language version used to build # golangci-lint is lower than the targeted Go version". # Action v9 is the first Node 24-native release; still accepts any # golangci-lint >= v2.1.0. - name: golangci-lint uses: golangci/golangci-lint-action@v9 with: version: v2.12.2 # govulncheck is informational — failures don't block the build because # stdlib CVEs surface routinely until the runner image catches up to # the latest go-patch release. The signal we care about is dependency # vulns, which we react to via go.mod bumps. - name: govulncheck continue-on-error: true run: | go install golang.org/x/vuln/cmd/govulncheck@latest govulncheck ./... # Testcontainers provisions MongoDB 8 through the runner's Docker daemon; # MONGODB_TEST_URL is intentionally unset so CI exercises that path. - name: go test env: # Quiet test logs so real failures stand out. LOG_LEVEL: error run: go test -race -count=1 -coverprofile=cov.out ./... - name: coverage summary run: go tool cover -func=cov.out | tail -1 - name: go build run: go build ./... - name: docker build run: docker build -t miti99bot .