name: CI on: pull_request: branches: [main] # Cancel in-progress runs for pull requests when developers push new changes concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: ${{ github.ref != 'refs/heads/main' }} jobs: test-terraform: name: Validate Terraform output runs-on: ubuntu-latest steps: - name: Check out code uses: actions/checkout@v5 - name: Detect changed files uses: dorny/paths-filter@v3 id: filter with: list-files: shell filters: | shared: - 'test/**' - 'package.json' - 'bun.lock' - 'bunfig.toml' - 'tsconfig.json' - '.github/workflows/ci.yaml' - 'scripts/ts_test_auto.sh' modules: - 'registry/**/modules/**' all: - '**' - name: Set up Terraform uses: coder/coder/.github/actions/setup-tf@main - name: Set up Bun uses: oven-sh/setup-bun@v2 with: # We're using the latest version of Bun for now, but it might be worth # reconsidering. They've pushed breaking changes in patch releases # that have broken our CI. # Our PR where issues started to pop up: https://github.com/coder/modules/pull/383 # The Bun PR that broke things: https://github.com/oven-sh/bun/pull/16067 bun-version: latest - name: Install dependencies run: bun install - name: Run TypeScript tests env: ALL_CHANGED_FILES: ${{ steps.filter.outputs.all_files }} SHARED_CHANGED: ${{ steps.filter.outputs.shared }} MODULE_CHANGED_FILES: ${{ steps.filter.outputs.modules_files }} run: ./scripts/ts_test_auto.sh - name: Run Terraform tests run: ./scripts/terraform_test_all.sh - name: Run Terraform Validate run: bun terraform-validate validate-style: name: Check for typos and unformatted code runs-on: ubuntu-latest steps: - name: Check out code uses: actions/checkout@v5 - name: Install Bun uses: oven-sh/setup-bun@v2 with: bun-version: latest # Need Terraform for its formatter - name: Install Terraform uses: coder/coder/.github/actions/setup-tf@main - name: Install dependencies run: bun install - name: Validate formatting run: bun fmt:ci - name: Check for typos uses: crate-ci/typos@v1.38.1 with: config: .github/typos.toml validate-readme-files: name: Validate README files runs-on: ubuntu-latest # We want to do some basic README checks first before we try analyzing the # contents needs: validate-style steps: - name: Check out code uses: actions/checkout@v5 - name: Set up Go uses: actions/setup-go@v6 with: go-version: "1.23.2" - name: Validate contributors run: go build ./cmd/readmevalidation && ./readmevalidation - name: Remove build file artifact run: rm ./readmevalidation