45 lines
1.1 KiB
Bash
45 lines
1.1 KiB
Bash
#!/bin/bash
|
|
set -euo pipefail
|
|
|
|
echo "stages:"
|
|
echo " - validate"
|
|
echo " - deploy"
|
|
|
|
for dir in templates/*; do
|
|
[ -d "$dir" ] || continue
|
|
name=$(basename "$dir")
|
|
display_name=$(echo "$name" | sed 's/.*/\u&/' | sed 's/-/ /g')
|
|
|
|
cat <<EOF
|
|
|
|
validate_$name:
|
|
stage: validate
|
|
image: registry.bobert.me/anthorob/coder-images:terraform-shell
|
|
script:
|
|
- terraform -chdir=$dir init -backend=false
|
|
- terraform -chdir=$dir validate
|
|
artifacts:
|
|
paths:
|
|
- $dir/.terraform.lock.hcl
|
|
expire_in: 1 hour
|
|
rules:
|
|
- changes:
|
|
- $dir/**
|
|
- coder-base/**
|
|
|
|
deploy_$name:
|
|
stage: deploy
|
|
image: registry.bobert.me/anthorob/coder-images:coder-cli
|
|
script:
|
|
- coder templates push -d $dir --name "${CI_COMMIT_SHORT_SHA}" --message "Auto-deployed from ${CI_PROJECT_PATH} on commit ${CI_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
|
|
dependencies:
|
|
- validate_$name
|
|
rules:
|
|
- changes:
|
|
- $dir/**
|
|
- coder-base/**
|
|
EOF
|
|
|
|
done
|