name: CI on: push: paths: - 'templates/**' - 'base/**' pull_request: paths: - 'templates/**' - 'base/**' workflow_dispatch: jobs: validate: name: Validate templates runs-on: ubuntu-latest steps: - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 - name: Setup Terraform uses: hashicorp/setup-terraform@633666f66e0061ca3b725c73b2ec20cd13a8fdd1 # v2 - name: Terraform validate for each template run: | for dir in templates/*; do [ -d "$dir" ] || continue echo "==> validating $dir" terraform -chdir="$dir" init -backend=false terraform -chdir="$dir" validate done deploy: name: Deploy templates needs: validate runs-on: ubuntu-latest env: COMMIT_SHORT_SHA: ${{ github.sha }} REPO: ${{ github.repository }} steps: - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 - name: Install Coder CLI run: | curl -fsSL https://coder.com/install.sh | sh - name: Deploy each template run: | short_sha=${COMMIT_SHORT_SHA:0:7} for dir in templates/*; do [ -d "$dir" ] || continue name=$(basename "$dir") display_name=$(echo "$name" | sed "s/.*/\u&/" | sed "s/-/ /g") echo "==> deploying $name" coder templates push -d "$dir" --name "$short_sha" --message "Auto-deployed from $REPO on commit $short_sha" --yes "$name" coder templates edit "$name" --display-name "$display_name Dev Environment" --description "Development environment for $name" --icon "/icon/$name.svg" --yes done