Skip to content
34 changes: 28 additions & 6 deletions .github/workflows/coder.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -64,10 +64,12 @@ jobs:
- '**'
docs:
- 'docs/**'
# For testing:
# - '.github/**'
sh:
- "**.sh"
go:
- "**.go"
tf:
- "**.tf"
ts:
- 'site/**'
k8s:
Expand All @@ -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
Expand All @@ -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
Expand All @@ -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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -280,6 +290,7 @@ jobs:
name: "test/go"
runs-on: ${{ matrix.os }}
timeout-minutes: 20
needs: changes
strategy:
matrix:
os:
Expand All @@ -288,30 +299,36 @@ jobs:
- windows-2022
steps:
- uses: actions/checkout@v3
if: needs.changes.outputs.go == 'true'
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sadly, because this job is required, we can't use this if at the top or the PR status will never show Success. Alternative approach linked in PR discussion which involves creating a generic workflow with same name and running it for the opposition condition (i.e. no Go changes). I like this approach better but could be swayed the other way.


- 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 }}
Expand All @@ -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: |
Expand All @@ -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
Expand All @@ -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

Expand Down Expand Up @@ -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

Expand Down Expand Up @@ -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:
Expand Down