name: Lint on: workflow_call: inputs: node_version: required: true type: string buf_version: required: true type: string go_lint_version: required: true type: string core_cache_key: required: true type: string core_cache_path: required: true type: string jobs: lint-skip: name: lint skip runs-on: ubuntu-latest if: ${{ github.event_name != 'pull_request' }} steps: - name: Lint skip run: | echo "Linting outside of pull requests is skipped" api: name: api runs-on: ubuntu-latest continue-on-error: true if: ${{ github.event_name == 'pull_request' }} steps: - uses: actions/checkout@v4 - uses: bufbuild/buf-setup-action@v1 with: version: ${{ inputs.buf_version }} github_token: ${{ secrets.GITHUB_TOKEN }} - name: lint uses: bufbuild/buf-lint-action@v1 - uses: bufbuild/buf-breaking-action@v1 with: against: "https://github.com/${{ github.repository }}.git#branch=${{ github.base_ref }}" turbo-lint-unit: if: ${{ github.event_name == 'pull_request' }} name: turbo-lint-unit runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Install Dev Container CLI run: npm install -g @devcontainers/cli@0.80.0 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Lint and Unit Test All JavaScript Code run: npm run devcontainer:lint-unit - name: Fix Failures if: failure() run: | echo "Reproduce this check locally:" echo "npm run devcontainer:lint-unit" echo "If you have pnpm installed, most linting errors can be fixed automatically:" echo "pnpm turbo lint:fix" echo "In other cases, you can open the dev container called \"Turbo Lint and Unit Tests\"." echo "You will have the same environment as the pipeline check as well as some guidance on how to fix the errors." core: name: core runs-on: ubuntu-latest if: ${{ github.event_name == 'pull_request' }} steps: - name: Checkout uses: actions/checkout@v4 - uses: actions/setup-go@v5 with: go-version-file: "go.mod" - uses: actions/cache/restore@v4 timeout-minutes: 1 name: restore core with: path: ${{ inputs.core_cache_path }} key: ${{ inputs.core_cache_key }} fail-on-cache-miss: true - uses: golangci/golangci-lint-action@v8 with: version: ${{ inputs.go_lint_version }} github-token: ${{ github.token }} only-new-issues: true