name: CI on: push: paths: - 'templates/**' - 'base/**' pull_request: paths: - 'templates/**' - 'base/**' workflow_dispatch: jobs: checkout: name: Checkout repository runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Upload repo files as artifact uses: actions/upload-artifact@v3 with: name: source path: | base templates validate: name: Validate templates needs: checkout runs-on: ubuntu-latest steps: - name: Download source artifact uses: actions/download-artifact@v3 with: name: source - name: Terraform validate for each template (docker) run: | docker run --rm \ -v "$PWD":/workspace \ -w /workspace \ gitea.bobert.me/anthorob/coder-base:terraform sh -c ' 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: - name: Download source artifact uses: actions/download-artifact@v3 with: name: source - name: Deploy each template (docker) run: | short_sha=${COMMIT_SHORT_SHA:0:7} docker run --rm \ -v "$PWD":/workspace \ -w /workspace \ -e COMMIT_SHORT_SHA \ -e REPO \ gitea.bobert.me/anthorob/coder-base:cli sh -c ' 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 '