61 lines
1.8 KiB
YAML
61 lines
1.8 KiB
YAML
name: CI
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- main
|
|
paths:
|
|
- 'templates/**'
|
|
- 'base/**'
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
validate:
|
|
name: Validate templates
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- 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@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" \
|
|
--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
|