This commit is contained in:
anthorob committed 2026-03-17 01:43:57 -04:00
1 parent 6409cf439b
commit 0181b63f2e
4 files changed
+111 -70

No files matched your search

+54
View File
@@ -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
-26
View File
@@ -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
-44
View File
@@ -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 <<EOF
validate_$name:
stage: validate
image: registry.bobert.me/anthorob/coder-base:terraform
script:
- terraform -chdir=$dir init -backend=false
- terraform -chdir=$dir validate
artifacts:
paths:
- $dir/.terraform.lock.hcl
expire_in: 1 hour
rules:
- changes:
- $dir/**
- base/**
deploy_$name:
stage: deploy
image: registry.bobert.me/anthorob/coder-base: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/**
- base/**
EOF
done
+57
View File
@@ -0,0 +1,57 @@
terraform {
required_providers {
coder = {
source = "coder/coder"
}
docker = {
source = "kreuzwerker/docker"
}
}
}
data "coder_parameter" "python_version" {
name = "Python Version"
description = "Select the Python version for your workspace."
type = "string"
default = "3"
option {
name = "Python 3"
value = "3"
}
}
module "python_workspace" {
source = "git::https://git.bobert.me/anthorob/coder-templates.git//base?ref=main"
docker_image = "registry.bobert.me/anthorob/coder-images:python${data.coder_parameter.python_version.value}"
language_metadata = [
{
display_name = "Python Version"
key = "python_version"
script = "echo ${data.coder_parameter.python_version.value}"
interval = 60
timeout = 1
}
]
language_startup_script = <<-EOT
echo $(python --version)
EOT
vscode_extensions = [
"vscjava.vscode-java-pack",
"redhat.java",
"vscjava.vscode-java-debug",
"vscjava.vscode-java-dependency",
"vscjava.vscode-maven"
]
vscode_settings = {
"java.home" = "/usr/lib/jvm/java-21-openjdk-amd64/bin/java"
}
jetbrains_ides = ["PY"]
jetbrains_default = ["PY"]
}