name: CI on: push: branches: [main] pull_request: branches: [main] jobs: test: name: Test runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-go@v5 with: go-version-file: go.mod cache: true - name: Vet run: go vet ./... - name: Test run: go test ./... - name: Format check run: | unformatted=$(gofmt -l .) if [ -n "$unformatted" ]; then echo "Files need gofmt:" echo "$unformatted" exit 1 fi build-snapshot: name: Build snapshot runs-on: ubuntu-latest needs: test steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - uses: actions/setup-go@v5 with: go-version-file: go.mod cache: true - uses: goreleaser/goreleaser-action@v6 with: version: latest args: release --snapshot --clean env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Upload artifacts uses: actions/upload-artifact@v3 with: name: dist-snapshot path: dist/ retention-days: 7