diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml new file mode 100644 index 0000000..7c907b0 --- /dev/null +++ b/.gitea/workflows/ci.yml @@ -0,0 +1,54 @@ +name: CI + +on: + push: + paths: + - 'templates/**' + - 'base/**' + pull_request: + paths: + - 'templates/**' + - 'base/**' + +jobs: + validate: + name: Validate templates + runs-on: ubuntu-latest + container: + image: registry.bobert.me/anthorob/coder-base:terraform + steps: + - uses: actions/checkout@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 + container: + image: registry.bobert.me/anthorob/coder-base:cli + env: + COMMIT_SHORT_SHA: ${{ github.sha }} + REPO: ${{ github.repository }} + steps: + - uses: actions/checkout@v4 + + - 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 diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml deleted file mode 100644 index 138a468..0000000 --- a/.gitlab-ci.yml +++ /dev/null @@ -1,26 +0,0 @@ -stages: - - generate - - deploy - -generate-child-pipeline: - stage: generate - image: alpine:latest - before_script: - - apk add bash sed - script: - - chmod +x ci-scripts/generate-pipeline.sh - - ./ci-scripts/generate-pipeline.sh > child-pipeline.yml - artifacts: - paths: - - child-pipeline.yml - -trigger-child-pipeline: - stage: deploy - trigger: - include: - - artifact: child-pipeline.yml - job: generate-child-pipeline - strategy: depend - needs: - - job: generate-child-pipeline - artifacts: true diff --git a/ci-scripts/generate-pipeline.sh b/ci-scripts/generate-pipeline.sh deleted file mode 100644 index a14bc7e..0000000 --- a/ci-scripts/generate-pipeline.sh +++ /dev/null @@ -1,44 +0,0 @@ -#!/usr/bin/env 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 <