diff --git a/.github/workflows/coder.yaml b/.github/workflows/coder.yaml index 80e0599200e71..7120ff4b35bea 100644 --- a/.github/workflows/coder.yaml +++ b/.github/workflows/coder.yaml @@ -64,10 +64,12 @@ jobs: - '**' docs: - 'docs/**' - # For testing: - # - '.github/**' sh: - "**.sh" + go: + - "**.go" + tf: + - "**.tf" ts: - 'site/**' k8s: @@ -92,6 +94,8 @@ jobs: name: style/lint/golangci timeout-minutes: 5 runs-on: ubuntu-latest + needs: changes + if: needs.changes.outputs.go == 'true' steps: - uses: actions/checkout@v3 - uses: actions/setup-go@v3 @@ -115,6 +119,8 @@ jobs: name: style/lint/shellcheck timeout-minutes: 5 runs-on: ubuntu-latest + needs: changes + if: needs.changes.outputs.sh == 'true' steps: - uses: actions/checkout@v3 - name: Run ShellCheck @@ -128,6 +134,8 @@ jobs: name: "style/lint/typescript" timeout-minutes: 5 runs-on: ubuntu-latest + needs: changes + if: needs.changes.outputs.ts == 'true' steps: - name: Checkout uses: actions/checkout@v3 @@ -247,6 +255,8 @@ jobs: name: "style/fmt" runs-on: ubuntu-latest timeout-minutes: 5 + needs: changes + if: needs.changes.outputs.sh == 'true' || needs.changes.outputs.ts == 'true' || needs.changes.outputs.tf == 'true' steps: - name: Checkout uses: actions/checkout@v3 @@ -280,6 +290,7 @@ jobs: name: "test/go" runs-on: ${{ matrix.os }} timeout-minutes: 20 + needs: changes strategy: matrix: os: @@ -288,30 +299,36 @@ jobs: - windows-2022 steps: - uses: actions/checkout@v3 + if: needs.changes.outputs.go == 'true' - uses: actions/setup-go@v3 + if: needs.changes.outputs.go == 'true' with: go-version: "~1.19" - name: Echo Go Cache Paths + if: needs.changes.outputs.go == 'true' id: go-cache-paths run: | echo "::set-output name=go-build::$(go env GOCACHE)" echo "::set-output name=go-mod::$(go env GOMODCACHE)" - name: Go Build Cache + if: needs.changes.outputs.go == 'true' uses: actions/cache@v3 with: path: ${{ steps.go-cache-paths.outputs.go-build }} key: ${{ runner.os }}-go-build-${{ hashFiles('**/go.**', '**.go') }} - name: Go Mod Cache + if: needs.changes.outputs.go == 'true' uses: actions/cache@v3 with: path: ${{ steps.go-cache-paths.outputs.go-mod }} key: ${{ runner.os }}-go-mod-${{ hashFiles('**/go.sum') }} - name: Install gotestsum + if: needs.changes.outputs.go == 'true' uses: jaxxstorm/action-install-gh-release@v1.7.1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} @@ -320,11 +337,13 @@ jobs: tag: v1.7.0 - uses: hashicorp/setup-terraform@v2 + if: needs.changes.outputs.go == 'true' with: terraform_version: 1.1.9 terraform_wrapper: false - name: Test with Mock Database + if: needs.changes.outputs.go == 'true' id: test shell: bash run: | @@ -350,7 +369,7 @@ jobs: # that is no guarantee, see: # https://github.com/codecov/codecov-action/issues/788 continue-on-error: true - if: steps.test.outputs.cover && github.actor != 'dependabot[bot]' && !github.event.pull_request.head.repo.fork + if: steps.test.outputs.cover && github.actor != 'dependabot[bot]' && !github.event.pull_request.head.repo.fork && needs.changes.outputs.go == 'true' with: token: ${{ secrets.CODECOV_TOKEN }} files: ./gotests.coverage @@ -364,6 +383,8 @@ jobs: # goroutines. Setting this to the timeout +5m should work quite well # even if some of the preceding steps are slow. timeout-minutes: 25 + needs: changes + if: needs.changes.outputs.go == 'true' steps: - uses: actions/checkout@v3 @@ -517,6 +538,8 @@ jobs: name: "test/js" runs-on: ubuntu-latest timeout-minutes: 20 + needs: changes + if: needs.changes.outputs.ts == 'true' steps: - uses: actions/checkout@v3 @@ -555,9 +578,8 @@ jobs: test-e2e: name: "test/e2e/${{ matrix.os }}" - needs: - - changes - if: needs.changes.outputs.docs-only == 'false' + needs: changes + if: needs.changes.outputs.go == 'true' || needs.changes.outputs.ts == 'true' || needs.changes.outputs.tf == 'true' runs-on: ${{ matrix.os }} timeout-minutes: 20 strategy: