diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..0f938e8 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,64 @@ +name: Go Test and Lint + +on: + push: + branches: + - '**' + pull_request: + branches: + - '**' + +permissions: + contents: read + pull-requests: read + checks: write + +jobs: + golangci: + name: lint + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-go@v5 + with: + go-version: stable + - name: golangci-lint + uses: golangci/golangci-lint-action@v6 + with: + version: v1.59 + test: + name: test + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-go@v5 + with: + go-version: stable + - uses: actions/cache@v4 + with: + path: | + ~/.cache/go-build + ~/go/pkg/mod + key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} + restore-keys: | + ${{ runner.os }}-go- + - name: Run tests + run: "go test -cover -coverprofile=coverage.txt ./..." + - uses: actions/upload-artifact@v4 + with: + name: code-coverage + path: coverage.txt + coverage: + name: coverage + if: github.event_name == 'pull_request' + runs-on: ubuntu-latest + needs: test + permissions: + contents: read + actions: read + pull-requests: write + steps: + - uses: fgrosse/go-coverage-report@v1.0.2 + with: + coverage-artifact-name: "code-coverage" + coverage-file-name: "coverage.txt"