name: CI on: push: branches: [main] pull_request: permissions: contents: read jobs: changes: name: Detect changes runs-on: ubuntu-latest permissions: pull-requests: read outputs: go: ${{ steps.filter.outputs.go }} installer: ${{ steps.filter.outputs.installer }} steps: - uses: actions/checkout@v6 - uses: dorny/paths-filter@v3 id: filter with: filters: | go: - '**.go' - 'go.mod' - 'go.sum' - '.golangci.yml' - 'Makefile' - '.github/workflows/**' installer: - 'install.sh' - 'tests/install_next_test.sh' - '.github/workflows/ci.yml' installer: name: Installer needs: changes if: needs.changes.outputs.installer == 'true' runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - name: Check installer scripts run: | shellcheck -s sh install.sh tests/install_next_test.sh sh tests/install_next_test.sh lint: name: Lint needs: changes if: needs.changes.outputs.go == 'true' runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - uses: actions/setup-go@v5 with: go-version: "1.27.x" cache: true - name: Run golangci-lint uses: golangci/golangci-lint-action@v9 with: version: v2.14.0 test: name: Test needs: changes if: needs.changes.outputs.go == 'true' runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - uses: actions/setup-go@v5 with: go-version: "1.27.x" cache: true - name: Run tests run: go test -race -v ./...