name: CI on: push: branches: - main paths: - 'templates/**' - 'base/**' workflow_dispatch: jobs: validate: name: Validate templates runs-on: ubuntu-latest steps: - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6 - name: Setup Terraform uses: hashicorp/setup-terraform@5e8dbf3c6d9deaf4193ca7a8fb23f2ac83bb6c85 # v4 - 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 }} CODER_URL: ${{ secrets.CODER_URL }} CODER_SESSION_TOKEN: ${{ secrets.CODER_SESSION_TOKEN }} steps: - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6 - 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" \ --url "$CODER_URL" --token "$CODER_SESSION_TOKEN" coder templates edit "$name" --display-name "$display_name Dev Environment" --description "Development environment for $name" --icon "/icon/$name.svg" --yes \ --url "$CODER_URL" --token "$CODER_SESSION_TOKEN" done