--- # yaml-language-server: $schema=https://json.schemastore.org/github-workflow.json name: Lint PR Code Base on: pull_request: branches: [master, main] concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true permissions: read-all jobs: Linter: name: PR Lint runs-on: ubuntu-latest timeout-minutes: 15 permissions: statuses: write contents: read packages: read issues: write # Used by ivuorinen/actions/pr-lint pull-requests: write # Used by ivuorinen/actions/pr-lint steps: - name: Checkout uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - name: Set up Node.js uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 with: node-version: 24.x - name: Set up Go uses: actions/setup-go@4dc6199c7b1a012772edbd06daecab0f50c9053c # v6.1.0 with: go-version-file: go.mod cache: true cache-dependency-path: go.sum - name: Set up Python uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0 with: python-version: "3.x" - name: Cache pre-commit uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5.0.1 with: path: ~/.cache/pre-commit key: ${{ runner.os }}-precommit-${{ hashFiles('.pre-commit-config.yaml') }} - name: Install pre-commit requirements run: | go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest - name: Run pre-commit uses: pre-commit/action@2c7b3805fd2a0fd8c1884dcaebf91fc102a13ecd # v3.0.1 with: extra_args: --all-files - name: Run integration tests and collect coverage run: | # Run all tests with coverage collection for PR analysis go test -race -covermode=atomic -coverprofile=coverage.out ./... - name: Upload coverage report uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 with: name: coverage-report path: coverage.out - name: Run PR Lint # Custom PR linting action that performs additional PR-specific checks # https://github.com/ivuorinen/actions uses: ivuorinen/actions/pr-lint@5cc7373a22402ee8985376bc713f00e09b5b2edb # v2025.11.23