From e8f6578ece780171509188472b8a212b3d7cb9be Mon Sep 17 00:00:00 2001 From: Michael Brewer Date: Wed, 10 Apr 2024 16:36:25 -0700 Subject: [PATCH 01/56] feat(jetbrains-gateway): bump version to 2024.1 (#220) --- jetbrains-gateway/main.tf | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/jetbrains-gateway/main.tf b/jetbrains-gateway/main.tf index 273c712..7c57bee 100644 --- a/jetbrains-gateway/main.tf +++ b/jetbrains-gateway/main.tf @@ -54,36 +54,36 @@ variable "jetbrains_ide_versions" { description = "The set of versions for each jetbrains IDE" default = { "IU" = { - build_number = "233.14808.21" - version = "2023.3.5" + build_number = "241.14494.240" + version = "2024.1" } "PS" = { - build_number = "233.14808.18" - version = "2023.3.5" + build_number = "241.14494.237" + version = "2024.1" } "WS" = { - build_number = "233.14475.40" - version = "2023.3.4" + build_number = "241.14494.235" + version = "2024.1" } "PY" = { - build_number = "233.14475.56" - version = "2023.3.4" + build_number = "241.14494.241" + version = "2024.1" } "CL" = { - build_number = "233.14475.31" - version = "2023.3.4" + build_number = "241.14494.288" + version = "2024.1" } "GO" = { - build_number = "233.14808.20" - version = "2023.3.5" + build_number = "241.14494.238" + version = "2024.1" } "RM" = { - build_number = "233.14808.14" - version = "2023.3.5" + build_number = "241.14494.234" + version = "2024.1" } "RD" = { - build_number = "233.14475.66" - version = "2023.3.4" + build_number = "241.14494.307" + version = "2024.1" } } validation { From dfe69f25ce95b2a088b06e1b406eeaf08709f7f3 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 11 Apr 2024 02:39:55 +0300 Subject: [PATCH 02/56] chore: bump version to 1.0.11 in README.md files (#221) Co-authored-by: matifali --- git-commit-signing/README.md | 2 +- jetbrains-gateway/README.md | 4 ++-- vscode-web/README.md | 8 ++++---- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/git-commit-signing/README.md b/git-commit-signing/README.md index 47bc324..37633a2 100644 --- a/git-commit-signing/README.md +++ b/git-commit-signing/README.md @@ -19,7 +19,7 @@ This module has a chance of conflicting with the user's dotfiles / the personali ```tf module "git-commit-signing" { source = "registry.coder.com/modules/git-commit-signing/coder" - version = "1.0.9" + version = "1.0.11" agent_id = coder_agent.example.id } ``` diff --git a/jetbrains-gateway/README.md b/jetbrains-gateway/README.md index e5cb77f..629afb2 100644 --- a/jetbrains-gateway/README.md +++ b/jetbrains-gateway/README.md @@ -14,7 +14,7 @@ This module adds a JetBrains Gateway Button to open any workspace with a single ```tf module "jetbrains_gateway" { source = "registry.coder.com/modules/jetbrains-gateway/coder" - version = "1.0.9" + version = "1.0.11" agent_id = coder_agent.example.id agent_name = "example" folder = "/home/coder/example" @@ -32,7 +32,7 @@ module "jetbrains_gateway" { ```tf module "jetbrains_gateway" { source = "registry.coder.com/modules/jetbrains-gateway/coder" - version = "1.0.9" + version = "1.0.11" agent_id = coder_agent.example.id agent_name = "example" folder = "/home/coder/example" diff --git a/vscode-web/README.md b/vscode-web/README.md index c10f156..f037607 100644 --- a/vscode-web/README.md +++ b/vscode-web/README.md @@ -14,7 +14,7 @@ Automatically install [Visual Studio Code Server](https://code.visualstudio.com/ ```tf module "vscode-web" { source = "registry.coder.com/modules/vscode-web/coder" - version = "1.0.10" + version = "1.0.11" agent_id = coder_agent.example.id accept_license = true } @@ -29,7 +29,7 @@ module "vscode-web" { ```tf module "vscode-web" { source = "registry.coder.com/modules/vscode-web/coder" - version = "1.0.10" + version = "1.0.11" agent_id = coder_agent.example.id install_prefix = "/home/coder/.vscode-web" folder = "/home/coder" @@ -42,7 +42,7 @@ module "vscode-web" { ```tf module "vscode-web" { source = "registry.coder.com/modules/vscode-web/coder" - version = "1.0.10" + version = "1.0.11" agent_id = coder_agent.example.id extensions = ["github.copilot", "ms-python.python", "ms-toolsai.jupyter"] accept_license = true @@ -56,7 +56,7 @@ Configure VS Code's [settings.json](https://code.visualstudio.com/docs/getstarte ```tf module "vscode-web" { source = "registry.coder.com/modules/vscode-web/coder" - version = "1.0.10" + version = "1.0.11" agent_id = coder_agent.example.id extensions = ["dracula-theme.theme-dracula"] settings = { From 24e50e2bbb497dc282d4dda0e90710305ce7a426 Mon Sep 17 00:00:00 2001 From: djarbz <30350993+djarbz@users.noreply.github.com> Date: Sun, 14 Apr 2024 09:06:56 -0500 Subject: [PATCH 03/56] Dotfiles template default repo (#224) Co-authored-by: Muhammad Atif Ali --- dotfiles/README.md | 13 +++++++++++++ dotfiles/main.test.ts | 9 +++++++++ dotfiles/main.tf | 13 ++++++++++++- 3 files changed, 34 insertions(+), 1 deletion(-) diff --git a/dotfiles/README.md b/dotfiles/README.md index eb64563..2939025 100644 --- a/dotfiles/README.md +++ b/dotfiles/README.md @@ -18,3 +18,16 @@ module "dotfiles" { agent_id = coder_agent.example.id } ``` + +## Setting a default dotfiles repository + +You can set a default dotfiles repository for all users by setting the `default_dotfiles_repo` variable: + +```tf +module "dotfiles" { + source = "registry.coder.com/modules/dotfiles/coder" + version = "1.0.12" + agent_id = coder_agent.example.id + default_dotfiles_repo = "https://github.com/coder/dotfiles" +} +``` diff --git a/dotfiles/main.test.ts b/dotfiles/main.test.ts index 69eda32..175690f 100644 --- a/dotfiles/main.test.ts +++ b/dotfiles/main.test.ts @@ -18,4 +18,13 @@ describe("dotfiles", async () => { }); expect(state.outputs.dotfiles_uri.value).toBe(""); }); + + it("set a default dotfiles_uri", async () => { + const default_dotfiles_uri = "foo"; + const state = await runTerraformApply(import.meta.dir, { + agent_id: "foo", + default_dotfiles_uri, + }); + expect(state.outputs.dotfiles_uri.value).toBe(default_dotfiles_uri); + }); }); diff --git a/dotfiles/main.tf b/dotfiles/main.tf index c0b0135..12ca826 100644 --- a/dotfiles/main.tf +++ b/dotfiles/main.tf @@ -14,11 +14,17 @@ variable "agent_id" { description = "The ID of a Coder agent." } +variable "default_dotfiles_uri" { + type = string + description = "The default dotfiles URI if the workspace user does not provide one." + default = "" +} + data "coder_parameter" "dotfiles_uri" { type = "string" name = "dotfiles_uri" display_name = "Dotfiles URL (optional)" - default = "" + default = var.default_dotfiles_uri description = "Enter a URL for a [dotfiles repository](https://dotfiles.github.io) to personalize your workspace" mutable = true icon = "/icon/dotfiles.svg" @@ -40,4 +46,9 @@ resource "coder_script" "personalize" { output "dotfiles_uri" { description = "Dotfiles URI" value = data.coder_parameter.dotfiles_uri.value +} + +output "dotfiles_default_uri" { + description = "Dotfiles Default URI" + value = var.default_dotfiles_uri } \ No newline at end of file From 892174da7c90f11bb6df7206822211ff9f24f30a Mon Sep 17 00:00:00 2001 From: Michael Brewer Date: Sun, 14 Apr 2024 07:10:33 -0700 Subject: [PATCH 04/56] feat(git-config): allow `data.coder_workspace.me.owner_email` to be blank (#222) --- git-config/main.test.ts | 69 +++++++++++++++++++++++++++++++++++++++++ git-config/main.tf | 2 ++ test.ts | 2 +- 3 files changed, 72 insertions(+), 1 deletion(-) create mode 100644 git-config/main.test.ts diff --git a/git-config/main.test.ts b/git-config/main.test.ts new file mode 100644 index 0000000..1241956 --- /dev/null +++ b/git-config/main.test.ts @@ -0,0 +1,69 @@ +import { describe, expect, it } from "bun:test"; +import { + runTerraformApply, + runTerraformInit, + testRequiredVariables, +} from "../test"; + +describe("git-config", async () => { + await runTerraformInit(import.meta.dir); + + testRequiredVariables(import.meta.dir, { + agent_id: "foo", + }); + + it("can run apply allow_username_change and allow_email_change disabled", async () => { + const state = await runTerraformApply(import.meta.dir, { + agent_id: "foo", + allow_username_change: "false", + allow_email_change: "false", + }); + + const resources = state.resources; + expect(resources).toHaveLength(3); + expect(resources).toMatchObject([ + { type: "coder_workspace", name: "me" }, + { type: "coder_env", name: "git_author_name" }, + { type: "coder_env", name: "git_commmiter_name" }, + ]); + }); + + it("can run apply allow_email_change enabled", async () => { + const state = await runTerraformApply(import.meta.dir, { + agent_id: "foo", + allow_email_change: "true", + }); + + const resources = state.resources; + expect(resources).toHaveLength(5); + expect(resources).toMatchObject([ + { type: "coder_parameter", name: "user_email" }, + { type: "coder_parameter", name: "username" }, + { type: "coder_workspace", name: "me" }, + { type: "coder_env", name: "git_author_name" }, + { type: "coder_env", name: "git_commmiter_name" }, + ]); + }); + + it("can run apply allow_email_change enabled", async () => { + const state = await runTerraformApply( + import.meta.dir, + { + agent_id: "foo", + allow_username_change: "false", + allow_email_change: "false", + }, + { CODER_WORKSPACE_OWNER_EMAIL: "foo@emai.com" }, + ); + + const resources = state.resources; + expect(resources).toHaveLength(5); + expect(resources).toMatchObject([ + { type: "coder_workspace", name: "me" }, + { type: "coder_env", name: "git_author_email" }, + { type: "coder_env", name: "git_author_name" }, + { type: "coder_env", name: "git_commmiter_email" }, + { type: "coder_env", name: "git_commmiter_name" }, + ]); + }); +}); diff --git a/git-config/main.tf b/git-config/main.tf index d92a0b7..a0e96ad 100644 --- a/git-config/main.tf +++ b/git-config/main.tf @@ -65,10 +65,12 @@ resource "coder_env" "git_author_email" { agent_id = var.agent_id name = "GIT_AUTHOR_EMAIL" value = coalesce(try(data.coder_parameter.user_email[0].value, ""), data.coder_workspace.me.owner_email) + count = data.coder_workspace.me.owner_email != "" ? 1 : 0 } resource "coder_env" "git_commmiter_email" { agent_id = var.agent_id name = "GIT_COMMITTER_EMAIL" value = coalesce(try(data.coder_parameter.user_email[0].value, ""), data.coder_workspace.me.owner_email) + count = data.coder_workspace.me.owner_email != "" ? 1 : 0 } diff --git a/test.ts b/test.ts index 37e0805..97416cf 100644 --- a/test.ts +++ b/test.ts @@ -171,9 +171,9 @@ export const testRequiredVariables = ( export const runTerraformApply = async ( dir: string, vars: Record, + env: Record = {}, ): Promise => { const stateFile = `${dir}/${crypto.randomUUID()}.tfstate`; - const env = {}; Object.keys(vars).forEach((key) => (env[`TF_VAR_${key}`] = vars[key])); const proc = spawn( [ From c4df384f4b366f947ab0460118255d7096965158 Mon Sep 17 00:00:00 2001 From: Michael Brewer Date: Sun, 14 Apr 2024 07:14:47 -0700 Subject: [PATCH 05/56] feat(code-server): add extension_dir variable (#205) --- code-server/main.tf | 7 +++++++ code-server/run.sh | 10 ++++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/code-server/main.tf b/code-server/main.tf index 30b92bc..8c0f1e0 100644 --- a/code-server/main.tf +++ b/code-server/main.tf @@ -95,6 +95,12 @@ variable "use_cached" { default = false } +variable "extensions_dir" { + type = string + description = "Override the directory to store extensions in." + default = "" +} + resource "coder_script" "code-server" { agent_id = var.agent_id display_name = "code-server" @@ -110,6 +116,7 @@ resource "coder_script" "code-server" { SETTINGS : replace(jsonencode(var.settings), "\"", "\\\""), OFFLINE : var.offline, USE_CACHED : var.use_cached, + EXTENSIONS_DIR : var.extensions_dir, }) run_on_start = true diff --git a/code-server/run.sh b/code-server/run.sh index 2444324..b04e131 100755 --- a/code-server/run.sh +++ b/code-server/run.sh @@ -6,10 +6,16 @@ CODE='\033[36;40;1m' RESET='\033[0m' CODE_SERVER="${INSTALL_PREFIX}/bin/code-server" +# Set extension directory +EXTENSION_ARG="" +if [ -n "${EXTENSIONS_DIR}" ]; then + EXTENSION_ARG="--extensions-dir=${EXTENSIONS_DIR}" +fi + function run_code_server() { echo "👷 Running code-server in the background..." echo "Check logs at ${LOG_PATH}!" - $CODE_SERVER --auth none --port "${PORT}" --app-name "${APP_NAME}" > "${LOG_PATH}" 2>&1 & + $CODE_SERVER "$EXTENSION_ARG" --auth none --port "${PORT}" --app-name "${APP_NAME}" > "${LOG_PATH}" 2>&1 & } # Check if the settings file exists... @@ -57,7 +63,7 @@ for extension in "$${EXTENSIONLIST[@]}"; do continue fi printf "🧩 Installing extension $${CODE}$extension$${RESET}...\n" - output=$($CODE_SERVER --install-extension "$extension") + output=$($CODE_SERVER "$EXTENSION_ARG" --install-extension "$extension") if [ $? -ne 0 ]; then echo "Failed to install extension: $extension: $output" exit 1 From a8c659ad6f7474e1f056f49c3d3599c260b38d37 Mon Sep 17 00:00:00 2001 From: Michael Brewer Date: Mon, 15 Apr 2024 10:31:21 -0700 Subject: [PATCH 06/56] feat: add coder_parameter_order to all data.coder_parameter fields (#223) --- aws-region/main.test.ts | 9 +++++++++ aws-region/main.tf | 7 +++++++ azure-region/main.test.ts | 9 +++++++++ azure-region/main.tf | 7 +++++++ dotfiles/main.test.ts | 10 ++++++++++ dotfiles/main.tf | 7 +++++++ exoscale-instance-type/main.test.ts | 9 +++++++++ exoscale-instance-type/main.tf | 7 +++++++ exoscale-zone/main.test.ts | 9 +++++++++ exoscale-zone/main.tf | 6 ++++++ gcp-region/main.test.ts | 9 +++++++++ gcp-region/main.tf | 7 +++++++ git-config/main.test.ts | 30 +++++++++++++++++++++++++++++ git-config/main.tf | 7 +++++++ 14 files changed, 133 insertions(+) diff --git a/aws-region/main.test.ts b/aws-region/main.test.ts index 42433df..0693e65 100644 --- a/aws-region/main.test.ts +++ b/aws-region/main.test.ts @@ -22,4 +22,13 @@ describe("aws-region", async () => { }); expect(state.outputs.value.value).toBe("us-west-2"); }); + + it("set custom order for coder_parameter", async () => { + const order = 99; + const state = await runTerraformApply(import.meta.dir, { + coder_parameter_order: order.toString(), + }); + expect(state.resources).toHaveLength(1); + expect(state.resources[0].instances[0].attributes.order).toBe(order); + }); }); diff --git a/aws-region/main.tf b/aws-region/main.tf index 7594320..12a01fe 100644 --- a/aws-region/main.tf +++ b/aws-region/main.tf @@ -51,6 +51,12 @@ variable "exclude" { type = list(string) } +variable "coder_parameter_order" { + type = number + description = "The order determines the position of a template parameter in the UI/CLI presentation. The lowest order is shown first and parameters with equal order are sorted by name (ascending order)." + default = null +} + locals { # This is a static list because the regions don't change _that_ # frequently and including the `aws_regions` data source requires @@ -176,6 +182,7 @@ data "coder_parameter" "region" { display_name = var.display_name description = var.description default = var.default == "" ? null : var.default + order = var.coder_parameter_order mutable = var.mutable dynamic "option" { for_each = { for k, v in local.regions : k => v if !(contains(var.exclude, k)) } diff --git a/azure-region/main.test.ts b/azure-region/main.test.ts index 0e41e29..bebc0c9 100644 --- a/azure-region/main.test.ts +++ b/azure-region/main.test.ts @@ -22,4 +22,13 @@ describe("azure-region", async () => { }); expect(state.outputs.value.value).toBe("westus"); }); + + it("set custom order for coder_parameter", async () => { + const order = 99; + const state = await runTerraformApply(import.meta.dir, { + coder_parameter_order: order.toString(), + }); + expect(state.resources).toHaveLength(1); + expect(state.resources[0].instances[0].attributes.order).toBe(order); + }); }); diff --git a/azure-region/main.tf b/azure-region/main.tf index 307d61d..3d1c2f1 100644 --- a/azure-region/main.tf +++ b/azure-region/main.tf @@ -50,6 +50,12 @@ variable "exclude" { type = list(string) } +variable "coder_parameter_order" { + type = number + description = "The order determines the position of a template parameter in the UI/CLI presentation. The lowest order is shown first and parameters with equal order are sorted by name (ascending order)." + default = null +} + locals { # Note: Options are limited to 64 regions, some redundant regions have been removed. all_regions = { @@ -309,6 +315,7 @@ data "coder_parameter" "region" { display_name = var.display_name description = var.description default = var.default == "" ? null : var.default + order = var.coder_parameter_order mutable = var.mutable icon = "/icon/azure.png" dynamic "option" { diff --git a/dotfiles/main.test.ts b/dotfiles/main.test.ts index 175690f..6026719 100644 --- a/dotfiles/main.test.ts +++ b/dotfiles/main.test.ts @@ -27,4 +27,14 @@ describe("dotfiles", async () => { }); expect(state.outputs.dotfiles_uri.value).toBe(default_dotfiles_uri); }); + + it("set custom order for coder_parameter", async () => { + const order = 99; + const state = await runTerraformApply(import.meta.dir, { + agent_id: "foo", + coder_parameter_order: order.toString(), + }); + expect(state.resources).toHaveLength(2); + expect(state.resources[0].instances[0].attributes.order).toBe(order); + }); }); diff --git a/dotfiles/main.tf b/dotfiles/main.tf index 12ca826..cf21864 100644 --- a/dotfiles/main.tf +++ b/dotfiles/main.tf @@ -20,10 +20,17 @@ variable "default_dotfiles_uri" { default = "" } +variable "coder_parameter_order" { + type = number + description = "The order determines the position of a template parameter in the UI/CLI presentation. The lowest order is shown first and parameters with equal order are sorted by name (ascending order)." + default = null +} + data "coder_parameter" "dotfiles_uri" { type = "string" name = "dotfiles_uri" display_name = "Dotfiles URL (optional)" + order = var.coder_parameter_order default = var.default_dotfiles_uri description = "Enter a URL for a [dotfiles repository](https://dotfiles.github.io) to personalize your workspace" mutable = true diff --git a/exoscale-instance-type/main.test.ts b/exoscale-instance-type/main.test.ts index eeb6745..e4b998b 100644 --- a/exoscale-instance-type/main.test.ts +++ b/exoscale-instance-type/main.test.ts @@ -31,4 +31,13 @@ describe("exoscale-instance-type", async () => { }); }).toThrow('default value "gpu3.huge" must be defined as one of options'); }); + + it("set custom order for coder_parameter", async () => { + const order = 99; + const state = await runTerraformApply(import.meta.dir, { + coder_parameter_order: order.toString(), + }); + expect(state.resources).toHaveLength(1); + expect(state.resources[0].instances[0].attributes.order).toBe(order); + }); }); diff --git a/exoscale-instance-type/main.tf b/exoscale-instance-type/main.tf index f7c8998..65d3729 100644 --- a/exoscale-instance-type/main.tf +++ b/exoscale-instance-type/main.tf @@ -56,6 +56,12 @@ variable "exclude" { type = list(string) } +variable "coder_parameter_order" { + type = number + description = "The order determines the position of a template parameter in the UI/CLI presentation. The lowest order is shown first and parameters with equal order are sorted by name (ascending order)." + default = null +} + locals { # https://www.exoscale.com/pricing/ @@ -257,6 +263,7 @@ data "coder_parameter" "instance_type" { display_name = var.display_name description = var.description default = var.default == "" ? null : var.default + order = var.coder_parameter_order mutable = var.mutable dynamic "option" { for_each = [for k, v in concat( diff --git a/exoscale-zone/main.test.ts b/exoscale-zone/main.test.ts index 7c423e7..ca8eeb7 100644 --- a/exoscale-zone/main.test.ts +++ b/exoscale-zone/main.test.ts @@ -22,4 +22,13 @@ describe("exoscale-zone", async () => { }); expect(state.outputs.value.value).toBe("at-vie-1"); }); + + it("set custom order for coder_parameter", async () => { + const order = 99; + const state = await runTerraformApply(import.meta.dir, { + coder_parameter_order: order.toString(), + }); + expect(state.resources).toHaveLength(1); + expect(state.resources[0].instances[0].attributes.order).toBe(order); + }); }); diff --git a/exoscale-zone/main.tf b/exoscale-zone/main.tf index 01f1467..090acb4 100644 --- a/exoscale-zone/main.tf +++ b/exoscale-zone/main.tf @@ -51,6 +51,11 @@ variable "exclude" { type = list(string) } +variable "coder_parameter_order" { + type = number + description = "The order determines the position of a template parameter in the UI/CLI presentation. The lowest order is shown first and parameters with equal order are sorted by name (ascending order)." + default = null +} locals { # This is a static list because the zones don't change _that_ @@ -94,6 +99,7 @@ data "coder_parameter" "zone" { display_name = var.display_name description = var.description default = var.default == "" ? null : var.default + order = var.coder_parameter_order mutable = var.mutable dynamic "option" { for_each = { for k, v in local.zones : k => v if !(contains(var.exclude, k)) } diff --git a/gcp-region/main.test.ts b/gcp-region/main.test.ts index 2ec623b..bf01c2b 100644 --- a/gcp-region/main.test.ts +++ b/gcp-region/main.test.ts @@ -40,4 +40,13 @@ describe("gcp-region", async () => { }); expect(state.outputs.value.value).toBe("us-west2-b"); }); + + it("set custom order for coder_parameter", async () => { + const order = 99; + const state = await runTerraformApply(import.meta.dir, { + coder_parameter_order: order.toString(), + }); + expect(state.resources).toHaveLength(1); + expect(state.resources[0].instances[0].attributes.order).toBe(order); + }); }); diff --git a/gcp-region/main.tf b/gcp-region/main.tf index e9f549d..0a75924 100644 --- a/gcp-region/main.tf +++ b/gcp-region/main.tf @@ -63,6 +63,12 @@ variable "single_zone_per_region" { type = bool } +variable "coder_parameter_order" { + type = number + description = "The order determines the position of a template parameter in the UI/CLI presentation. The lowest order is shown first and parameters with equal order are sorted by name (ascending order)." + default = null +} + locals { zones = { # US Central @@ -715,6 +721,7 @@ data "coder_parameter" "region" { icon = "/icon/gcp.png" mutable = var.mutable default = var.default != null && var.default != "" && (!var.gpu_only || try(local.zones[var.default].gpu, false)) ? var.default : null + order = var.coder_parameter_order dynamic "option" { for_each = { for k, v in local.zones : k => v diff --git a/git-config/main.test.ts b/git-config/main.test.ts index 1241956..fe410aa 100644 --- a/git-config/main.test.ts +++ b/git-config/main.test.ts @@ -66,4 +66,34 @@ describe("git-config", async () => { { type: "coder_env", name: "git_commmiter_name" }, ]); }); + + it("set custom order for coder_parameter for both fields", async () => { + const order = 20; + const state = await runTerraformApply(import.meta.dir, { + agent_id: "foo", + allow_username_change: "true", + allow_email_change: "true", + coder_parameter_order: order.toString(), + }); + expect(state.resources).toHaveLength(5); + // user_email order is the same as the order + expect(state.resources[0].instances[0].attributes.order).toBe(order); + // username order is incremented by 1 + // @ts-ignore: Object is possibly 'null'. + expect(state.resources[1].instances[0]?.attributes.order).toBe(order + 1); + }); + + it("set custom order for coder_parameter for just username", async () => { + const order = 30; + const state = await runTerraformApply(import.meta.dir, { + agent_id: "foo", + allow_email_change: "false", + allow_username_change: "true", + coder_parameter_order: order.toString(), + }); + expect(state.resources).toHaveLength(4); + // user_email was not created + // username order is incremented by 1 + expect(state.resources[0].instances[0].attributes.order).toBe(order + 1); + }); }); diff --git a/git-config/main.tf b/git-config/main.tf index a0e96ad..fe19288 100644 --- a/git-config/main.tf +++ b/git-config/main.tf @@ -26,6 +26,11 @@ variable "allow_email_change" { default = false } +variable "coder_parameter_order" { + type = number + description = "The order determines the position of a template parameter in the UI/CLI presentation. The lowest order is shown first and parameters with equal order are sorted by name (ascending order)." + default = null +} data "coder_workspace" "me" {} @@ -34,6 +39,7 @@ data "coder_parameter" "user_email" { name = "user_email" type = "string" default = "" + order = var.coder_parameter_order != null ? var.coder_parameter_order + 0 : null description = "Git user.email to be used for commits. Leave empty to default to Coder user's email." display_name = "Git config user.email" mutable = true @@ -44,6 +50,7 @@ data "coder_parameter" "username" { name = "username" type = "string" default = "" + order = var.coder_parameter_order != null ? var.coder_parameter_order + 1 : null description = "Git user.name to be used for commits. Leave empty to default to Coder user's Full Name." display_name = "Full Name for Git config" mutable = true From ed16ba59a95f1d015337cd576edb3961fde691db Mon Sep 17 00:00:00 2001 From: Muhammad Atif Ali Date: Mon, 15 Apr 2024 20:31:32 +0300 Subject: [PATCH 07/56] fix(dotfiles): fix typo and remove a less useful output (#225) --- dotfiles/README.md | 10 +++++----- dotfiles/main.tf | 5 ----- 2 files changed, 5 insertions(+), 10 deletions(-) diff --git a/dotfiles/README.md b/dotfiles/README.md index 2939025..9f8a0fe 100644 --- a/dotfiles/README.md +++ b/dotfiles/README.md @@ -21,13 +21,13 @@ module "dotfiles" { ## Setting a default dotfiles repository -You can set a default dotfiles repository for all users by setting the `default_dotfiles_repo` variable: +You can set a default dotfiles repository for all users by setting the `default_dotfiles_uri` variable: ```tf module "dotfiles" { - source = "registry.coder.com/modules/dotfiles/coder" - version = "1.0.12" - agent_id = coder_agent.example.id - default_dotfiles_repo = "https://github.com/coder/dotfiles" + source = "registry.coder.com/modules/dotfiles/coder" + version = "1.0.12" + agent_id = coder_agent.example.id + default_dotfiles_uri = "https://github.com/coder/dotfiles" } ``` diff --git a/dotfiles/main.tf b/dotfiles/main.tf index cf21864..ac7f7e6 100644 --- a/dotfiles/main.tf +++ b/dotfiles/main.tf @@ -54,8 +54,3 @@ output "dotfiles_uri" { description = "Dotfiles URI" value = data.coder_parameter.dotfiles_uri.value } - -output "dotfiles_default_uri" { - description = "Dotfiles Default URI" - value = var.default_dotfiles_uri -} \ No newline at end of file From d8102e62ecaa5a0b85444af91b1f7beecbb8b51a Mon Sep 17 00:00:00 2001 From: nataindata Date: Tue, 16 Apr 2024 17:05:44 +0000 Subject: [PATCH 08/56] Apache Airflow module --- .icons/airflow.svg | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 .icons/airflow.svg diff --git a/.icons/airflow.svg b/.icons/airflow.svg new file mode 100644 index 0000000..46300fe --- /dev/null +++ b/.icons/airflow.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + From d8f71e4571fd562a7a9ec9c62c9d1338562032d4 Mon Sep 17 00:00:00 2001 From: Muhammad Atif Ali Date: Wed, 17 Apr 2024 11:05:04 +0300 Subject: [PATCH 09/56] feat(jetbrains-gateway): Allow fetching latest version dynamically (#226) --- jetbrains-gateway/main.tf | 72 +++++++++++++++++++++++++++++++-------- 1 file changed, 57 insertions(+), 15 deletions(-) diff --git a/jetbrains-gateway/main.tf b/jetbrains-gateway/main.tf index 7c57bee..4c174a2 100644 --- a/jetbrains-gateway/main.tf +++ b/jetbrains-gateway/main.tf @@ -6,6 +6,10 @@ terraform { source = "coder/coder" version = ">= 0.17" } + http = { + source = "hashicorp/http" + version = ">= 3.0" + } } } @@ -46,6 +50,22 @@ variable "coder_parameter_order" { default = null } +variable "latest" { + type = bool + description = "Whether to fetch the latest version of the IDE." + default = false +} + +variable "channel" { + type = string + description = "JetBrains IDE release channel. Valid values are release and eap." + default = "release" + validation { + condition = can(regex("^(release|eap)$", var.channel)) + error_message = "The channel must be either release or eap." + } +} + variable "jetbrains_ide_versions" { type = map(object({ build_number = string @@ -120,6 +140,11 @@ variable "jetbrains_ides" { } } +data "http" "jetbrains_ide_versions" { + for_each = var.latest ? toset(var.jetbrains_ides) : toset([]) + url = "https://data.services.jetbrains.com/products/releases?code=${each.key}&latest=true&type=${var.channel}" +} + locals { jetbrains_ides = { "GO" = { @@ -128,6 +153,7 @@ locals { identifier = "GO", build_number = var.jetbrains_ide_versions["GO"].build_number, download_link = "https://download.jetbrains.com/go/goland-${var.jetbrains_ide_versions["GO"].version}.tar.gz" + version = var.jetbrains_ide_versions["GO"].version }, "WS" = { icon = "/icon/webstorm.svg", @@ -135,6 +161,7 @@ locals { identifier = "WS", build_number = var.jetbrains_ide_versions["WS"].build_number, download_link = "https://download.jetbrains.com/webstorm/WebStorm-${var.jetbrains_ide_versions["WS"].version}.tar.gz" + version = var.jetbrains_ide_versions["WS"].version }, "IU" = { icon = "/icon/intellij.svg", @@ -142,6 +169,7 @@ locals { identifier = "IU", build_number = var.jetbrains_ide_versions["IU"].build_number, download_link = "https://download.jetbrains.com/idea/ideaIU-${var.jetbrains_ide_versions["IU"].version}.tar.gz" + version = var.jetbrains_ide_versions["IU"].version }, "PY" = { icon = "/icon/pycharm.svg", @@ -149,6 +177,7 @@ locals { identifier = "PY", build_number = var.jetbrains_ide_versions["PY"].build_number, download_link = "https://download.jetbrains.com/python/pycharm-professional-${var.jetbrains_ide_versions["PY"].version}.tar.gz" + version = var.jetbrains_ide_versions["PY"].version }, "CL" = { icon = "/icon/clion.svg", @@ -156,6 +185,7 @@ locals { identifier = "CL", build_number = var.jetbrains_ide_versions["CL"].build_number, download_link = "https://download.jetbrains.com/cpp/CLion-${var.jetbrains_ide_versions["CL"].version}.tar.gz" + version = var.jetbrains_ide_versions["CL"].version }, "PS" = { icon = "/icon/phpstorm.svg", @@ -163,6 +193,7 @@ locals { identifier = "PS", build_number = var.jetbrains_ide_versions["PS"].build_number, download_link = "https://download.jetbrains.com/webide/PhpStorm-${var.jetbrains_ide_versions["PS"].version}.tar.gz" + version = var.jetbrains_ide_versions["PS"].version }, "RM" = { icon = "/icon/rubymine.svg", @@ -170,6 +201,7 @@ locals { identifier = "RM", build_number = var.jetbrains_ide_versions["RM"].build_number, download_link = "https://download.jetbrains.com/ruby/RubyMine-${var.jetbrains_ide_versions["RM"].version}.tar.gz" + version = var.jetbrains_ide_versions["RM"].version } "RD" = { icon = "/icon/rider.svg", @@ -177,8 +209,18 @@ locals { identifier = "RD", build_number = var.jetbrains_ide_versions["RD"].build_number, download_link = "https://download.jetbrains.com/rider/JetBrains.Rider-${var.jetbrains_ide_versions["RD"].version}.tar.gz" + version = var.jetbrains_ide_versions["RD"].version } } + + icon = try(lookup(local.jetbrains_ides, data.coder_parameter.jetbrains_ide.value).icon, "/icon/gateway.svg") + json_data = var.latest ? jsondecode(data.http.jetbrains_ide_versions[data.coder_parameter.jetbrains_ide.value].response_body) : {} + key = var.latest ? keys(local.json_data)[0] : "" + display_name = local.jetbrains_ides[data.coder_parameter.jetbrains_ide.value].name + identifier = data.coder_parameter.jetbrains_ide.value + download_link = var.latest ? local.json_data[local.key][0].downloads.linux.link : local.jetbrains_ides[data.coder_parameter.jetbrains_ide.value].download_link + build_number = var.latest ? local.json_data[local.key][0].build : local.jetbrains_ides[data.coder_parameter.jetbrains_ide.value].build_number + version = var.latest ? local.json_data[local.key][0].version : var.jetbrains_ide_versions[data.coder_parameter.jetbrains_ide.value].version } data "coder_parameter" "jetbrains_ide" { @@ -193,9 +235,9 @@ data "coder_parameter" "jetbrains_ide" { dynamic "option" { for_each = var.jetbrains_ides content { - icon = lookup(local.jetbrains_ides, option.value).icon - name = lookup(local.jetbrains_ides, option.value).name - value = lookup(local.jetbrains_ides, option.value).identifier + icon = local.jetbrains_ides[option.value].icon + name = local.jetbrains_ides[option.value].name + value = option.value } } } @@ -205,8 +247,8 @@ data "coder_workspace" "me" {} resource "coder_app" "gateway" { agent_id = var.agent_id slug = "gateway" - display_name = try(lookup(local.jetbrains_ides, data.coder_parameter.jetbrains_ide.value).name, "JetBrains IDE") - icon = try(lookup(local.jetbrains_ides, data.coder_parameter.jetbrains_ide.value).icon, "/icon/gateway.svg") + display_name = try(lookup(data.coder_parameter.jetbrains_ide.option, data.coder_parameter.jetbrains_ide.value).name, "JetBrains IDE") + icon = try(lookup(data.coder_parameter.jetbrains_ide.option, data.coder_parameter.jetbrains_ide.value).icon, "/icon/gateway.svg") external = true order = var.order url = join("", [ @@ -221,36 +263,36 @@ resource "coder_app" "gateway" { "&token=", "$SESSION_TOKEN", "&ide_product_code=", - local.jetbrains_ides[data.coder_parameter.jetbrains_ide.value].identifier, + data.coder_parameter.jetbrains_ide.value, "&ide_build_number=", - local.jetbrains_ides[data.coder_parameter.jetbrains_ide.value].build_number, + local.build_number, "&ide_download_link=", - local.jetbrains_ides[data.coder_parameter.jetbrains_ide.value].download_link + local.download_link, ]) } output "identifier" { - value = data.coder_parameter.jetbrains_ide.value + value = local.identifier } -output "name" { - value = coder_app.gateway.display_name +output "display_name" { + value = local.display_name } output "icon" { - value = coder_app.gateway.icon + value = local.icon } output "download_link" { - value = lookup(local.jetbrains_ides, data.coder_parameter.jetbrains_ide.value).download_link + value = local.download_link } output "build_number" { - value = lookup(local.jetbrains_ides, data.coder_parameter.jetbrains_ide.value).build_number + value = local.build_number } output "version" { - value = var.jetbrains_ide_versions[data.coder_parameter.jetbrains_ide.value].version + value = local.version } output "url" { From 43304e5d4eff25088e27e01b1576f7863a778b74 Mon Sep 17 00:00:00 2001 From: Muhammad Atif Ali Date: Wed, 17 Apr 2024 11:27:49 +0300 Subject: [PATCH 10/56] docs(jetbrains-gateway): add examples on how to use the latest version (#228) --- jetbrains-gateway/README.md | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/jetbrains-gateway/README.md b/jetbrains-gateway/README.md index 629afb2..cf51216 100644 --- a/jetbrains-gateway/README.md +++ b/jetbrains-gateway/README.md @@ -27,7 +27,7 @@ module "jetbrains_gateway" { ## Examples -### Add GoLand and WebStorm with the default set to GoLand +### Add GoLand and WebStorm as options with the default set to GoLand ```tf module "jetbrains_gateway" { @@ -41,6 +41,37 @@ module "jetbrains_gateway" { } ``` +### Use the latest release version + +```tf +module "jetbrains_gateway" { + source = "registry.coder.com/modules/jetbrains-gateway/coder" + version = "1.0.11" + agent_id = coder_agent.example.id + agent_name = "example" + folder = "/home/coder/example" + jetbrains_ides = ["GO", "WS"] + default = "GO" + latest = true +} +``` + +### Use the latest EAP version + +```tf +module "jetbrains_gateway" { + source = "registry.coder.com/modules/jetbrains-gateway/coder" + version = "1.0.11" + agent_id = coder_agent.example.id + agent_name = "example" + folder = "/home/coder/example" + jetbrains_ides = ["GO", "WS"] + default = "GO" + latest = true + channel = "eap" +} +``` + ## Supported IDEs This module and JetBrains Gateway support the following JetBrains IDEs: From 8766c670e60a1f58b0f80177c017a2d11b54e605 Mon Sep 17 00:00:00 2001 From: Michael Brewer Date: Wed, 17 Apr 2024 12:40:47 -0700 Subject: [PATCH 11/56] feat(git-clone): add support for tree github or gitlab clone url (#210) --- git-clone/README.md | 103 ++++++++++++++++++++++ git-clone/main.test.ts | 192 +++++++++++++++++++++++++++++++++++++++++ git-clone/main.tf | 74 +++++++++++++++- git-clone/run.sh | 10 ++- 4 files changed, 374 insertions(+), 5 deletions(-) diff --git a/git-clone/README.md b/git-clone/README.md index 054e30c..a8dd312 100644 --- a/git-clone/README.md +++ b/git-clone/README.md @@ -50,3 +50,106 @@ data "coder_git_auth" "github" { id = "github" } ``` + +## GitHub clone with branch name + +To GitHub clone with a specific branch like `feat/example` + +```tf +# Prompt the user for the git repo URL +data "coder_parameter" "git_repo" { + name = "git_repo" + display_name = "Git repository" + default = "https://github.com/coder/coder/tree/feat/example" +} + +# Clone the repository for branch `feat/example` +module "git_clone" { + source = "registry.coder.com/modules/git-clone/coder" + version = "1.0.11" + agent_id = coder_agent.example.id + url = data.coder_parameter.git_repo.value +} + +# Create a code-server instance for the cloned repository +module "code-server" { + source = "registry.coder.com/modules/code-server/coder" + version = "1.0.11" + agent_id = coder_agent.example.id + order = 1 + folder = "/home/${local.username}/${module.git_clone.folder_name}" +} + +# Create a Coder app for the website +resource "coder_app" "website" { + agent_id = coder_agent.example.id + order = 2 + slug = "website" + external = true + display_name = module.git_clone.folder_name + url = module.git_clone.web_url + icon = module.git_clone.git_provider != "" ? "/icon/${module.git_clone.git_provider}.svg" : "/icon/git.svg" + count = module.git_clone.web_url != "" ? 1 : 0 +} +``` + +Configuring `git-clone` for a self-hosted GitHub Enterprise Server running at `github.example.com` + +```tf +module "git-clone" { + source = "registry.coder.com/modules/git-clone/coder" + version = "1.0.11" + agent_id = coder_agent.example.id + url = "https://github.example.com/coder/coder/tree/feat/example" + git_providers = { + "https://github.example.com/" = { + provider = "github" + } + } +} +``` + +## GitLab clone with branch name + +To GitLab clone with a specific branch like `feat/example` + +```tf +module "git-clone" { + source = "registry.coder.com/modules/git-clone/coder" + version = "1.0.11" + agent_id = coder_agent.example.id + url = "https://gitlab.com/coder/coder/-/tree/feat/example" +} +``` + +Configuring `git-clone` for a self-hosted GitLab running at `gitlab.example.com` + +```tf +module "git-clone" { + source = "registry.coder.com/modules/git-clone/coder" + version = "1.0.11" + agent_id = coder_agent.example.id + url = "https://gitlab.example.com/coder/coder/-/tree/feat/example" + git_providers = { + "https://gitlab.example.com/" = { + provider = "gitlab" + } + } +} +``` + +## Git clone with branch_name set + +Alternatively, you can set the `branch_name` attribute to clone a specific branch. + +For example, to clone the `feat/example` branch: + +```tf +module "git-clone" { + source = "registry.coder.com/modules/git-clone/coder" + version = "1.0.11" + agent_id = coder_agent.example.id + url = "https://github.com/coder/coder" + branch_name = "feat/example" +} +``` diff --git a/git-clone/main.test.ts b/git-clone/main.test.ts index 0c3dd54..87b0e4a 100644 --- a/git-clone/main.test.ts +++ b/git-clone/main.test.ts @@ -36,4 +36,196 @@ describe("git-clone", async () => { "Cloning fake-url to ~/fake-url...", ]); }); + + it("repo_dir should match repo name for https", async () => { + const url = "https://github.com/coder/coder.git"; + const state = await runTerraformApply(import.meta.dir, { + agent_id: "foo", + base_dir: "/tmp", + url, + }); + expect(state.outputs.repo_dir.value).toEqual("/tmp/coder"); + expect(state.outputs.folder_name.value).toEqual("coder"); + expect(state.outputs.clone_url.value).toEqual(url); + expect(state.outputs.web_url.value).toEqual(url); + expect(state.outputs.branch_name.value).toEqual(""); + }); + + it("repo_dir should match repo name for https without .git", async () => { + const url = "https://github.com/coder/coder"; + const state = await runTerraformApply(import.meta.dir, { + agent_id: "foo", + base_dir: "/tmp", + url, + }); + expect(state.outputs.repo_dir.value).toEqual("/tmp/coder"); + expect(state.outputs.clone_url.value).toEqual(url); + expect(state.outputs.web_url.value).toEqual(url); + expect(state.outputs.branch_name.value).toEqual(""); + }); + + it("repo_dir should match repo name for ssh", async () => { + const url = "git@github.com:coder/coder.git"; + const state = await runTerraformApply(import.meta.dir, { + agent_id: "foo", + base_dir: "/tmp", + url, + }); + expect(state.outputs.repo_dir.value).toEqual("/tmp/coder"); + expect(state.outputs.git_provider.value).toEqual(""); + expect(state.outputs.clone_url.value).toEqual(url); + const https_url = "https://github.com/coder/coder.git"; + expect(state.outputs.web_url.value).toEqual(https_url); + expect(state.outputs.branch_name.value).toEqual(""); + }); + + it("branch_name should not include query string", async () => { + const state = await runTerraformApply(import.meta.dir, { + agent_id: "foo", + url: "https://gitlab.com/mike.brew/repo-tests.log/-/tree/feat/branch?ref_type=heads", + }); + expect(state.outputs.repo_dir.value).toEqual("~/repo-tests.log"); + expect(state.outputs.folder_name.value).toEqual("repo-tests.log"); + const https_url = "https://gitlab.com/mike.brew/repo-tests.log"; + expect(state.outputs.clone_url.value).toEqual(https_url); + expect(state.outputs.web_url.value).toEqual(https_url); + expect(state.outputs.branch_name.value).toEqual("feat/branch"); + }); + + it("branch_name should not include fragments", async () => { + const state = await runTerraformApply(import.meta.dir, { + agent_id: "foo", + base_dir: "/tmp", + url: "https://gitlab.com/mike.brew/repo-tests.log/-/tree/feat/branch#name", + }); + expect(state.outputs.repo_dir.value).toEqual("/tmp/repo-tests.log"); + const https_url = "https://gitlab.com/mike.brew/repo-tests.log"; + expect(state.outputs.clone_url.value).toEqual(https_url); + expect(state.outputs.web_url.value).toEqual(https_url); + expect(state.outputs.branch_name.value).toEqual("feat/branch"); + }); + + it("gitlab url with branch should match", async () => { + const state = await runTerraformApply(import.meta.dir, { + agent_id: "foo", + base_dir: "/tmp", + url: "https://gitlab.com/mike.brew/repo-tests.log/-/tree/feat/branch", + }); + expect(state.outputs.repo_dir.value).toEqual("/tmp/repo-tests.log"); + expect(state.outputs.git_provider.value).toEqual("gitlab"); + const https_url = "https://gitlab.com/mike.brew/repo-tests.log"; + expect(state.outputs.clone_url.value).toEqual(https_url); + expect(state.outputs.web_url.value).toEqual(https_url); + expect(state.outputs.branch_name.value).toEqual("feat/branch"); + }); + + it("github url with branch should match", async () => { + const state = await runTerraformApply(import.meta.dir, { + agent_id: "foo", + base_dir: "/tmp", + url: "https://github.com/michaelbrewer/repo-tests.log/tree/feat/branch", + }); + expect(state.outputs.repo_dir.value).toEqual("/tmp/repo-tests.log"); + expect(state.outputs.git_provider.value).toEqual("github"); + const https_url = "https://github.com/michaelbrewer/repo-tests.log"; + expect(state.outputs.clone_url.value).toEqual(https_url); + expect(state.outputs.web_url.value).toEqual(https_url); + expect(state.outputs.branch_name.value).toEqual("feat/branch"); + }); + + it("self-host git url with branch should match", async () => { + const state = await runTerraformApply(import.meta.dir, { + agent_id: "foo", + base_dir: "/tmp", + url: "https://git.example.com/example/project/-/tree/feat/example", + git_providers: ` + { + "https://git.example.com/" = { + provider = "gitlab" + } + }`, + }); + expect(state.outputs.repo_dir.value).toEqual("/tmp/project"); + expect(state.outputs.git_provider.value).toEqual("gitlab"); + const https_url = "https://git.example.com/example/project"; + expect(state.outputs.clone_url.value).toEqual(https_url); + expect(state.outputs.web_url.value).toEqual(https_url); + expect(state.outputs.branch_name.value).toEqual("feat/example"); + }); + + it("handle unsupported git provider configuration", async () => { + const t = async () => { + await runTerraformApply(import.meta.dir, { + agent_id: "foo", + url: "foo", + git_providers: ` + { + "https://git.example.com/" = { + provider = "bitbucket" + } + }`, + }); + }; + expect(t).toThrow('Allowed values for provider are "github" or "gitlab".'); + }); + + it("handle unknown git provider url", async () => { + const url = "https://git.unknown.com/coder/coder"; + const state = await runTerraformApply(import.meta.dir, { + agent_id: "foo", + base_dir: "/tmp", + url, + }); + expect(state.outputs.repo_dir.value).toEqual("/tmp/coder"); + expect(state.outputs.clone_url.value).toEqual(url); + expect(state.outputs.web_url.value).toEqual(url); + expect(state.outputs.branch_name.value).toEqual(""); + }); + + it("runs with github clone with switch to feat/branch", async () => { + const state = await runTerraformApply(import.meta.dir, { + agent_id: "foo", + url: "https://github.com/michaelbrewer/repo-tests.log/tree/feat/branch", + }); + const output = await executeScriptInContainer(state, "alpine/git"); + expect(output.exitCode).toBe(0); + expect(output.stdout).toEqual([ + "Creating directory ~/repo-tests.log...", + "Cloning https://github.com/michaelbrewer/repo-tests.log to ~/repo-tests.log on branch feat/branch...", + ]); + }); + + it("runs with gitlab clone with switch to feat/branch", async () => { + const state = await runTerraformApply(import.meta.dir, { + agent_id: "foo", + url: "https://gitlab.com/mike.brew/repo-tests.log/-/tree/feat/branch", + }); + const output = await executeScriptInContainer(state, "alpine/git"); + expect(output.exitCode).toBe(0); + expect(output.stdout).toEqual([ + "Creating directory ~/repo-tests.log...", + "Cloning https://gitlab.com/mike.brew/repo-tests.log to ~/repo-tests.log on branch feat/branch...", + ]); + }); + + it("runs with github clone with branch_name set to feat/branch", async () => { + const url = "https://github.com/michaelbrewer/repo-tests.log"; + const branch_name = "feat/branch"; + const state = await runTerraformApply(import.meta.dir, { + agent_id: "foo", + url, + branch_name, + }); + expect(state.outputs.repo_dir.value).toEqual("~/repo-tests.log"); + expect(state.outputs.clone_url.value).toEqual(url); + expect(state.outputs.web_url.value).toEqual(url); + expect(state.outputs.branch_name.value).toEqual(branch_name); + + const output = await executeScriptInContainer(state, "alpine/git"); + expect(output.exitCode).toBe(0); + expect(output.stdout).toEqual([ + "Creating directory ~/repo-tests.log...", + "Cloning https://github.com/michaelbrewer/repo-tests.log to ~/repo-tests.log on branch feat/branch...", + ]); + }); }); diff --git a/git-clone/main.tf b/git-clone/main.tf index c1e65cf..4af5000 100644 --- a/git-clone/main.tf +++ b/git-clone/main.tf @@ -25,8 +25,50 @@ variable "agent_id" { type = string } +variable "git_providers" { + type = map(object({ + provider = string + })) + description = "A mapping of URLs to their git provider." + default = { + "https://github.com/" = { + provider = "github" + }, + "https://gitlab.com/" = { + provider = "gitlab" + }, + } + validation { + error_message = "Allowed values for provider are \"github\" or \"gitlab\"." + condition = alltrue([for provider in var.git_providers : contains(["github", "gitlab"], provider.provider)]) + } +} + +variable "branch_name" { + description = "The branch name to clone. If not provided, the default branch will be cloned." + type = string + default = "" +} + locals { - clone_path = var.base_dir != "" ? join("/", [var.base_dir, replace(basename(var.url), ".git", "")]) : join("/", ["~", replace(basename(var.url), ".git", "")]) + # Remove query parameters and fragments from the URL + url = replace(replace(var.url, "/\\?.*/", ""), "/#.*/", "") + + # Find the git provider based on the URL and determine the tree path + provider_key = try(one([for key in keys(var.git_providers) : key if startswith(local.url, key)]), null) + provider = try(lookup(var.git_providers, local.provider_key).provider, "") + tree_path = local.provider == "gitlab" ? "/-/tree/" : local.provider == "github" ? "/tree/" : "" + + # Remove tree and branch name from the URL + clone_url = var.branch_name == "" && local.tree_path != "" ? replace(local.url, "/${local.tree_path}.*/", "") : local.url + # Extract the branch name from the URL + branch_name = var.branch_name == "" && local.tree_path != "" ? replace(replace(local.url, local.clone_url, ""), "/.*${local.tree_path}/", "") : var.branch_name + # Extract the folder name from the URL + folder_name = replace(basename(local.clone_url), ".git", "") + # Construct the path to clone the repository + clone_path = var.base_dir != "" ? join("/", [var.base_dir, local.folder_name]) : join("/", ["~", local.folder_name]) + # Construct the web URL + web_url = startswith(local.clone_url, "git@") ? replace(replace(local.clone_url, ":", "/"), "git@", "https://") : local.clone_url } output "repo_dir" { @@ -34,11 +76,37 @@ output "repo_dir" { description = "Full path of cloned repo directory" } +output "git_provider" { + value = local.provider + description = "The git provider of the repository" +} + +output "folder_name" { + value = local.folder_name + description = "The name of the folder that will be created" +} + +output "clone_url" { + value = local.clone_url + description = "The exact Git repository URL that will be cloned" +} + +output "web_url" { + value = local.web_url + description = "Git https repository URL (may be invalid for unsupported providers)" +} + +output "branch_name" { + value = local.branch_name + description = "Git branch name (may be empty)" +} + resource "coder_script" "git_clone" { agent_id = var.agent_id script = templatefile("${path.module}/run.sh", { - CLONE_PATH = local.clone_path - REPO_URL : var.url, + CLONE_PATH = local.clone_path, + REPO_URL : local.clone_url, + BRANCH_NAME : local.branch_name, }) display_name = "Git Clone" icon = "/icon/git.svg" diff --git a/git-clone/run.sh b/git-clone/run.sh index df647a1..bd80717 100755 --- a/git-clone/run.sh +++ b/git-clone/run.sh @@ -2,6 +2,7 @@ REPO_URL="${REPO_URL}" CLONE_PATH="${CLONE_PATH}" +BRANCH_NAME="${BRANCH_NAME}" # Expand home if it's specified! CLONE_PATH="$${CLONE_PATH/#\~/$${HOME}}" @@ -33,8 +34,13 @@ fi # Check if the directory is empty # and if it is, clone the repo, otherwise skip cloning if [ -z "$(ls -A "$CLONE_PATH")" ]; then - echo "Cloning $REPO_URL to $CLONE_PATH..." - git clone "$REPO_URL" "$CLONE_PATH" + if [ -z "$BRANCH_NAME" ]; then + echo "Cloning $REPO_URL to $CLONE_PATH..." + git clone "$REPO_URL" "$CLONE_PATH" + else + echo "Cloning $REPO_URL to $CLONE_PATH on branch $BRANCH_NAME..." + git clone "$REPO_URL" -b "$BRANCH_NAME" "$CLONE_PATH" + fi else echo "$CLONE_PATH already exists and isn't empty, skipping clone!" exit 0 From 49df203bd6a5cf03e7538a3c428a981729454d9a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 18 Apr 2024 18:13:02 +0300 Subject: [PATCH 12/56] chore: bump version to 1.0.12 in README.md files (#230) Co-authored-by: matifali --- aws-region/README.md | 6 +++--- azure-region/README.md | 6 +++--- code-server/README.md | 14 +++++++------- dotfiles/README.md | 2 +- exoscale-instance-type/README.md | 6 +++--- exoscale-zone/README.md | 6 +++--- gcp-region/README.md | 8 ++++---- git-clone/README.md | 18 +++++++++--------- git-config/README.md | 6 +++--- jetbrains-gateway/README.md | 8 ++++---- 10 files changed, 40 insertions(+), 40 deletions(-) diff --git a/aws-region/README.md b/aws-region/README.md index 934714b..4d363c3 100644 --- a/aws-region/README.md +++ b/aws-region/README.md @@ -17,7 +17,7 @@ Customize the preselected parameter value: ```tf module "aws-region" { source = "registry.coder.com/modules/aws-region/coder" - version = "1.0.10" + version = "1.0.12" default = "us-east-1" } @@ -37,7 +37,7 @@ Change the display name and icon for a region using the corresponding maps: ```tf module "aws-region" { source = "registry.coder.com/modules/aws-region/coder" - version = "1.0.10" + version = "1.0.12" default = "ap-south-1" custom_names = { @@ -63,7 +63,7 @@ Hide the Asia Pacific regions Seoul and Osaka: ```tf module "aws-region" { source = "registry.coder.com/modules/aws-region/coder" - version = "1.0.10" + version = "1.0.12" exclude = ["ap-northeast-2", "ap-northeast-3"] } diff --git a/azure-region/README.md b/azure-region/README.md index d88a2e9..cd0efd3 100644 --- a/azure-region/README.md +++ b/azure-region/README.md @@ -14,7 +14,7 @@ This module adds a parameter with all Azure regions, allowing developers to sele ```tf module "azure_region" { source = "registry.coder.com/modules/azure-region/coder" - version = "1.0.2" + version = "1.0.12" default = "eastus" } @@ -34,7 +34,7 @@ Change the display name and icon for a region using the corresponding maps: ```tf module "azure-region" { source = "registry.coder.com/modules/azure-region/coder" - version = "1.0.2" + version = "1.0.12" custom_names = { "australia" : "Go Australia!" } @@ -57,7 +57,7 @@ Hide all regions in Australia except australiacentral: ```tf module "azure-region" { source = "registry.coder.com/modules/azure-region/coder" - version = "1.0.2" + version = "1.0.12" exclude = [ "australia", "australiacentral2", diff --git a/code-server/README.md b/code-server/README.md index 993b9ba..909c985 100644 --- a/code-server/README.md +++ b/code-server/README.md @@ -14,7 +14,7 @@ Automatically install [code-server](https://github.com/coder/code-server) in a w ```tf module "code-server" { source = "registry.coder.com/modules/code-server/coder" - version = "1.0.10" + version = "1.0.12" agent_id = coder_agent.example.id } ``` @@ -28,7 +28,7 @@ module "code-server" { ```tf module "code-server" { source = "registry.coder.com/modules/code-server/coder" - version = "1.0.10" + version = "1.0.12" agent_id = coder_agent.example.id install_version = "4.8.3" } @@ -41,7 +41,7 @@ Install the Dracula theme from [OpenVSX](https://open-vsx.org/): ```tf module "code-server" { source = "registry.coder.com/modules/code-server/coder" - version = "1.0.10" + version = "1.0.12" agent_id = coder_agent.example.id extensions = [ "dracula-theme.theme-dracula" @@ -58,7 +58,7 @@ Configure VS Code's [settings.json](https://code.visualstudio.com/docs/getstarte ```tf module "code-server" { source = "registry.coder.com/modules/code-server/coder" - version = "1.0.10" + version = "1.0.12" agent_id = coder_agent.example.id extensions = ["dracula-theme.theme-dracula"] settings = { @@ -74,7 +74,7 @@ Just run code-server in the background, don't fetch it from GitHub: ```tf module "code-server" { source = "registry.coder.com/modules/code-server/coder" - version = "1.0.10" + version = "1.0.12" agent_id = coder_agent.example.id extensions = ["dracula-theme.theme-dracula", "ms-azuretools.vscode-docker"] } @@ -89,7 +89,7 @@ Run an existing copy of code-server if found, otherwise download from GitHub: ```tf module "code-server" { source = "registry.coder.com/modules/code-server/coder" - version = "1.0.10" + version = "1.0.12" agent_id = coder_agent.example.id use_cached = true extensions = ["dracula-theme.theme-dracula", "ms-azuretools.vscode-docker"] @@ -101,7 +101,7 @@ Just run code-server in the background, don't fetch it from GitHub: ```tf module "code-server" { source = "registry.coder.com/modules/code-server/coder" - version = "1.0.10" + version = "1.0.12" agent_id = coder_agent.example.id offline = true } diff --git a/dotfiles/README.md b/dotfiles/README.md index 9f8a0fe..435d366 100644 --- a/dotfiles/README.md +++ b/dotfiles/README.md @@ -14,7 +14,7 @@ Allow developers to optionally bring their own [dotfiles repository](https://dot ```tf module "dotfiles" { source = "registry.coder.com/modules/dotfiles/coder" - version = "1.0.2" + version = "1.0.12" agent_id = coder_agent.example.id } ``` diff --git a/exoscale-instance-type/README.md b/exoscale-instance-type/README.md index 4b493f9..4296121 100644 --- a/exoscale-instance-type/README.md +++ b/exoscale-instance-type/README.md @@ -17,7 +17,7 @@ Customize the preselected parameter value: ```tf module "exoscale-instance-type" { source = "registry.coder.com/modules/exoscale-instance-type/coder" - version = "1.0.2" + version = "1.0.12" default = "standard.medium" } @@ -45,7 +45,7 @@ Change the display name a type using the corresponding maps: ```tf module "exoscale-instance-type" { source = "registry.coder.com/modules/exoscale-instance-type/coder" - version = "1.0.2" + version = "1.0.12" default = "standard.medium" custom_names = { @@ -79,7 +79,7 @@ Show only gpu1 types ```tf module "exoscale-instance-type" { source = "registry.coder.com/modules/exoscale-instance-type/coder" - version = "1.0.2" + version = "1.0.12" default = "gpu.large" type_category = ["gpu"] exclude = [ diff --git a/exoscale-zone/README.md b/exoscale-zone/README.md index 4297bed..0f4353e 100644 --- a/exoscale-zone/README.md +++ b/exoscale-zone/README.md @@ -17,7 +17,7 @@ Customize the preselected parameter value: ```tf module "exoscale-zone" { source = "registry.coder.com/modules/exoscale-zone/coder" - version = "1.0.2" + version = "1.0.12" default = "ch-dk-2" } @@ -44,7 +44,7 @@ Change the display name and icon for a zone using the corresponding maps: ```tf module "exoscale-zone" { source = "registry.coder.com/modules/exoscale-zone/coder" - version = "1.0.2" + version = "1.0.12" default = "at-vie-1" custom_names = { @@ -76,7 +76,7 @@ Hide the Switzerland zones Geneva and Zurich ```tf module "exoscale-zone" { source = "registry.coder.com/modules/exoscale-zone/coder" - version = "1.0.2" + version = "1.0.12" exclude = ["ch-gva-2", "ch-dk-2"] } diff --git a/gcp-region/README.md b/gcp-region/README.md index bb6063a..776d638 100644 --- a/gcp-region/README.md +++ b/gcp-region/README.md @@ -14,7 +14,7 @@ This module adds Google Cloud Platform regions to your Coder template. ```tf module "gcp_region" { source = "registry.coder.com/modules/gcp-region/coder" - version = "1.0.2" + version = "1.0.12" regions = ["us", "europe"] } @@ -34,7 +34,7 @@ Note: setting `gpu_only = true` and using a default region without GPU support, ```tf module "gcp_region" { source = "registry.coder.com/modules/gcp-region/coder" - version = "1.0.2" + version = "1.0.12" default = ["us-west1-a"] regions = ["us-west1"] gpu_only = false @@ -50,7 +50,7 @@ resource "google_compute_instance" "example" { ```tf module "gcp_region" { source = "registry.coder.com/modules/gcp-region/coder" - version = "1.0.2" + version = "1.0.12" regions = ["europe-west"] single_zone_per_region = false } @@ -65,7 +65,7 @@ resource "google_compute_instance" "example" { ```tf module "gcp_region" { source = "registry.coder.com/modules/gcp-region/coder" - version = "1.0.2" + version = "1.0.12" regions = ["us", "europe"] gpu_only = true single_zone_per_region = true diff --git a/git-clone/README.md b/git-clone/README.md index a8dd312..255b3f1 100644 --- a/git-clone/README.md +++ b/git-clone/README.md @@ -14,7 +14,7 @@ This module allows you to automatically clone a repository by URL and skip if it ```tf module "git-clone" { source = "registry.coder.com/modules/git-clone/coder" - version = "1.0.2" + version = "1.0.12" agent_id = coder_agent.example.id url = "https://github.com/coder/coder" } @@ -27,7 +27,7 @@ module "git-clone" { ```tf module "git-clone" { source = "registry.coder.com/modules/git-clone/coder" - version = "1.0.2" + version = "1.0.12" agent_id = coder_agent.example.id url = "https://github.com/coder/coder" base_dir = "~/projects/coder" @@ -41,7 +41,7 @@ To use with [Git Authentication](https://coder.com/docs/v2/latest/admin/git-prov ```tf module "git-clone" { source = "registry.coder.com/modules/git-clone/coder" - version = "1.0.2" + version = "1.0.12" agent_id = coder_agent.example.id url = "https://github.com/coder/coder" } @@ -66,7 +66,7 @@ data "coder_parameter" "git_repo" { # Clone the repository for branch `feat/example` module "git_clone" { source = "registry.coder.com/modules/git-clone/coder" - version = "1.0.11" + version = "1.0.12" agent_id = coder_agent.example.id url = data.coder_parameter.git_repo.value } @@ -74,7 +74,7 @@ module "git_clone" { # Create a code-server instance for the cloned repository module "code-server" { source = "registry.coder.com/modules/code-server/coder" - version = "1.0.11" + version = "1.0.12" agent_id = coder_agent.example.id order = 1 folder = "/home/${local.username}/${module.git_clone.folder_name}" @@ -98,7 +98,7 @@ Configuring `git-clone` for a self-hosted GitHub Enterprise Server running at `g ```tf module "git-clone" { source = "registry.coder.com/modules/git-clone/coder" - version = "1.0.11" + version = "1.0.12" agent_id = coder_agent.example.id url = "https://github.example.com/coder/coder/tree/feat/example" git_providers = { @@ -116,7 +116,7 @@ To GitLab clone with a specific branch like `feat/example` ```tf module "git-clone" { source = "registry.coder.com/modules/git-clone/coder" - version = "1.0.11" + version = "1.0.12" agent_id = coder_agent.example.id url = "https://gitlab.com/coder/coder/-/tree/feat/example" } @@ -127,7 +127,7 @@ Configuring `git-clone` for a self-hosted GitLab running at `gitlab.example.com` ```tf module "git-clone" { source = "registry.coder.com/modules/git-clone/coder" - version = "1.0.11" + version = "1.0.12" agent_id = coder_agent.example.id url = "https://gitlab.example.com/coder/coder/-/tree/feat/example" git_providers = { @@ -147,7 +147,7 @@ For example, to clone the `feat/example` branch: ```tf module "git-clone" { source = "registry.coder.com/modules/git-clone/coder" - version = "1.0.11" + version = "1.0.12" agent_id = coder_agent.example.id url = "https://github.com/coder/coder" branch_name = "feat/example" diff --git a/git-config/README.md b/git-config/README.md index 9b76658..8a0f3ad 100644 --- a/git-config/README.md +++ b/git-config/README.md @@ -14,7 +14,7 @@ Runs a script that updates git credentials in the workspace to match the user's ```tf module "git-config" { source = "registry.coder.com/modules/git-config/coder" - version = "1.0.3" + version = "1.0.12" agent_id = coder_agent.example.id } ``` @@ -28,7 +28,7 @@ TODO: Add screenshot ```tf module "git-config" { source = "registry.coder.com/modules/git-config/coder" - version = "1.0.3" + version = "1.0.12" agent_id = coder_agent.example.id allow_email_change = true } @@ -41,7 +41,7 @@ TODO: Add screenshot ```tf module "git-config" { source = "registry.coder.com/modules/git-config/coder" - version = "1.0.3" + version = "1.0.12" agent_id = coder_agent.example.id allow_username_change = false allow_email_change = false diff --git a/jetbrains-gateway/README.md b/jetbrains-gateway/README.md index cf51216..03feae1 100644 --- a/jetbrains-gateway/README.md +++ b/jetbrains-gateway/README.md @@ -14,7 +14,7 @@ This module adds a JetBrains Gateway Button to open any workspace with a single ```tf module "jetbrains_gateway" { source = "registry.coder.com/modules/jetbrains-gateway/coder" - version = "1.0.11" + version = "1.0.12" agent_id = coder_agent.example.id agent_name = "example" folder = "/home/coder/example" @@ -32,7 +32,7 @@ module "jetbrains_gateway" { ```tf module "jetbrains_gateway" { source = "registry.coder.com/modules/jetbrains-gateway/coder" - version = "1.0.11" + version = "1.0.12" agent_id = coder_agent.example.id agent_name = "example" folder = "/home/coder/example" @@ -46,7 +46,7 @@ module "jetbrains_gateway" { ```tf module "jetbrains_gateway" { source = "registry.coder.com/modules/jetbrains-gateway/coder" - version = "1.0.11" + version = "1.0.12" agent_id = coder_agent.example.id agent_name = "example" folder = "/home/coder/example" @@ -61,7 +61,7 @@ module "jetbrains_gateway" { ```tf module "jetbrains_gateway" { source = "registry.coder.com/modules/jetbrains-gateway/coder" - version = "1.0.11" + version = "1.0.12" agent_id = coder_agent.example.id agent_name = "example" folder = "/home/coder/example" From 56fdf096c1447314759e2e1926f5c1bc257b3b2e Mon Sep 17 00:00:00 2001 From: nataindata Date: Thu, 18 Apr 2024 17:28:09 +0000 Subject: [PATCH 13/56] Apache Airflow --- .images/airflow.png | Bin 0 -> 617279 bytes apache-airflow/README.md | 70 +++++++++++++++++++++++++++++++++++++++ apache-airflow/main.tf | 65 ++++++++++++++++++++++++++++++++++++ apache-airflow/run.sh | 16 +++++++++ 4 files changed, 151 insertions(+) create mode 100644 .images/airflow.png create mode 100644 apache-airflow/README.md create mode 100644 apache-airflow/main.tf create mode 100644 apache-airflow/run.sh diff --git a/.images/airflow.png b/.images/airflow.png new file mode 100644 index 0000000000000000000000000000000000000000..bdd57984f27c227cb644c217be5823552c940cb9 GIT binary patch literal 617279 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⪼&rg<<(AiV;1h^l`nTMn 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

k; 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%0DB#w8NIW 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≺fT)w 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 ^M$kN@3hoxs^1r*xj3WF{P7(6lxcBlyh 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 {BHW_Sfnd7`Vk}|z8bGO9(MLNa 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�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

  • 8yMY0>dIRRg;+x8a=yC>!)_9W^GGY1$H!OwuYn9dS*%I=twbj1 zd8`&&JxTtMZ|ncNrSM;Nog;>Mn%r$vVjxE|=Nw5}vmqd7T6wg3BV>;BX0FW?>yVX$ znCM%e`+2sHqZS)|`^j~qQUxCGgkh+(Z2TO|)hw}FW~lJd*4Wjb;Mj z1!VX`&!d0OoyDYR72T4?Zp^`_DLitZ!9(9G9R2B)?(T~h@Rzz`HHg;|Cqx%qKU5}t z<~7g~3r$(jJpJXkclV$42<_#n+#G;wiSGyBR=l)Qo2w!QI}3-0$cDxgCwF|pms zFn<$Lzucdg5RCnu!@J+JRB}GAF3R;UA>n@chLELU`QqDyhKz;E=DM_2qBzJdPaH5G ze2rv_|0sQnmt($>`Dz_Ukxg4Su?rN^!IS1E)~4jQH9c)%?8407KoV%Uz6sce+Mry^ znD_7Q0~=+ZZ33i2+pk@|hhvXcwVKdhO$O-5kK_n)_!zifmj!=D=s-?2OEr7@wOuU@ zhf$>25No%P#H~amPs2&{T796YU8o<`T&t(zfjIRRvhiAv|7D6?XuLbAtCk{IFHI(T z`?_dY#qt*!lQk+Pv5U1lO8Bijw~1cnU|9`+MQY8|K)j5S)850(Wqe5@U<8ovf&YQN zmt1ds%RRVb8O!R(t|u1S*aZLQ&2iRHxi7UHdq3CZyC=jIzBk51BT3(~ctHivhFJ2P z=d&^t({BOZT0$%<&I98vkZ-9_4WZ$|O9_rSo&3bbcW+0;Lp-b(Yh4#S2`g=#*cHNB zf;*jmt0UewtFGyN?rd+|W81N!e<(R~U8UYQ^$$Xy!9>0hS(TX?w;twxk=|!(+MPsmK^BTmsazw+_c4Lu(_o)Mzg&;>7s7s#JF|5P zf6Xbh{lurpl{M-}uhY)6*zQtA$#LLDdi1ic&;thHnfy>21j`kAaF9Of9u6@Pm?+RpesSqt0X85{Q$;(~xSN1|78-orZ7~gvaU(Z6BMb1Dq zSJidt`=J=&^nAW8iq-pSL+@Bn8S(gyX5c~JQv*+b)`_9Hxb5V2WBL0a@LQsIiZjo%|XPh?pIRrq+r zExJDhx#skSPzuIy9BRo6G5vXP*jxM5tb_A!7Wt87t2C}GeTodEIsrET6aw1SStBYL zG1<8;wnAW zKT(&h+$`G!0wep;Urm*|cfOfjF*E%n%Q}3fXflVjlJVFRvNUgGj&Z4#zIY zwSE8P(#zC=lPQz$;(6>ES9$zk)=rU^NHl*-+Pu3*`ta+@v|gc->BQE{*+#!pUzgQ? zD`wFhq_@MlWxpQY?ZFwBMRb`yQU{A50Vd%dWp<}!VL zwZYKL`j0vn#B{4P(DcSbvl^QahsyH_{z%`jDMUGcOQmS#XRDedgl$&^FF@JBhF-o| zokMGsq1JQ_K2Q#M*nxxACv|)=_HUVvE`x@{ckG!b&_0*8n8v<`9@Gn!h&4JmG@uXAjVJCfZ-U}<|Fj-4gK=Mda~f&4)ET<^ zrR#B0@Yhltv!zAHMg5FWROgvH7#7doNc12rT!0$jUPcn9;Qb~ScsVPTz>5VZ}LS==Pk&EX2f}r)~v53LeCXth~{&Fhnb>9J zC`mhz+V3t7c2;U@COiqblnHk+f8kI3wfgd=XZv!z0LKgZf$evC8}DSgZGWi=ii+x& zL=dEXDu@Lor_9kCkQGq@3IZk_BdbQ@}C9jM8Rpc3$tG{;=OkWOJW0yJ-H=qK(D_|W%VvYG%B|I z?wp?34eFlC{P!AH*pf>rVtQzEwhdD!m1Wg=b3q@jgR+BV9IUZI-5!y@|;?nCLd^8h>)$AFrhBac37UvQoy2w3b0LPAOCn^5G{^`VYA|K-@-=Mqk2tL(bfWmMMdL}ijw;gKu2X2OUEOO&-2SaZt#^y3y z#P+WKx$)6a5qHB4R+U?FZur1kU|~`tKlbF-I<6~F{G(s0S%$xS$lT3P;h8i-Y>z0s zAtj_A7hQN@;yZ+JUK!l3aQ|Ee{k_A$fO8=Pw|;;SEI@<3j69)N`0R|Y%_&TFMZ9*^ z8xAd?+pr{64+rcNaU3^EEv_)N-F9xS z;pV4{nbV0Wnms$h?8_JZdhg(W{Z|c1SKybO0Du&OLU+tr@{`vIvGecJ$?`G0?S zzWMhJPKBG_{uOI!ziUfqe-~UEd|%aq0q54TyZm{N@yjeK2g6oO(of1i09BoWo}87~ zx_;ZkK8ggKF+lrf@_3Yu9w{$me*6T|Jqe0GS2upE7}WW2j%G^;LgQo;({%B4%c3KWf4s=V4$Kl54&F z0zN8rI}Fg?OSS9Fq1lk>yvipY!Py@tYWVXiC6pR}q2y7aMeJ=oC0;E1e|IbfKO4e! zIQr*MP_RZTy_N0# zS8r6wiXm5Y8*XWeDjU8}ou78gw^&M5Xo`S=Kj@dMy56+rbx=EVS9vqH0N2fK_&j{T zBBazrG<`f~Muo+4yK&{j(w)7%-tfq1LH>VrUbL zyG5%)7sUGs?W}$(!m#5My6HyTb2#a-14n25OAcn%){BngWw0PH$oKMLhWh{J)MN~I zaV!Wi!~o0MS_lUy4+$eEhTMZZQnxtcNqMt`;Te4&=;?z&GBXHDxAf9h!s)CUi>f(M zx#XtBXc?H*CBMeCQ!!s#l&wliyX3f;$^}1)09+de5>sYXS6^}%d~PNu2p^B3@~}62 zctE_#-M$?(oJ_FBj`WmA6AKH@B{_#`R}HH68F6j+4KV7bs6F>wFZATgNn&5Q%ww>@ zW5$mlb^v2G&lOC(;B=^8Y4S%c^=~O*=2kL!*&@yl zTlE<%pcy|vDNflkDqbQbMQ1cnmFhdOlA1b2B@0NfcPFQ|(OS3gIb|x0Y{nK(ZpQ8Y zbV?;0E4qg4@`9+myk;7bEhX#HbRPy583f?6GP^U?K`GTE=b+@2(cbwXhy(>>dj6A1 zoBPoG$n0ApE7e_7L_7c_Z{_*trex5B|Ip>@*@q0-c-!}m2JltBYQtxu&M}YWDw2=X z3!%{2;7yT6uhn%dP^Ty5_TZ1KvJ&-;*Ruz+pj#i1=0MJ~HOxpL>eCuV)knlEC_7pA z8E;AE84aR86r13#hcrwke7Hw+M!HEbBSRqj@=IQW!)d(k*&AW^fdwz_P+tvG$!EF! zKP~_OB{#AIFtkWW<&;-SKx(pn(D}!WfW}y;SN_O#3N6`f(EYO|n~__N6O#IicJJb% zJQX6Q@dp_x?U<%Czd7SxTDt-2S!rB|>8K<~%r_Hc>hk~ZzP3R)%|fx0ozlEQwJO&}8w4@>?9CXmO0cqC^p4^}{-pEh*|<#&69@k2Icl%a9t?~t#DA`p8mesT^?Z`A^5!3VKXPdq@# zG#HiyiuZL$+Tm0Qf1ZVUw!wX;R8q8uoJ9rRze|a1SJUj|=r&RR=-1wjtVuC4b!`BP zO6Blf*@^!OewaLDN>Kv%z&@+|GOKsjtT0fa^?@+#g}XHmI7Tl??s2zD7`W&AJ@#Ii zS#DD+RXN36ZaJ-|r8*o;eu!pNwmjP#9}(?HvAMJDhBK`x|*;NmN+#e5>- zyZ%LVO63zVN->Kl1eg9W|+dBqFgivviJe6fr+_`-*wPsNYX z1?6>&x#V?GVoM6U_Iy&EDv-&dph7$G)C92exBd*UiNJyr5C?qpz2}_RlT|fd8IIECjr^vh z``1Fk;&!dH)HoH)0%{c%v;gm879X7WF46uwpP3Wl;vjZCCP2+EESVSRqUrvzhlPPF z;a^)_)wdF!5H7E=&$wqD^BX*PUS`O|6W;0%qWC$MJR3Z-4(UM;T$b>Z9zaRNzw0!m zTFZQMw+K?->6Jr#)8&_)e+}6|iiNDTL%Z;jFOsP|7o?MNna{cmmc@IJut_HOSrA+< zLQ$VCyYKr$SGH9{i}L0S_^_FgG~Y?R=JoJ9NqJl@ehTW!8ry0K=U8GEbBAiqtYf@@0(bgP~e(xMKH_{P@e6ovPuE&2bv^AsOtn4CKOIj%>ZoJtE`T{&z;@Hsu`Ku&at` zPLRtvva#b2D)$#_b5{D1x}7SZTR&fcA$Tpk9O&TC(I&&~wnV;{wd!()Ns-&KjK0f{ zl=NetSZqFIjOC`LXYX6evs7WhV|{K=`d)V5dd)H#*Lr?pp!le&v5nukE7IHbp?eH%!3Dy3G)$93z+ zaI&Sc$_wZcI?-R|$D=(hy)Wt1suJ`JPOxO6HYn$jp!n@UOdBTOU=)|ufqFLbBkVuR zGG{6s{lJJyDj@b=DC)Tgq?wH#2?7mSa000vgHEm*2B3jXoNenFC~Ryx@A;pg41Meu#p|hofCVX~=x*+ise&8lQI-?& zU4Bw>fnFgWhFaL&DnBX3UJD+aNY+x=IY^N5G0akO{Bn+kp*j0L!cp9~d`)5(-*x!BskaN(U zV{%-Ux7D~vzX)&~BZAp4QvSaiL@;&9opZ;fSR>&3DzHQUV>LU8{%o_#3;)(VD;+5X zrJo@={>OaU4}iVrv8_I@@^;yi=Zt$m{Ht5DChc`#a*J(2>h+QBpV{{ZoMT`sitgm( z9s|EUOePv%HIu;p-9Yi|tIo@i;ig8^jyJ>_Y@a8yG*~ImCSSh;v8_2O_g(az*(|Eq zM`yp0sTfN0UkWKap@U!%PSc8~0h%jTjx}D7_RqBl(?Z<6sJs*WiULARDV761vNX1! zh?*-~Y$orv?*)k%p^kU zy5LkTv>mNfyx$M8TN8;5=t82A0}y4uc!~WAZi|6mp|)xw40xhWvzJ2l+=47F{uK0b}TqMiuvYtR|7M|7kZ#b?`!`seYiXQy8Yu_GO~B z7!kPEH8s5+<|LXf#M~C+SJ|bsrX=?7ZXQAi+4s+F=8o0uLv1LJsA8u(CBJrVcl9f_ zU8xP76;-Vd2|#de1Z{{Gt*RgBSIW_Qc45Z&`4=>0D>j&&$%m<*6&~w-&)uP0!PCgK zAH~;v)kj9Ga#c~)S&hh~?BXP7#U`FgO0`crD^NxjGe+163tk9kgFl^q?VhDjEjr_? zrnr0jBfqU)PhVwGpWm~j1t%|DygD&iitzN)WD z3+@E03*8ja08;WSFp<=8PHYT*ou`+8APiQTIO;DC<0UG>*BzEVkWyCQMoJNDv|TIC zd}6X(bmu_%V})&w<}T+j|1!>|en7I!w|m}$AI155d-_A`sJ8n#8b{J^m0JEL&TYer zh49_eE;PZ(ieI@z3;e80cQ*Z9UVleGhwjsLcn*Wxp?u<1Hh)^N_L8M>>zvG(&0)`q z=>@_LBNKMqDDPenpyu%{$-QCq^ni~^u zO^CB%3YLoYq*e<)m{{?ImH61Qq0%YJdWgR18#HqjWjl`Ci}a(VEY=|&iEjdet$aE; zT0ogbYZZ)-T(@EorOPAcnQ;(Ez!;MmF;-(9IfQ2p=4<%Q41UUUW4~%oDnqJ5|E=2J zxaqqjG~=-*))>{2xgBhbPON#}-E7gaH#&Zip%<#MUX)JysCnnFqhD zpSibvsvBWV9zrjdvAj`R#3*0_0zZi0GAJ6T^KU!Jk-ONS3EhwIL*l0E4Ga{}#rskh z`%Vyf;1yOq-Q&rW8wL)2jr|ywa_YhwC7g6?JQ`#cJz;Cpva_*D`=~l@ z@K^d&`%MQ?Ry?u&wZYm>#MDmOxe`;S2=_YyOYAc(3j73wFtOsqZL%9-{2qJHkbobj zts_VNULrY@d1)5Yj=AA>rN0{jv_? zZ?;|SFDlY(0hO`jcv%DOlB7)*sAL9C%k9-Zod8o^1?*t&KHaR1cjGJLm^{Kj!x42-< zXP#4AdMB@jnSmSlv#*^EP>!BTFEPi<+;WNTu4}Ay}_og;n;ZI>dsT z$#*`JqY<-MiSlUOE0=G5<$d48b@%s#L4BUckC;|jM*E(U6^8|^+_amki9J00Uq$Fy zU>eyzKVP5rapB|;wqF7v{Kz!EwUWRbMA$l7|047IT+(20YHV*w;$L0tE^@~E{)|#=UB$>H``O=-%ek@21#zY5 z-TG(W&}URZTL)XN)}5Rv#F{ZCpXv|{+tJEY*~*D~dwo(z4@uj#1`vO3#7&RAX1+7){cKzFZR{?LOF9o;d5uHXaoV1IK? zjMJ?-`)5Oc-?<^UI%Wk{>V9!Aaq8OSE7?!qpJYEkkKa(@n|K)1&GpKGza*Fy?xK`J zu)QC%qWTis$$S&rdfhYOv*t}9cF*&2P@CM55YcyoOXP7(lxJ;d_j8SZ502HYK-NK_ zMqah%J?)HBclwmy38K4}Hxl)&*vfA~;=)-*A$EQ_0iwj7XH%mi-PdE;ukJ)4RfVKa zUK90S+DGe^>d6KXuG3Ssa|#SWO<;7yA&A_gOQFBd8lJ?Q9(u>4i2Yh!zd`v6ZmOP6`C&u500KiNNXXko`>L}$~AUccMZAjk3cZLa zPimgpJ=8uwrq_`D@d-u?*FKQCSUUntTtv_^Sln2*SGdsL=VRgPDP<0gWGjKWWx7IB z;5ThkoeEU>J3f=}DAL#6Iz9fWA1u^AC$8ijM&6rRqYzi2HWSWNq1s`Lk-Z}WK75); zmN--A?ya)dZO3`wk8`xGttMEbhre^jiBYQq+xymn@6e$luJ=D;OC2{-!WG%wz{)OL zlA7)elpDUnbt+^}ESQ$Ua=Gj)H%8^p&{#%~3kw&z#EAzVD%W z?^0;CDV5hTog?qn;&4BP=h`0Jp>P#+CHOKQ9yzV4R0iVvu~hdQq9$IV`LM#BPnX>n zKW`xS5Xq41gL?>8;@&Bks5?Yji$?JEO#dKk@f<=cSJm~ERHWXMY!+AOR;dw{7mt52 z=-z2IXx_?HIgW!-tbH2RVKHwxs`f0U;+xR?F746>3a$Dqn6F}WH1+MSb#{Iv*OK9XPkUccfTtCXO_gBXicLiZ zY(769u@zy@13bFm$6kj^R+w%i_%MMDHUyQKN9pu6^b9`6uWsffJ zm{UATux0FldQ+_O_qWssZf2%ap1%qKp3_BFCcVOprnm*VzqA-?x$~Har(r%9wDR== zL7sm}3-l-v=K+q3ZPpZt@YSM@IVp+@FM^R1%q7<_O%agen))~U?NH_(EicXE^m22$ zSJMFw&;VK|msgD^d=!oDq-J^8n{kQlwt~@<( zhvc^}22Y6?4YpZcQn-ZYp&En@yaNU;mI|q3Ihn04C+z9JA#3+;Tr{~cJqLg!u182U zWO6#_JsVg+63-ipdO-U7ORWpX|EUy|`>93KWS;Dh!j-gnvYAwEuXQY~jf1?$G{UcT z?2iOZdloiAOZ@+BwL9V^zcOF7`gru`&Knaeb(LrFD`ftYb~FV@&U%#XxHCwm)13^M zE@pd`N+T=W8#C3417m5*1jC_s)*`_M+d|vYgBtxpbD)Y=K8MAxa&M?__C zE~iMym`18?1<058CY$|V2r0yW?)FL?6SbbV#BlXjLxV3R!lVvQJQ{Mao~-orXNjQ@ z1;Z8S<^0Taj*<$5@&iN6mRf%HBc-{#iyJ&UndR;qoAv^?(TRGECx7K(Y)caMJ6&?5KTy0nC~`exn2pR6 zO|3T!mjgpuS8rC_YD&QH@H}iieReUOqnd}-NAx=I28)&aR6HG3B?dzFF89b}z(~?* zBW{Q(flcn@rKhQ&57(EHqZK-hWB@kLKH&N*VFZ^*PlzIDlu&+vMe-^ z3p(}epN{Jev~ACW1_9T3;;{;xOJwb>Rg#}UG(XExN<%!;RkMn7eF)U|k0 z8l*8uRJO6CW}BGc-s00Ke|;@8!ZZA!&~q}6{Qn4|YiPIH%u%QxGo26cUm$0UHY*yul>qeFJV(_^JBYT5~izT~T$upQ2zR>?Y zmj9dF5L#-im87Q&zN#)gugQhpvM90P@m-(221UTtLgI5L*Lw&#P*lV!)_FDjQ9Gi; z?=gVYpVMU}NxB{m zb}QBjZ_N}mI{pW}gJ<p2>n{ovlu0x)Nn*PacQ-Jc$!99uRg`6%1wJUV{>UHuh(9bi z4*p!xd##XBQaRoc0Kdj0CLEP&+8u^?dmmopLcC7Bnly6*K7>kPuX*qR{*pyXPsL`3 zf_SY&;!j2_{1rbR{7(O5itN{7K67+WUXbeT_`Ad$?A}9?GWKmQsa?&cs0@*@S7~qi z(5551<^IuN230g?NBe&%qAE3=8>CER=h2>c^?&g&b&A8?R|ytQ-BM;{@owj zZTG+47Z_ah*vNK;cu!tBBg}1TN3)J$B**CS3JuO53m!&H0A6#hz`vhB@tm`Hn~zdo z_)Iyh-tWi;PXk2RwGFB?O!H3Z;1$wmX!Flj^B63cx0}c7nQ0Agg$t{&c&xP1h1pGb z2B)F*UUvCcr3;Cx@Bl|68_}+7_^B)NW+SGz%3?0Q&THQ({Poa!W?MAs+YX;sfMEL2 zc@cVs;t1x(5~l(eyuvJ`B=k{Xe@`vlcV&2vD281iIcG!Fe0@{OT7DZHJHEW9)AS~O zH#tE~YC2@u@B!{elBX*0$es6-LpVvTBEEoe4;=r_F_&0pzxSq(_Hs~`N;PkO^MaQBXvT6P-#zo^z9nq3 zT~{0HgYChm;nn!w?JjutSS^p#c0qmGA#g4GcQe`+@HbM|QE}C*BM7WYN8QF*zVfO* zuRR@+C$6RD1R%9X`_v|WE03V*b9S4@*1nE?Fgm^ffw>2UV59kVS3N`W*V5a9($n-@ zb;r*@t(I`YncT2*(D;l7&a1Qir}f$0JXd9ek_Q4Z_k-E|8?q%$=sQ%@>|N-ZiqJgy z087gG5lTMB7aJE_OBkm!x2Uoy#NFb(x%8F(xrU(*+>WIr)l+V+#cTL+p3mxROI=%H zB)?A-^M)z_mmHo6KokBO4>Ndyuod<^YP;8J!!r{GKx8@wSQAZ-_IgX>7+C_t=xsO zWHC&+f2%H6ud^nQ3O@#b^|g7_RKesyFLFG4xXYW!G4>(m&yj80x$6w6w{e|6ZfB3D zqhw(gWH9(L(Z6M)WZZ$E!2mst1tulA>hM~PlAB}9Iyrrg)Um~m1694m$#t@`BCm=d zT$Q;Vc-znOVgmvxbLvSu#gS1FQSApU506cTwj{Kn+2LI+Y_F9bt~oHd+7zWh-;$FT z`}L(4WkhQxPb8E=LdE)x$V_Ige5=UL>es7wb@T)d(8 zT&+vG;cCHy)H$Wj1Hp99&KZR~aa3e(?ie{UU;bhp1Q|1V;EM!ZB@vKttJsh59n7y` zTEy;)id>IzN2u1Lj-->`M^blzGzfG;Iu7Pm6gpQIZ}p%?+PjoXCecuAwODgWQtG6t zuj^6>B;$qSb<95Pz=bC($OTw|tgeiK|+3xKKaE;fNolHnRzv(Ga{X z(s4zx-yG=XC>Z#Kx_H<%ns{>FkHGyTZBg$P*N^!w1*8sRyXdpfpt;zzbgd<`Z};t+ zfBw7->0FXvXt!U;1a(z2K!MyFBU21&E7~m8tu+&=b9iq{=sBd53ZK8 z;%*hrQO!o$!x~c8S_{$*P+aM$xlPOyWM${U3jf+#MaPrUjR>fbykq=hC*DnnnD!UW z3g7*aq^fUPe|?B_8PDJ!H<9N;3*+J9^4Q*>(VFY^=o#}Rgj6r_OFWih0T6Au9am5{ z_0f1_4WG7gkhDJi2Uqiosh6moEEFXhayJfalb|-qQIz=a_|-j&Pao%|b+RZfWiFL| z$@?UP0}_HA3@$Y_!~`4fdwZkKY zYs_kGA$9q$(rBsYw<=1-b7b;X^eaH?B%_`?d)UW7wBn}>^EDob?jxBC+E z{)_e;K)ntHJ`T+76}9qjG9&R{A^Bn`7rOJk4{0tv)DIGTQ;NB+aw9$(5&M-?sq0lgUwn_S4p4OStbKN?h)opFUfi+3{oc!o=?| z2mIqKJ~(!G7m@_|&>bbY;eHUG_2nObjzeInN6wyoo9X=0*eU8oGj>{;-)#-!wE=noL#!#i!_!S(|vY)&c+eE_nK# z=tm{2)H6w=TQ=#4YBZXYR4BkaQg*d%l}?aBPAo}W{H?^?PxiJ$a?BXB z6j6B-giBi&V)Nyo*Rhj0UPM_Pgrpojw-!pZzH4gK;%|0c>)wqc)!Io z+e};e&26w7Y|CbM{tyKE8&!@#FFwKR?qrg4dkx6bVzaTM8I%`NZE&~gwbpq!7Xvh~ zlam4ZAEL~0{O*uk;iH6c0EWvMlBwtZKb$D^ytWYV&ic+x^4r(s)tSd)J?bgV9{gEJ z8B9K;V^qR3m9Zo=$9LMy%I#n3zw-old@F$d-w1VGoA8O|(Y+1Xk-)!0JN&?qGf+q? zrWNtXyD)+70e1U9pgEaBOYHFm22R3!Lv06bMph7S@cQ$>Ja*X_?%;2UKLj@Az|LiH z{^xrC84`X(mKzRFrkt)4%6}53>)T`-&*xoWUgjnT7W@CTvM7m1J|0ac#}wOmk(t}S z`VxW^*k?I!q7I4^BtAdxnD0A&A(EBi+NCXYa#g`l{@^zQ$baZwnMtawmYx=A3bUrx z5cjaj2oyamO5-WVrELY{UI6%MS3+EDEGwN{QDl`Nx3n8JHqq3C4Q__Q#U=Urytv)3Y60H;fO% zRbl&AjLAMm5$YT*Uzbv#^(X@M)ApQw{ODmNNvxI5$58y{8FZ*rf zK>19-XG3`LB;K3naiL(5mA$}`U}BS?W;idZ5cn3haSxgs$K9{y9?&J?y~U`k71cn* zA<*XLpp3h-04*%vmM72u84sRy^01d|-2CFQney*k^74N|2%u+ zuRF=NEl(Ola_0YMzc4)%KLi>j zus^>PZ_!+pza%_bSW{fKM0CAc#18QP4c=BjUgEb9Pf!u=)4A0!g`tuC{{3Oticf{= zSsDS`1pXhg!v9}+SQOXZk0XqmmE@6wFpFf9AFl4)DAf4KgBSrN8X{hwpyqu%`KsIw zpX6}}Yu^?T54^{t`Y5ZH72exApMMkmmgVVJ*$;I=EO70@jJ?7Eybv)tKqoF=j`ap# z@2s-Q*{EOHPySev#Z&bj==fnUHdDzy6=HvLfip)yD0WiA1jc%zX<5X4FNNasI2zTd zc6QOMiSuG(u9mgcKJExNe%-L*{~j1B;M#rNs~5Ib(bf&sxaMLL*#NXC0NJm+cVN{8 ztbH%=U+s8+7d|xdOzzJ6QWp@*y|#kFsxn9D-oQPb+=mNL7~0*w_>iH$9-lb$6?M8V zo|^L0P&^|2$O~UGuira6Aw6GtbCBOvoiUCfu$`kLQ~Idni*t0Mz0_&8_>a%rIvhfw z;K2ukj*jZRj+W;mzShJpSE4c+Ne{35JA2%o_d~KF7juU=Hqi28>VykBC^~Q1V2+us zmEZO*y6~qg#H9fvVch}Wzu1&9FY@o;)Ak#ehz>|=lJI3(=in^#$?p`x3RaF#dv|jV z;v-c92OHQHms?AJX8!m*%=+`!U)n+3@E7AqB}!#A;7QVa(OI-Vj(xYW*WdGiT`IFT zKO?Bm{hl);wB+gdN(Ps1dz~)U7xd=GRc_hqL+AOyScwX3t(#n6GE;oy-$XvSslm`^ zO2%mBZC#1^&!lqzDTghb`F8tz<3^vWpZOZuew+@yZl6U!`>ozY2wwTe1(|DToD+Nb zg6C(k*i_fYA+>~QMYC$JB{n7=8J#xlW^UUJY({;O7`u^K+;qSnB@dmmQAHfqc&AB(-n$N5WfJq%K`flK5u7IXrbH$s)Nd zTN(oE&TdE*=`Qpg@m9SwOaC^tpPKM@?&RnxDAU;jVxATfXtl~%2;DEMhWG42uZ{j; z`t#VRGX7EYNQ#?On~#0MD7&I7GIiMZ$b`z}p|r}S&8{qa#?xxni!OBISrvX-h!j(Ly~=(BHw)J=3QLkby1n?UXT|zo+0P7W;%Yzr zS#-HMxrECQUYK{Gn)LaH9zk-g8p{-ZBSBn4t5XsBrUrbXpg_c<&1|}*TkiA&vMTFJ z`S+4?s#$|aYWDeet1h}U$90+%x&(cu6M6y-)2L~uadDi%*`e=h^y}mh+cqX_44HKJ zTGBf{n)y2IgMPGXv00>bf%#hAxp*z&b=2EgN4x&6(`uHW4o}H5F zgNfIa<4FJoy5h-c_VyjVyAat57#cT7|-cCJiaC zQCq^dR~PGG~jZ(B3Nzv()|Z`v<%?4UhuKU%DyQ z1;gG6?5o}Z-t=S}6;7%=WYWteo;uxTJEHBsvk7{!QSJq=4qJ;(D^=R9p5{Rrh;4z&I65%m8x>?bF~JLAVjQ_MTP33W`5U~?kz>!c98+crcaUM zj+heRe&{g`IAA52%jdU`l^R{+ivDqrWG-57?vHo+xk%qI|FzKU0d2O&ZA9`>e^YRQ zwjo7qD3~KQ31|r@h4GQ$YL71_BTDV^6ROOL`?Zlnz$&*oNTTzGH65R8RITrA6m;lH zU2ibQ>`7?Te&`^7&LzW1KR@^7IzBS1Y9FY097=)WlTXaa_UL4QNGzyxtdq{`0Y{;f z=d)1JsRTz@p%S2UQNmEO%bo8Ie;=V0rMP`&I1UbFytJqj%XKhurAKt(WG8ED?pN%Z z{68LsA(Z&sIHc|g9nDDKoNjEn@u^iD!kddvo3H!(9kpS!C~KaEUh3NUWHgs7&};%?=x%9`|kJmJewC$C!wO> zP>Io|I{A*2>P_v;qESsNx{M83m-%dlPgz#bbW<=tM#Bz0SU$PC84B-#hE~Z#+xAlb zt%8r#B({9;Cqr0bA6dQ?KiU#sW{q1CR!Cva^)_Tat6K^NT51N0;i%B(Jb$vFd*-kO zE|XV1(k?x`#CAuE2NdueZ^b#|#!-q>5M1s~xGl6|TaEpCkBRV-+T4W@Y#7LlSgx#} z7wj4!qP$HFZv_17){~1HF_34E@LReXj__jTr^*q7?G9w<4ULo0!fkezwrvho9XrBZ z#D`g-S`YvEoA)iQ5;lM1QQUXuBAKQC)W;_QcQQ;06uP^Pp%an7bhAu*bF0160x^| zDJ3Z8HgT1vtn2LBQ-a{3A+d^1#%K-}Dpv`g@yzcig>qsO(|T4C5El!*sypNCzXg^o zh~c=TsigOaw%{svEC+7l?YJdbK)jX2) z$UIzs2{4`v-Sq0$PiQ>W9a_z-o3jEJFKp`xD2j@^a_e%B_YN8xRY6baoJcga!mzpm zedu}u=ot#_mot1}$LOI1)F}Y`8>AO8Il(M8xSN=w-7_S55+5sbuXQJIP_&tIlk8mc zU!nTuAe^9cBCH+6>n*wv&S-7EbK)+$X_!k8iO$ygRpU$r-~K`BnD*pvxB26eI<85D z!SAuSR^m74kZJ(;=C#Lnc>K*U?ow|-r{G&J_#1fknnD|>3E3osMYNUZ@fqGK>G#DW zEA3Dm+#t-t{y62j78{7AA|KDCJSgGz2`D8g9h_fhH1q2rNSNXJC$0ZO?B>5CbFTTb z$&rxUr+QXq%-AGyaQ6omU9@)6~T zI-J#UbrT($OA7mC6C7H7)5TFpF0PA&wj~}}eqpN@*O5Z6kX;hN8Bfubma===fqS@c zD|J_8WRi0`0#GPsof62saPPLzem=}26r`v01RsF$yH$hj%q3YR8CFE)>%Tf@^{hMo z;ErQ*FTf6a1u`c7;%(ZCKvn#N8bvgY!PrJvu^nu1z%>;yALrya4m;9uZv4!5D5H?6 zm8=(~ndgivg-#;&Je{TVr71(XQmmL*O%-*cu2QxqcEhlM7G}7_FD3Z2g68@gzEPk% zv|Pr$pP&YG6KXYsy-(fkV8w79UcxK*l!4&>{KXlbV`oLSqzT^eQ0BrBj(>q$g=6)( z5Z$&wW@iL}b-vgp48^S_xhJ(=#B?sTe8QJvKlX+4DA7+s?L(@qkaU5b1giKznY-sM zWi(}Vr~bppgs581g(S~5^R;_X#V=}Tr-hW`pz9ev5y$p9)|9ZE&V{d>Ao!)r^cgAB zk0ke@z)uatBW1Yh5piKv_)L69f={Z5RA5zm##oJ1I})@#+ob3&vF&JVC#>2`9Z8|X z2C*{Q3BE`E>=unQ3-6+IX|E?pK>lgdlxZ2A?%9=~zSCn} zb`SIOBp~SgR?n8qqx|VephBFpn^TxhW9@ZO+AVS_z@pD$K&%gXz7#VB^O1xf&QmM3 z4B~(OIIf0a%6377sg=AcIL7d)`z!BAOr}<;^0=z))D#bke?E^B6WeioBge~gLq1o{ z9_N-8fLloYHlPDP;#`yAW8Z;ptV}|W8kuu8#79^5%#Y@e-RmgJ`XYBF9It|Jqo(~U zr(SlcC+m6qi&P38sjs>AjFw&gY=flI&vu!>A$iLl4&S4HI$a)ezmKg@GYws+9a=Ou z`h)*YIVF@mCNqj-@o*weJ?Ywhch}lNM!s_}&spTqvdiroT#miEQJQ~%ttk1=2-6-? zqgnTpMZaJF)?nvm64fpjm-jW|x9$xW<5XzGk0jF}Xj?B##m0cfvtgSGL?G)3`{EN# z5^-^OkvFdU9e;nASDSjd+wXuig5WACpGe$ztTe~`ne$dyKN-vK)VbVPX#b5Z8#u`| zc7-$hHi@Ijp>G<^TvQn!(G(ZAR&d76FE~CohYx?QiHEzq!9n0l;F%fxg{ybrB-jtzw*kKv*7Y@3ptEIvH3o1izI>b+^==0V z!<0(|3T5^jEFHaP4d3o%`y7rmsHG#yZurZ4;re}Hg^>rqWjgpD-TnWFF8uGx-2bH# zOFOBV42?A$MI)Ji8E7c?MbqkA@s_yk@Rl3!)(yA$Y{zEoPoGsiS8AlYDo)j$M2#zALvUnLTqb&lX}){$Yd#0wfL3ES5| zBLwqYX%*W&JuG>NbvPr`{b?EP8;^`Qm8(s;?8W?y?m7h zHT*YxAHG<)?X4EcfOln7WOIgoEO6$l2OqK5ColqYNj^HKsuNJoeg6@-ldtSQx$56r z_@%0$qsfaYuU@SrJnJ$Q-1d*bIT#fuHNIZf{Nh*G@!ok;EA-?Dr$f{tQr!FzzAB?x z43AxmcMofhMa(pcD`2rB?B7a6}WXY@9BA` znRV$LpJ+J3OR2b#c^Ih-%msXd@`4WI6zTX0iGtVK`ww0!RS;1A3-=Lb#BrQ|72+2e z@%+LSzwmx5oFBe9Fd{jH*qZ$Q#)A`{PUgQqfbWCBuKEo~7`j-@5}%H^Yos6MRk8|M zaBH^33<6j=w;pbI$P>OL@%rhBAPklBRzrI*((T}Oe7M==_wb@$Qb*q+1Aii(3hg%0 zs#YkLlqX7Ap%P{A48d#hQMP`c+gdbky=bulcB_F?svkmdrrtAwx9VPzJs!V^9+<+M zK#bh=OK~MSZ7Ux9wT>zXZ4G};8rIler+X)}bc8gc!E;XPRnck>U4agm{`5Np?JBU( zLBBtj7EU?;S^mz*0Kae7`P!r_JJ)zbJm{dyNgHxu5OqBECF5siB0HL_=J6nK>5sHR+;U1q3G>$Y}!nH9DEi6Y&OwL`{Xt) zC{#B2=Mf@@E7)&u;#08*Lln)Mx+}xgs~Q5}bVd zH|pD*$|B|TTSI6MB~W+Ls)k#aagHrsWyfYRC(%w&T^BO3FF&90A|%f+bXI|N(%DJm zG@)b)( zZj^EzvH!g|?0DMmQUVW9Kob=wkvMt(QvZO(SHv!SrV`OiCC7pMLo>-(a&h+HIfwJ` zu?a!nuLW=gP)QE1aGs;GGC1i(&`F+l5EhJeCy>L>DL)9!EtSKA$lhK7LJcb?IJ)Fn zumEoEKF6?9?sqh&+h{sWvs}gX(b}k5JMk8co~OH1B-)xj6V#! z(wP#{q<&%OgNUTL3THNenx5@jN7i10vrg;oGt@mq@GXTr%13=P9*Jjs=;6m9HAiF= zc{x29kzytq8Mh^OIKKVZk>%-ks_4skP|jU4q2y~S*=Q2&xT`Us<|9q-ghYZp;}%qy zvV}=R>79&NDp}Pae8=sT?;MVK-K00$ZYh}v-yzpD&qzpu5*{;>GR@u}P7tUk6_ztS zA$wY01sJ`RuH!Jp#)%SYs3b*c9_?g(IT2GMRmvy^{HR@-Q+lg@R%dTd^W0J4)T}8p z?udYd%GwO#KaDcre->1U!%wDy4l`dc;Dp}y$Yqqm>raO|GT==_HGn0M8LqgO;`;r0y_n zR%SMfL>GcP4lS$udN!%i{4vngPVI&EmrMZ9+vhqC_cMX}qD1Xl9*Emxxz_A!NuF(* zo{3IqKX~PneX`rrCxlOVAr}9DKVTdEj$MgYq;&C$)n7M4u039YTw}zqafCKXOLrCb z!*6l`Mv?FI77{u?g;FNKT+;UGC9^EcdtolN5Zu80g-Zo-z){Da{qCS+Dt8m<$Sgh>3zUg8`?~deUlTP5 zu$}HWhQM+#oLU;lz6f1*vdLyL&Be~Q(o-4XNOKc5w(qLH{s{fKSjFiLbSdb>NaNmr zo;=@5(m3^UyuNCNjhOabkX5GlJJ}t;TMgPL0TE6$fNH?Kk5ij7U0v)v=9$w;hLuog z%*Tf<#2Km^Kl(_v%^rRif20X_)q~>dC%60;_Y!2b-$g&Iz4xE>%l;?I0yC=@v(T1n ze&tLp44ULd38WYbWn@|?x=iv0*FL{s`D#$Yns>v^6rIcmc_cj)o>nT~7*LNgPqD4k zLW2eOaE1=!sbQ8bYCp9l!;nOMyo27DxM=3W96KuqUI@qy>r1Qt{y8i}f$w|W0Nss@ zOx$y`7M)+oUxV;(S>@xJ$g{Ym?qr2&m!3%Ngm802O6oZ2JUq#E+vT|8s`sc%(j*)f z4e)~D6gnpB`sOx*NuK$ZNS(tmjuPt;%BPTJ!?egLCuxm0X2%;kgAjJri7bFQj|QOP zBbK%4KP2##i63rjr|KB$tUPM*Y!Liec>O9@BFoVn(C~3FNxFDlU#x0tn&29p!sYw! z0}r;4xt>cUz@Gufq#0!=HDpnqhb`7v3e75^(wfa|%ooG+L^giM*-gGzgV@hiVI_ca zK>=TDXX5IsJugk5r78li$u{;yRO*1^`6xcOd72rZzh|3IT;tMfz~Y;>z(s1Fu3Z+o{Zfi1Nc%QW&Fx4ke0Sv2&^;M#@G_ZtsSZ_?6jZshrV2Sn|5LjokyEb zI-3f;>Y)Oph)D&eb{*j3M>>8})LNJ$LGcPw*!OaS3k%$_BU5I?ro>AEOO&;9iGr4y zj!()jLF#%en1)t3@cfmGTor>TdA60sVo~AE zv!=%L1WEbifMByaCg^tZQ#t_T^PDjk>N0ZpK&t6|yokH>%|<*O zpyOS1J*lJZS@-2jdSh?1LZ@r*lUT=Q4Ob|aNBwAPCiQ6z$j1zGctk(Qm@?+?%&j65 zCwmDbh7SC#4v}(!?51wCGvD6HXI#ks>h%`_?8d+|iSQ9)7k5V<8tN7z) zK0N1R%a5D5q3%P(Z&(Ix=crnxVC&@=Rwf)={+2MrJDy@XyFS5?*q)KIwhX4<)v1(tL z@aO_nKF6-rpH=YU{D|N3F9`nam#g6}F)Oap%Mk169~i@jOJ)1ACx)PA9p%$;fP$pE zQu7j%$7^r_G1wis9s||7$1jC(hhg~*zXEDWKE-(<7mqbh$G=nKkEm{X6d+pWyL-Cc zD1e5*i_JRYt!G*$+#1c6SC;H!EPvheJ()!xqLbjGZL_x-x#+Gp)`PQVF#2qf(|=dp zfrr(c6PZuBXTm%_ydVt1OfeT$>LLfA3wRJ(D)+w#&ns=l$EUFWzjfU0)!IZ7xe8={ z$;Y6rb^OCpG|mvUkX#*nyh zep)WIw%u=CB0G^bL$6*)s8c2OrEEl*J$t??!0RvwUR;ez%i&4hFf`j{t>(reQ2vjm zjvO%YP-DjnR3=*J-T8E0x&Ekj3EKU=Oj!A?(MK6U)@%WJ>*`F;uL!SYUEP7-o4hpJ zqxA@%nM+n}?j~P%uT|U0bhEKQG7NgyU0M~I4{=o3b0l3Es z@#LOk$5IJVsG`9zYOs?P6s34ptw`DU<6%_RRaEcdWYnEy{1_Xw8|y#hz5u>T{rx7# z(>SL4{}M<5ElQWM)dfr$;v_xZ23?f<;>7Ur)o!WgY;KYYp*|0RwDq{nQ(vbPb2p7q z$87CXUYzIE-w0VQrMi07#y5ON^c+UhzEQVA7>~bva8}#O((|C;x)P=MdL>(j*#qOM zdrLirUMc4smh`7iysz_l26yXN24-snDJir|rt7q5ZXWntC5lJpMzuuJ-fGbP zcrrD;tg-I#vwh`Iuf)jMaeAxj#9iZYi0LSZ^CQJmwi(yq(JIEc5n4Eo1XUP(SJ&mE zn2R~kdZ{WgmwG3ruZfFCA>Zk0`Zg^r^T_=$o6h^?n2u>%SawvB>W1fSO}J?0mgH|P ztFY#Cm0Is_;GU!jSPJ+m8ktMu^RydasICP#Ew``w08ia&PN<$=eJv_?nv8A~Y&20W zzS(pz>l=1+!K6b~?w-s)5wpMFnhzf+%VQo&$GT@2P1rOMBY~@4ZzDo8oTl!Z; z@d+_7xb+cX!8}+dtznVta=x%X!kWX3t&DZ34xg>yF$ZsTenw$B)j4NJT`pZVm*W>wCrEop%GH0<`laoX=f!)*qTYXf zO8cC4!{*aqwLp4HBvo08)iCm>WcXcU{HG_U)%>#stsyOhRHbM#u)e#QYw9L|I!|5JZzHS0?7C(U>$`-cGUQ^Yt?Kv_Q$nanf#oeqHkkDjV0=? zD0Vwdt@LW7oIkf3d{GGC9_?kC^*cAf+l-0v5q;Aj|6{oX29r}IN4zm(o90reo}tab z3S!bY{MdQIH)%kl6*e-LkFE^~>p8-?E&jPf@i3hc{E+baIe3>F8hC{;#=34=5^>)*z z_s=N*5uJSG`#H6IB?*#6Va;2_gYgbCzpuXk)<2^&QbU*>_FDfl<;VZ9&%M1W{(=M> ziZr--(|~i}rmee~bmYbtTE|oslf+V0rEzCCvW@vFQcXz`os&Vyu(ejZ)g=qD>C#39oA8Qb|B?S?t@QsA{FoODw-?e$ zRYDQ3Z`G=ycFV6;iaO3;QJ|E`-=dC}Y~F_U;FiMr%ZF^a5&&|AdDv6)T`p2!SC-Lr zs>GuZ8n*)z=C?3xE^XX3kreAR-1l-x3u`f*b((72D7_9K!GE8nc_TMpQtsA+ zvGdzcx_I}#2O-gQsjj5DaA)be9W~jXT|92o@93DISd=-d_mUfNh8jYFEKBvc0VFJn zOMC3y5p}PHZwAr8pAG&2Z%2&IsRCd{a+-=WjZ?Y;6Nbr{c86hv&hu;~ET=VZTz%0)cYx=Tqu0#9=KObmZOROt17zhjR7_X^>bV}UV*6v66_OjZ|YpxF=z(Q`qYIF0xuuTEO)|Hy&(#HNkI%lBD7|O z9yj~QgC%em#c zm}Pk=d+q!nHxY(3HT;8|8*;b%{q5Fawd6`&HQAXe^K+UBJ?&R zjoX;Q#XTb@8=+JS)}c}zjPfWnhPjA}hlfVTi`?RgnJ*^Z=n43FASW4|t}=8P-4Kpk zQ=jU7tQ#RO@K%mnP{@r&Kd>--r<9ExV#qRy6Pi*uX{d zUA(f|89nVNI4LuLUzUBEGIu@GIpD&05-cv;5RT85#|7OSONIsu{*|^OgtxQiN=j>9 z8AfEr%f93^6jGJb{$+1jlS#4uVnG~0fhHdxgSH;wGg*NAp3R*1y@dnI&3=T6_vh8k zeqs%D{sy7JEj=ys%}jHdK0`9?7M7lESRM`a@VnlkNzJ8QdOu%CUFuu#Eha~C=QL(3 zi14^;I!Ce08sFh&9c@^nEB|+LkT?E@X)ZbG*cs-d@#Ll1o7C)_j%odSP4G`&{VVHJ zFJqEn_d-GreMq!hap+rxL{?idU74w5utrW5N7l*1uVHH)Pw|^g&x@f^R0MrG=-4wfE=TWM9rFxu$JijyE#WLjYvJbadVqwg=cu%6?b}+={Tko#JVT*2b3SY zM5UmZIZ~uVVY6+XqRAaN*1B$SW@I*-zTIk=<1neXwG!r`aiK$VS-~KQA~#JB`O4Dc z*XesW4=2p$ZfO$FgB$;U_ruo>Vgv~O(P*CB)U*8p`{Ui9;#b<&h2)+iE!BWR8>PWE z%W4aS9zLr(d~!j^KhrX3Fin;aP=rA6V>8o0St)eKDlX__eG6!Mn>qk;xrvlOvVsyJ)eL4h&6lwe|_abdZ6AR~FhewFgq+TZf3mPdez5c#B z*WbuR;B8{ff{{jif*Tv+wbX^s-wgKz_JH`8CqIqƟJL%h0N%19i3(_Ew0KZPm* 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 literal 0 HcmV?d00001 diff --git a/apache-airflow/README.md b/apache-airflow/README.md new file mode 100644 index 0000000..541ab82 --- /dev/null +++ b/apache-airflow/README.md @@ -0,0 +1,70 @@ +--- +display_name: airflow +description: A module that adds Apache Airflow in your Coder template +icon: ../.icons/airflow.svg +maintainer_github: nataindata +verified: false +tags: [airflow, idea, web, helper] +--- + +# airflow + +A module that adds Apache Airflow in your Coder template. + + +```tf +module "airflow" { + source = "registry.coder.com/modules/airflow/coder" + version = "1.0.2" +} +``` + +![Airflow](../.images/airflow.png) + +## Examples + +### Example 1 + +Install the Dracula theme from [OpenVSX](https://open-vsx.org/): + +```tf +module "airflow" { + source = "registry.coder.com/modules/airflow/coder" + version = "1.0.2" + agent_id = coder_agent.example.id + extensions = [ + "dracula-theme.theme-dracula" + ] +} +``` + +Enter the `.` into the extensions array and code-server will automatically install on start. + +### Example 2 + +Configure VS Code's [settings.json](https://code.visualstudio.com/docs/getstarted/settings#_settingsjson) file: + +```tf +module "airflow" { + source = "registry.coder.com/modules/airflow/coder" + version = "1.0.2" + agent_id = coder_agent.example.id + extensions = [ "dracula-theme.theme-dracula" ] + settings = { + "workbench.colorTheme" = "Dracula" + } +} +``` + +### Example 3 + +Run code-server in the background, don't fetch it from GitHub: + +```tf +module "airflow" { + source = "registry.coder.com/modules/airflow/coder" + version = "1.0.2" + agent_id = coder_agent.example.id + offline = true +} +``` diff --git a/apache-airflow/main.tf b/apache-airflow/main.tf new file mode 100644 index 0000000..91b6682 --- /dev/null +++ b/apache-airflow/main.tf @@ -0,0 +1,65 @@ +terraform { + required_version = ">= 1.0" + + required_providers { + coder = { + source = "coder/coder" + version = ">= 0.17" + } + } +} + +# Add required variables for your modules and remove any unneeded variables +variable "agent_id" { + type = string + description = "The ID of a Coder agent." +} + +variable "log_path" { + type = string + description = "The path to log airflow to." + default = "/tmp/airflow.log" +} + +variable "port" { + type = number + description = "The port to run airflow on." + default = 8080 +} + +variable "share" { + type = string + default = "owner" + validation { + condition = var.share == "owner" || var.share == "authenticated" || var.share == "public" + error_message = "Incorrect value. Please set either 'owner', 'authenticated', or 'public'." + } +} + +variable "order" { + type = number + description = "The order determines the position of app in the UI presentation. The lowest order is shown first and apps with equal order are sorted by name (ascending order)." + default = null +} + +resource "coder_script" "airflow" { + agent_id = var.agent_id + display_name = "airflow" + icon = "/icon/apache-guacamole.svg" + script = templatefile("${path.module}/run.sh", { + LOG_PATH : var.log_path, + PORT : var.port + }) + run_on_start = true +} + +resource "coder_app" "airflow" { + agent_id = var.agent_id + slug = "airflow" + display_name = "airflow" + url = "http://localhost:${var.port}" + icon = "/icon/apache-guacamole.svg" + subdomain = true + share = var.share + order = var.order +} diff --git a/apache-airflow/run.sh b/apache-airflow/run.sh new file mode 100644 index 0000000..1920bff --- /dev/null +++ b/apache-airflow/run.sh @@ -0,0 +1,16 @@ +#!/usr/bin/env sh + +BOLD='\033[0;1m' + +PATH=$PATH:~/.local/bin +pip install --upgrade apache-airflow + +filename=~/airflow/airflow.db +if ! [ -f $filename ] || ! [ -s $filename ] +then + airflow db init +fi + +airflow webserver >${LOG_PATH} 2>&1 & + +airflow users create -u admin -p admin -r Admin -e admin@admin.com -f Coder -l User From 47e995f6360e1f47b7b5d34bf0d8fc82733fddf0 Mon Sep 17 00:00:00 2001 From: Stephen Kirby Date: Tue, 23 Apr 2024 20:17:21 +0000 Subject: [PATCH 14/56] fmt --- apache-airflow/README.md | 13 ++++++------- apache-airflow/run.sh | 7 +++---- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/apache-airflow/README.md b/apache-airflow/README.md index 541ab82..ae8a278 100644 --- a/apache-airflow/README.md +++ b/apache-airflow/README.md @@ -1,6 +1,6 @@ --- display_name: airflow -description: A module that adds Apache Airflow in your Coder template +description: A module that adds Apache Airflow in your Coder template icon: ../.icons/airflow.svg maintainer_github: nataindata verified: false @@ -11,7 +11,6 @@ tags: [airflow, idea, web, helper] A module that adds Apache Airflow in your Coder template. - ```tf module "airflow" { source = "registry.coder.com/modules/airflow/coder" @@ -29,9 +28,9 @@ Install the Dracula theme from [OpenVSX](https://open-vsx.org/): ```tf module "airflow" { - source = "registry.coder.com/modules/airflow/coder" - version = "1.0.2" - agent_id = coder_agent.example.id + source = "registry.coder.com/modules/airflow/coder" + version = "1.0.2" + agent_id = coder_agent.example.id extensions = [ "dracula-theme.theme-dracula" ] @@ -49,8 +48,8 @@ module "airflow" { source = "registry.coder.com/modules/airflow/coder" version = "1.0.2" agent_id = coder_agent.example.id - extensions = [ "dracula-theme.theme-dracula" ] - settings = { + extensions = ["dracula-theme.theme-dracula"] + settings = { "workbench.colorTheme" = "Dracula" } } diff --git a/apache-airflow/run.sh b/apache-airflow/run.sh index 1920bff..8a1c9a7 100644 --- a/apache-airflow/run.sh +++ b/apache-airflow/run.sh @@ -6,11 +6,10 @@ PATH=$PATH:~/.local/bin pip install --upgrade apache-airflow filename=~/airflow/airflow.db -if ! [ -f $filename ] || ! [ -s $filename ] -then +if ! [ -f $filename ] || ! [ -s $filename ]; then airflow db init fi -airflow webserver >${LOG_PATH} 2>&1 & +airflow webserver > ${LOG_PATH} 2>&1 & -airflow users create -u admin -p admin -r Admin -e admin@admin.com -f Coder -l User +airflow users create -u admin -p admin -r Admin -e admin@admin.com -f Coder -l User From 2a30982d1a1dfe3fc0e715a655758557ad54d909 Mon Sep 17 00:00:00 2001 From: timquinlan Date: Wed, 24 Apr 2024 12:43:16 -0400 Subject: [PATCH 15/56] Update run.sh added export and scheduler lines --- apache-airflow/run.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/apache-airflow/run.sh b/apache-airflow/run.sh index 8a1c9a7..d881260 100644 --- a/apache-airflow/run.sh +++ b/apache-airflow/run.sh @@ -10,6 +10,10 @@ if ! [ -f $filename ] || ! [ -s $filename ]; then airflow db init fi +export AIRFLOW__CORE__LOAD_EXAMPLES=false + airflow webserver > ${LOG_PATH} 2>&1 & +airflow scheduler >> /tmp/airflow_scheduler.log 2>&1 & + airflow users create -u admin -p admin -r Admin -e admin@admin.com -f Coder -l User From 33dbae6ea07054f7b36006321610be6fe333e346 Mon Sep 17 00:00:00 2001 From: Muhammad Atif Ali Date: Wed, 24 Apr 2024 23:42:55 +0300 Subject: [PATCH 16/56] fix(jetbrains-gateway): fix icon and name of `coder_app` (#233) --- jetbrains-gateway/main.tf | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/jetbrains-gateway/main.tf b/jetbrains-gateway/main.tf index 4c174a2..c96098c 100644 --- a/jetbrains-gateway/main.tf +++ b/jetbrains-gateway/main.tf @@ -213,7 +213,7 @@ locals { } } - icon = try(lookup(local.jetbrains_ides, data.coder_parameter.jetbrains_ide.value).icon, "/icon/gateway.svg") + icon = local.jetbrains_ides[data.coder_parameter.jetbrains_ide.value].icon json_data = var.latest ? jsondecode(data.http.jetbrains_ide_versions[data.coder_parameter.jetbrains_ide.value].response_body) : {} key = var.latest ? keys(local.json_data)[0] : "" display_name = local.jetbrains_ides[data.coder_parameter.jetbrains_ide.value].name @@ -247,8 +247,8 @@ data "coder_workspace" "me" {} resource "coder_app" "gateway" { agent_id = var.agent_id slug = "gateway" - display_name = try(lookup(data.coder_parameter.jetbrains_ide.option, data.coder_parameter.jetbrains_ide.value).name, "JetBrains IDE") - icon = try(lookup(data.coder_parameter.jetbrains_ide.option, data.coder_parameter.jetbrains_ide.value).icon, "/icon/gateway.svg") + display_name = local.display_name + icon = local.icon external = true order = var.order url = join("", [ From 18efe83b89875e9b286b74891031e26473114ca3 Mon Sep 17 00:00:00 2001 From: timquinlan Date: Thu, 25 Apr 2024 13:17:08 +0000 Subject: [PATCH 17/56] corrected path in README.md to point to modules/apache-airflow --- apache-airflow/README.md | 11 +- package-lock.json | 263 +++++++++++++++++++++++++++++++++++++++ package.json | 3 +- 3 files changed, 271 insertions(+), 6 deletions(-) create mode 100644 package-lock.json diff --git a/apache-airflow/README.md b/apache-airflow/README.md index ae8a278..3d43147 100644 --- a/apache-airflow/README.md +++ b/apache-airflow/README.md @@ -13,8 +13,9 @@ A module that adds Apache Airflow in your Coder template. ```tf module "airflow" { - source = "registry.coder.com/modules/airflow/coder" - version = "1.0.2" + source = "registry.coder.com/modules/apache-airflow/coder" + version = "1.0.2" + agent_id = coder_agent.example.id } ``` @@ -28,7 +29,7 @@ Install the Dracula theme from [OpenVSX](https://open-vsx.org/): ```tf module "airflow" { - source = "registry.coder.com/modules/airflow/coder" + source = "registry.coder.com/modules/apache-airflow/coder" version = "1.0.2" agent_id = coder_agent.example.id extensions = [ @@ -45,7 +46,7 @@ Configure VS Code's [settings.json](https://code.visualstudio.com/docs/getstarte ```tf module "airflow" { - source = "registry.coder.com/modules/airflow/coder" + source = "registry.coder.com/modules/apache-airflow/coder" version = "1.0.2" agent_id = coder_agent.example.id extensions = ["dracula-theme.theme-dracula"] @@ -61,7 +62,7 @@ Run code-server in the background, don't fetch it from GitHub: ```tf module "airflow" { - source = "registry.coder.com/modules/airflow/coder" + source = "registry.coder.com/modules/apache-airflow/coder" version = "1.0.2" agent_id = coder_agent.example.id offline = true diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..8039c1c --- /dev/null +++ b/package-lock.json @@ -0,0 +1,263 @@ +{ + "name": "modules", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "modules", + "devDependencies": { + "bun-types": "^1.0.18", + "gray-matter": "^4.0.3", + "marked": "^12.0.0", + "prettier": "^3.2.5", + "prettier-plugin-sh": "^0.13.1", + "prettier-plugin-terraform-formatter": "^1.2.1" + }, + "peerDependencies": { + "typescript": "^5.3.3" + } + }, + "node_modules/@types/node": { + "version": "20.11.30", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.30.tgz", + "integrity": "sha512-dHM6ZxwlmuZaRmUPfv1p+KrdD1Dci04FbdEm/9wEMouFqxYoFl5aMkt0VMAUtYRQDyYvD41WJLukhq/ha3YuTw==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/ws": { + "version": "8.5.10", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz", + "integrity": "sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/bun-types": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/bun-types/-/bun-types-1.1.4.tgz", + "integrity": "sha512-E1kk0FNpxpkSSlCVXEa4HfyhSUEpKtCFrybPVyz1A4TEnBGy5bqqtSYkyjKTfKScdyZTBeFrTxJLiKGOIRWgwg==", + "dev": true, + "dependencies": { + "@types/node": "~20.11.3", + "@types/ws": "~8.5.10" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gray-matter": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz", + "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==", + "dev": true, + "dependencies": { + "js-yaml": "^3.13.1", + "kind-of": "^6.0.2", + "section-matter": "^1.0.0", + "strip-bom-string": "^1.0.0" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/marked": { + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/marked/-/marked-12.0.2.tgz", + "integrity": "sha512-qXUm7e/YKFoqFPYPa3Ukg9xlI5cyAtGmyEIzMfW//m6kXwCy2Ps9DYf5ioijFKQ8qyuscrHoY04iJGctu2Kg0Q==", + "dev": true, + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/mvdan-sh": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/mvdan-sh/-/mvdan-sh-0.10.1.tgz", + "integrity": "sha512-kMbrH0EObaKmK3nVRKUIIya1dpASHIEusM13S4V1ViHFuxuNxCo+arxoa6j/dbV22YBGjl7UKJm9QQKJ2Crzhg==", + "dev": true + }, + "node_modules/prettier": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz", + "integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==", + "dev": true, + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-plugin-sh": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/prettier-plugin-sh/-/prettier-plugin-sh-0.13.1.tgz", + "integrity": "sha512-ytMcl1qK4s4BOFGvsc9b0+k9dYECal7U29bL/ke08FEUsF/JLN0j6Peo0wUkFDG4y2UHLMhvpyd6Sd3zDXe/eg==", + "dev": true, + "dependencies": { + "mvdan-sh": "^0.10.1", + "sh-syntax": "^0.4.1" + }, + "engines": { + "node": ">=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + }, + "peerDependencies": { + "prettier": "^3.0.0" + } + }, + "node_modules/prettier-plugin-terraform-formatter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prettier-plugin-terraform-formatter/-/prettier-plugin-terraform-formatter-1.2.1.tgz", + "integrity": "sha512-rdzV61Bs/Ecnn7uAS/vL5usTX8xUWM+nQejNLZxt3I1kJH5WSeLEmq7LYu1wCoEQF+y7Uv1xGvPRfl3lIe6+tA==", + "dev": true, + "peerDependencies": { + "prettier": ">= 1.16.0" + }, + "peerDependenciesMeta": { + "prettier": { + "optional": true + } + } + }, + "node_modules/section-matter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", + "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/sh-syntax": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/sh-syntax/-/sh-syntax-0.4.2.tgz", + "integrity": "sha512-/l2UZ5fhGZLVZa16XQM9/Vq/hezGGbdHeVEA01uWjOL1+7Ek/gt6FquW0iKKws4a9AYPYvlz6RyVvjh3JxOteg==", + "dev": true, + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "node_modules/strip-bom-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", + "integrity": "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/typescript": { + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", + "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + } + } +} diff --git a/package.json b/package.json index 5a73d51..f3136b1 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,7 @@ "bun-types": "^1.0.18", "gray-matter": "^4.0.3", "marked": "^12.0.0", + "prettier": "^3.2.5", "prettier-plugin-sh": "^0.13.1", "prettier-plugin-terraform-formatter": "^1.2.1" }, @@ -23,4 +24,4 @@ "prettier-plugin-terraform-formatter" ] } -} \ No newline at end of file +} From fd985bedac27480caff69cdf77a47765eb2fb582 Mon Sep 17 00:00:00 2001 From: timquinlan Date: Thu, 25 Apr 2024 15:25:12 +0000 Subject: [PATCH 18/56] changed maintainer_github to coder, added partner_github: nataindata --- apache-airflow/README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/apache-airflow/README.md b/apache-airflow/README.md index 3d43147..65f808f 100644 --- a/apache-airflow/README.md +++ b/apache-airflow/README.md @@ -2,8 +2,9 @@ display_name: airflow description: A module that adds Apache Airflow in your Coder template icon: ../.icons/airflow.svg -maintainer_github: nataindata -verified: false +maintainer_github: coder +partner_github: nataindata +verified: true tags: [airflow, idea, web, helper] --- From c50c4259d990e2c39effc490adbf961f3901a2aa Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 25 Apr 2024 18:53:46 +0300 Subject: [PATCH 19/56] chore: bump version to 1.0.13 in README.md files (#238) Co-authored-by: matifali --- apache-airflow/README.md | 8 ++++---- jetbrains-gateway/README.md | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/apache-airflow/README.md b/apache-airflow/README.md index 65f808f..0483c9c 100644 --- a/apache-airflow/README.md +++ b/apache-airflow/README.md @@ -15,7 +15,7 @@ A module that adds Apache Airflow in your Coder template. ```tf module "airflow" { source = "registry.coder.com/modules/apache-airflow/coder" - version = "1.0.2" + version = "1.0.13" agent_id = coder_agent.example.id } ``` @@ -31,7 +31,7 @@ Install the Dracula theme from [OpenVSX](https://open-vsx.org/): ```tf module "airflow" { source = "registry.coder.com/modules/apache-airflow/coder" - version = "1.0.2" + version = "1.0.13" agent_id = coder_agent.example.id extensions = [ "dracula-theme.theme-dracula" @@ -48,7 +48,7 @@ Configure VS Code's [settings.json](https://code.visualstudio.com/docs/getstarte ```tf module "airflow" { source = "registry.coder.com/modules/apache-airflow/coder" - version = "1.0.2" + version = "1.0.13" agent_id = coder_agent.example.id extensions = ["dracula-theme.theme-dracula"] settings = { @@ -64,7 +64,7 @@ Run code-server in the background, don't fetch it from GitHub: ```tf module "airflow" { source = "registry.coder.com/modules/apache-airflow/coder" - version = "1.0.2" + version = "1.0.13" agent_id = coder_agent.example.id offline = true } diff --git a/jetbrains-gateway/README.md b/jetbrains-gateway/README.md index 03feae1..b2c0e0f 100644 --- a/jetbrains-gateway/README.md +++ b/jetbrains-gateway/README.md @@ -14,7 +14,7 @@ This module adds a JetBrains Gateway Button to open any workspace with a single ```tf module "jetbrains_gateway" { source = "registry.coder.com/modules/jetbrains-gateway/coder" - version = "1.0.12" + version = "1.0.13" agent_id = coder_agent.example.id agent_name = "example" folder = "/home/coder/example" @@ -32,7 +32,7 @@ module "jetbrains_gateway" { ```tf module "jetbrains_gateway" { source = "registry.coder.com/modules/jetbrains-gateway/coder" - version = "1.0.12" + version = "1.0.13" agent_id = coder_agent.example.id agent_name = "example" folder = "/home/coder/example" @@ -46,7 +46,7 @@ module "jetbrains_gateway" { ```tf module "jetbrains_gateway" { source = "registry.coder.com/modules/jetbrains-gateway/coder" - version = "1.0.12" + version = "1.0.13" agent_id = coder_agent.example.id agent_name = "example" folder = "/home/coder/example" @@ -61,7 +61,7 @@ module "jetbrains_gateway" { ```tf module "jetbrains_gateway" { source = "registry.coder.com/modules/jetbrains-gateway/coder" - version = "1.0.12" + version = "1.0.13" agent_id = coder_agent.example.id agent_name = "example" folder = "/home/coder/example" From b0d6224e236cc7576c65c6e0621ff1d929147a70 Mon Sep 17 00:00:00 2001 From: timquinlan Date: Fri, 26 Apr 2024 14:25:53 +0000 Subject: [PATCH 20/56] cleaned up apache-airflow readme --- apache-airflow/README.md | 48 ---------------------------------------- 1 file changed, 48 deletions(-) diff --git a/apache-airflow/README.md b/apache-airflow/README.md index 0483c9c..bf8e315 100644 --- a/apache-airflow/README.md +++ b/apache-airflow/README.md @@ -21,51 +21,3 @@ module "airflow" { ``` ![Airflow](../.images/airflow.png) - -## Examples - -### Example 1 - -Install the Dracula theme from [OpenVSX](https://open-vsx.org/): - -```tf -module "airflow" { - source = "registry.coder.com/modules/apache-airflow/coder" - version = "1.0.13" - agent_id = coder_agent.example.id - extensions = [ - "dracula-theme.theme-dracula" - ] -} -``` - -Enter the `.` into the extensions array and code-server will automatically install on start. - -### Example 2 - -Configure VS Code's [settings.json](https://code.visualstudio.com/docs/getstarted/settings#_settingsjson) file: - -```tf -module "airflow" { - source = "registry.coder.com/modules/apache-airflow/coder" - version = "1.0.13" - agent_id = coder_agent.example.id - extensions = ["dracula-theme.theme-dracula"] - settings = { - "workbench.colorTheme" = "Dracula" - } -} -``` - -### Example 3 - -Run code-server in the background, don't fetch it from GitHub: - -```tf -module "airflow" { - source = "registry.coder.com/modules/apache-airflow/coder" - version = "1.0.13" - agent_id = coder_agent.example.id - offline = true -} -``` From b686f2dbd569a45ca8aaf5770a5a3cd30d6198d0 Mon Sep 17 00:00:00 2001 From: Michael Brewer Date: Fri, 26 Apr 2024 07:56:50 -0700 Subject: [PATCH 21/56] feat(code-server): install extensions from `.vscode/extensions.json` (#231) --- code-server/main.tf | 8 ++++++++ code-server/run.sh | 20 ++++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/code-server/main.tf b/code-server/main.tf index 8c0f1e0..c186c14 100644 --- a/code-server/main.tf +++ b/code-server/main.tf @@ -101,6 +101,12 @@ variable "extensions_dir" { default = "" } +variable "auto_install_extensions" { + type = bool + description = "Automatically install recommended extensions when code-server starts." + default = false +} + resource "coder_script" "code-server" { agent_id = var.agent_id display_name = "code-server" @@ -117,6 +123,8 @@ resource "coder_script" "code-server" { OFFLINE : var.offline, USE_CACHED : var.use_cached, EXTENSIONS_DIR : var.extensions_dir, + FOLDER : var.folder, + AUTO_INSTALL_EXTENSIONS : var.auto_install_extensions, }) run_on_start = true diff --git a/code-server/run.sh b/code-server/run.sh index b04e131..26a1c6e 100755 --- a/code-server/run.sh +++ b/code-server/run.sh @@ -70,4 +70,24 @@ for extension in "$${EXTENSIONLIST[@]}"; do fi done +if [ "${AUTO_INSTALL_EXTENSIONS}" = true ]; then + if ! command -v jq > /dev/null; then + echo "jq is required to install extensions from a workspace file." + exit 0 + fi + + WORKSPACE_DIR="$HOME" + if [ -n "${FOLDER}" ]; then + WORKSPACE_DIR="${FOLDER}" + fi + + if [ -f "$WORKSPACE_DIR/.vscode/extensions.json" ]; then + printf "🧩 Installing extensions from %s/.vscode/extensions.json...\n" "$WORKSPACE_DIR" + extensions=$(jq -r '.recommendations[]' "$WORKSPACE_DIR"/.vscode/extensions.json) + for extension in $extensions; do + $CODE_SERVER "$EXTENSION_ARG" --install-extension "$extension" + done + fi +fi + run_code_server From 443485a2d707e1ae9f906850f00af23b9dd6e4ad Mon Sep 17 00:00:00 2001 From: Phorcys <57866459+phorcys420@users.noreply.github.com> Date: Fri, 26 Apr 2024 16:57:12 +0200 Subject: [PATCH 22/56] feat(dotfiles): add ability to apply dotfiles as any user (#133) Co-authored-by: Mathias Fredriksson Co-authored-by: Muhammad Atif Ali --- dotfiles/README.md | 47 +++++++++++++++++++++++++++++++++++++++++++++- dotfiles/main.tf | 38 +++++++++++++++++++++++++++---------- dotfiles/run.sh | 23 +++++++++++++++++++++++ 3 files changed, 97 insertions(+), 11 deletions(-) create mode 100644 dotfiles/run.sh diff --git a/dotfiles/README.md b/dotfiles/README.md index 435d366..be174c2 100644 --- a/dotfiles/README.md +++ b/dotfiles/README.md @@ -9,7 +9,11 @@ tags: [helper] # Dotfiles -Allow developers to optionally bring their own [dotfiles repository](https://dotfiles.github.io)! Under the hood, this module uses the [coder dotfiles](https://coder.com/docs/v2/latest/dotfiles) command. +Allow developers to optionally bring their own [dotfiles repository](https://dotfiles.github.io). + +This will prompt the user for their dotfiles repository URL on template creation using a `coder_parameter`. + +Under the hood, this module uses the [coder dotfiles](https://coder.com/docs/v2/latest/dotfiles) command. ```tf module "dotfiles" { @@ -19,6 +23,47 @@ module "dotfiles" { } ``` +## Examples + +### Apply dotfiles as the current user + +```tf +module "dotfiles" { + source = "registry.coder.com/modules/dotfiles/coder" + version = "1.0.0" + agent_id = coder_agent.example.id +} +``` + +### Apply dotfiles as another user (only works if sudo is passwordless) + +```tf +module "dotfiles" { + source = "registry.coder.com/modules/dotfiles/coder" + version = "1.0.0" + agent_id = coder_agent.example.id + user = "root" +} +``` + +### Apply the same dotfiles as the current user and root (the root dotfiles can only be applied if sudo is passwordless) + +```tf +module "dotfiles" { + source = "registry.coder.com/modules/dotfiles/coder" + version = "1.0.0" + agent_id = coder_agent.example.id +} + +module "dotfiles-root" { + source = "registry.coder.com/modules/dotfiles/coder" + version = "1.0.0" + agent_id = coder_agent.example.id + user = "root" + dotfiles_uri = module.dotfiles.dotfiles_uri +} +``` + ## Setting a default dotfiles repository You can set a default dotfiles repository for all users by setting the `default_dotfiles_uri` variable: diff --git a/dotfiles/main.tf b/dotfiles/main.tf index ac7f7e6..950cb9b 100644 --- a/dotfiles/main.tf +++ b/dotfiles/main.tf @@ -16,10 +16,23 @@ variable "agent_id" { variable "default_dotfiles_uri" { type = string - description = "The default dotfiles URI if the workspace user does not provide one." + description = "The default dotfiles URI if the workspace user does not provide one" default = "" } +variable "dotfiles_uri" { + type = string + description = "The URL to a dotfiles repository. (optional, when set, the user isn't prompted for their dotfiles)" + + default = null +} + +variable "user" { + type = string + description = "The name of the user to apply the dotfiles to. (optional, applies to the current user by default)" + default = null +} + variable "coder_parameter_order" { type = number description = "The order determines the position of a template parameter in the UI/CLI presentation. The lowest order is shown first and parameters with equal order are sorted by name (ascending order)." @@ -27,6 +40,8 @@ variable "coder_parameter_order" { } data "coder_parameter" "dotfiles_uri" { + count = var.dotfiles_uri == null ? 1 : 0 + type = "string" name = "dotfiles_uri" display_name = "Dotfiles URL (optional)" @@ -37,14 +52,17 @@ data "coder_parameter" "dotfiles_uri" { icon = "/icon/dotfiles.svg" } -resource "coder_script" "personalize" { - agent_id = var.agent_id - script = <<-EOT - DOTFILES_URI="${data.coder_parameter.dotfiles_uri.value}" - if [ -n "$${DOTFILES_URI// }" ]; then - coder dotfiles "$DOTFILES_URI" -y 2>&1 | tee -a ~/.dotfiles.log - fi - EOT +locals { + dotfiles_uri = var.dotfiles_uri != null ? var.dotfiles_uri : data.coder_parameter.dotfiles_uri[0].value + user = var.user != null ? var.user : "" +} + +resource "coder_script" "dotfiles" { + agent_id = var.agent_id + script = templatefile("${path.module}/run.sh", { + DOTFILES_URI : local.dotfiles_uri, + DOTFILES_USER : local.user + }) display_name = "Dotfiles" icon = "/icon/dotfiles.svg" run_on_start = true @@ -52,5 +70,5 @@ resource "coder_script" "personalize" { output "dotfiles_uri" { description = "Dotfiles URI" - value = data.coder_parameter.dotfiles_uri.value + value = local.dotfiles_uri } diff --git a/dotfiles/run.sh b/dotfiles/run.sh new file mode 100644 index 0000000..9463439 --- /dev/null +++ b/dotfiles/run.sh @@ -0,0 +1,23 @@ +#!/usr/bin/env bash +DOTFILES_URI="${DOTFILES_URI}" +DOTFILES_USER="${DOTFILES_USER}" + +if [ -n "$${DOTFILES_URI// }" ]; then + if [ -z "$DOTFILES_USER" ]; then + DOTFILES_USER="$USER" + fi + + echo "✨ Applying dotfiles for user $DOTFILES_USER" + + if [ "$DOTFILES_USER" = "$USER" ]; then + coder dotfiles "$DOTFILES_URI" -y 2>&1 | tee ~/.dotfiles.log + else + # The `eval echo ~"$DOTFILES_USER"` part is used to dynamically get the home directory of the user, see https://superuser.com/a/484280 + # eval echo ~coder -> "/home/coder" + # eval echo ~root -> "/root" + + CODER_BIN=$(which coder) + DOTFILES_USER_HOME=$(eval echo ~"$DOTFILES_USER") + sudo -u "$DOTFILES_USER" sh -c "'$CODER_BIN' dotfiles '$DOTFILES_URI' -y 2>&1 | tee '$DOTFILES_USER_HOME'/.dotfiles.log" + fi +fi From d4db52017dfed0beeb2604dd60502c858f8a98fc Mon Sep 17 00:00:00 2001 From: nataindata Date: Fri, 26 Apr 2024 18:33:47 +0000 Subject: [PATCH 23/56] Updated Readme --- apache-airflow/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apache-airflow/README.md b/apache-airflow/README.md index bf8e315..194cceb 100644 --- a/apache-airflow/README.md +++ b/apache-airflow/README.md @@ -16,7 +16,7 @@ A module that adds Apache Airflow in your Coder template. module "airflow" { source = "registry.coder.com/modules/apache-airflow/coder" version = "1.0.13" - agent_id = coder_agent.example.id + agent_id = coder_agent.main.id } ``` From b2e87ef03813c9e558f0cccd98a4f2747f68461e Mon Sep 17 00:00:00 2001 From: Garrett Delfosse Date: Fri, 26 Apr 2024 18:34:15 +0000 Subject: [PATCH 24/56] feat: Add github-upload-public-key module --- github-upload-public-key/main.tf | 27 ++++++++++++++ github-upload-public-key/run.sh | 64 ++++++++++++++++++++++++++++++++ 2 files changed, 91 insertions(+) create mode 100644 github-upload-public-key/main.tf create mode 100755 github-upload-public-key/run.sh diff --git a/github-upload-public-key/main.tf b/github-upload-public-key/main.tf new file mode 100644 index 0000000..f06b055 --- /dev/null +++ b/github-upload-public-key/main.tf @@ -0,0 +1,27 @@ +terraform { + required_version = ">= 1.0" + + required_providers { + coder = { + source = "coder/coder" + version = ">= 0.12" + } + } +} + +variable "agent_id" { + type = string + description = "The ID of a Coder agent." +} + +resource "coder_script" "github_upload_public_key" { + agent_id = var.agent_id + script = templatefile("${path.module}/run.sh", { + CODER_OWNER_SESSION_TOKEN : data.coder_workspace.me.owner_session_token, + CODER_ACCESS_URL : data.coder_workspace.me.access_url + }) + display_name = "Github Upload Public Key" + icon = "/icon/github.svg" + run_on_start = true + start_blocks_login = true +} \ No newline at end of file diff --git a/github-upload-public-key/run.sh b/github-upload-public-key/run.sh new file mode 100755 index 0000000..8ea4a74 --- /dev/null +++ b/github-upload-public-key/run.sh @@ -0,0 +1,64 @@ +#!/usr/bin/env bash + +set -e + +CODER_ACCESS_URL="${CODER_ACCESS_URL}" +CODER_OWNER_SESSION_TOKEN="${CODER_OWNER_SESSION_TOKEN}" + +if [ -z "$CODER_ACCESS_URL" ]; then + echo "No coder access url specified!" + exit 1 +fi + +if [ -z "$CODER_OWNER_SESSION_TOKEN" ]; then + echo "No coder owner session token specified!" + exit 1 +fi + +if [ -z "$GITHUB_TOKEN" ]; then + echo "No GITHUB_TOKEN in the workspace environment!" + exit 1 +fi + +PUBLIC_KEY_NAME="$CODER_ACCESS_URL Workspaces" + +echo "Fetching Coder public SSH key..." +PUBLIC_KEY=$(curl "$CODER_ACCESS_URL/api/v2/users/me/gitsshkey" \ + -H 'accept: application/json' \ + -H "cookie: coder_session_token=$CODER_OWNER_SESSION_TOKEN" \ + --fail \ + -s \ + | jq -r '.public_key' +) + +if [ -z "$PUBLIC_KEY" ]; then + echo "No Coder public SSH key found!" + exit 1 +fi + +echo "Fetching GitHub public SSH keys..." +GITHUB_MATCH=$(curl \ + -H "Accept: application/vnd.github+json" \ + -H "Authorization: Bearer $GITHUB_TOKEN" \ + -H "X-GitHub-Api-Version: 2022-11-28" \ + --fail \ + -s \ + https://api.github.com/user/keys \ + | jq -r --arg PUBLIC_KEY "$PUBLIC_KEY" '.[] | select(.key == $PUBLIC_KEY) | .key' +) + +if [ "$PUBLIC_KEY" = "$GITHUB_MATCH" ]; then + echo "Coder public SSH key is already uploaded to GitHub!" + exit 0 +fi +echo "Coder public SSH key not found in GitHub keys!" +echo "Uploading Coder public SSH key to GitHub..." +curl -L \ + -X POST \ + -H "Accept: application/vnd.github+json" \ + -H "Authorization: Bearer $GITHUB_TOKEN" \ + -H "X-GitHub-Api-Version: 2022-11-28" \ + https://api.github.com/user/keys \ + -d "{\"title\":\"$PUBLIC_KEY_NAME\",\"key\":\"$PUBLIC_KEY\"}" + +echo "Coder public SSH key uploaded to GitHub!" \ No newline at end of file From c9e418aaf5993b878d6c00e99fdff12391b94bf4 Mon Sep 17 00:00:00 2001 From: Garrett Delfosse Date: Sat, 27 Apr 2024 18:42:08 +0000 Subject: [PATCH 25/56] improve status code handling and add readme --- .icons/github.svg | 1 + github-upload-public-key/README.md | 70 ++++++++++++++++++++++++++++++ github-upload-public-key/main.tf | 3 +- github-upload-public-key/run.sh | 55 +++++++++++++++++------ 4 files changed, 114 insertions(+), 15 deletions(-) create mode 100644 .icons/github.svg create mode 100644 github-upload-public-key/README.md diff --git a/.icons/github.svg b/.icons/github.svg new file mode 100644 index 0000000..d5e6491 --- /dev/null +++ b/.icons/github.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/github-upload-public-key/README.md b/github-upload-public-key/README.md new file mode 100644 index 0000000..9e4a7b1 --- /dev/null +++ b/github-upload-public-key/README.md @@ -0,0 +1,70 @@ +--- +display_name: Github Upload Public Key +description: Automates uploading Coder public key to Github so users don't have to. +icon: ../.icons/github.svg +maintainer_github: f0ssel +verified: false +tags: [helper] +--- + +# github-upload-public-key + + + +```tf +module "github-upload-public-key" { + source = "registry.coder.com/modules/github-upload-public-key/coder" + version = "1.0.13" + agent_id = coder_agent.example.id +} +``` + + + +## Examples + +### Example 1 + +Install the Dracula theme from [OpenVSX](https://open-vsx.org/): + +```tf +module "MODULE_NAME" { + source = "registry.coder.com/modules/MODULE_NAME/coder" + version = "1.0.2" + agent_id = coder_agent.example.id + extensions = [ + "dracula-theme.theme-dracula" + ] +} +``` + +Enter the `.` into the extensions array and code-server will automatically install on start. + +### Example 2 + +Configure VS Code's [settings.json](https://code.visualstudio.com/docs/getstarted/settings#_settingsjson) file: + +```tf +module "MODULE_NAME" { + source = "registry.coder.com/modules/MODULE_NAME/coder" + version = "1.0.2" + agent_id = coder_agent.example.id + extensions = [ "dracula-theme.theme-dracula" ] + settings = { + "workbench.colorTheme" = "Dracula" + } +} +``` + +### Example 3 + +Run code-server in the background, don't fetch it from GitHub: + +```tf +module "MODULE_NAME" { + source = "registry.coder.com/modules/MODULE_NAME/coder" + version = "1.0.2" + agent_id = coder_agent.example.id + offline = true +} +``` diff --git a/github-upload-public-key/main.tf b/github-upload-public-key/main.tf index f06b055..7728f45 100644 --- a/github-upload-public-key/main.tf +++ b/github-upload-public-key/main.tf @@ -18,10 +18,9 @@ resource "coder_script" "github_upload_public_key" { agent_id = var.agent_id script = templatefile("${path.module}/run.sh", { CODER_OWNER_SESSION_TOKEN : data.coder_workspace.me.owner_session_token, - CODER_ACCESS_URL : data.coder_workspace.me.access_url + CODER_ACCESS_URL : data.coder_workspace.me.access_url, }) display_name = "Github Upload Public Key" icon = "/icon/github.svg" run_on_start = true - start_blocks_login = true } \ No newline at end of file diff --git a/github-upload-public-key/run.sh b/github-upload-public-key/run.sh index 8ea4a74..e973824 100755 --- a/github-upload-public-key/run.sh +++ b/github-upload-public-key/run.sh @@ -17,19 +17,28 @@ fi if [ -z "$GITHUB_TOKEN" ]; then echo "No GITHUB_TOKEN in the workspace environment!" + echo "The user must be authenticated with Github before this script can be run." exit 1 fi -PUBLIC_KEY_NAME="$CODER_ACCESS_URL Workspaces" - echo "Fetching Coder public SSH key..." -PUBLIC_KEY=$(curl "$CODER_ACCESS_URL/api/v2/users/me/gitsshkey" \ +PUBLIC_KEY_RESPONSE=$(curl -L -s \ + -w "%{http_code}" \ -H 'accept: application/json' \ -H "cookie: coder_session_token=$CODER_OWNER_SESSION_TOKEN" \ - --fail \ - -s \ - | jq -r '.public_key' + "$CODER_ACCESS_URL/api/v2/users/me/gitsshkey" ) +PUBLIC_KEY_RESPONSE_STATUS=$(tail -n1 <<< "$PUBLIC_KEY_RESPONSE") +PUBLIC_KEY_BODY=$(sed \$d <<< "$PUBLIC_KEY_RESPONSE") + +if [ "$PUBLIC_KEY_RESPONSE_STATUS" -ne 200 ]; then + echo "Failed to fetch Coder public SSH key with status code $PUBLIC_KEY_RESPONSE_STATUS!" + echo "$PUBLIC_KEY_BODY" + exit 1 +fi + +PUBLIC_KEY=$(jq -r '.public_key' <<< "$PUBLIC_KEY_BODY") +echo "Coder public SSH key found!" if [ -z "$PUBLIC_KEY" ]; then echo "No Coder public SSH key found!" @@ -37,28 +46,48 @@ if [ -z "$PUBLIC_KEY" ]; then fi echo "Fetching GitHub public SSH keys..." -GITHUB_MATCH=$(curl \ +GITHUB_KEYS_RESPONSE=$(curl -L -s \ + -w "%{http_code}" \ -H "Accept: application/vnd.github+json" \ -H "Authorization: Bearer $GITHUB_TOKEN" \ -H "X-GitHub-Api-Version: 2022-11-28" \ - --fail \ - -s \ - https://api.github.com/user/keys \ - | jq -r --arg PUBLIC_KEY "$PUBLIC_KEY" '.[] | select(.key == $PUBLIC_KEY) | .key' + https://api.github.com/user/keys ) +GITHUB_KEYS_RESPONSE_STATUS=$(tail -n1 <<< "$GITHUB_KEYS_RESPONSE") +GITHUB_KEYS_RESPONSE_BODY=$(sed \$d <<< "$GITHUB_KEYS_RESPONSE") + +if [ "$GITHUB_KEYS_RESPONSE_STATUS" -ne 200 ]; then + echo "Failed to fetch Coder public SSH key with status code $GITHUB_KEYS_RESPONSE_STATUS!" + echo "$GITHUB_KEYS_RESPONSE_BODY" + exit 1 +fi + +GITHUB_MATCH=$(jq -r --arg PUBLIC_KEY "$PUBLIC_KEY" '.[] | select(.key == $PUBLIC_KEY) | .key' <<< "$GITHUB_KEYS_RESPONSE_BODY") if [ "$PUBLIC_KEY" = "$GITHUB_MATCH" ]; then echo "Coder public SSH key is already uploaded to GitHub!" exit 0 fi + echo "Coder public SSH key not found in GitHub keys!" echo "Uploading Coder public SSH key to GitHub..." -curl -L \ +CODER_PUBLIC_KEY_NAME="$CODER_ACCESS_URL Workspaces" +UPLOAD_RESPONSE=$(curl -L -s \ -X POST \ + -w "%{http_code}" \ -H "Accept: application/vnd.github+json" \ -H "Authorization: Bearer $GITHUB_TOKEN" \ -H "X-GitHub-Api-Version: 2022-11-28" \ https://api.github.com/user/keys \ - -d "{\"title\":\"$PUBLIC_KEY_NAME\",\"key\":\"$PUBLIC_KEY\"}" + -d "{\"title\":\"$CODER_PUBLIC_KEY_NAME\",\"key\":\"nah\"}" +) +UPLOAD_RESPONSE_STATUS=$(tail -n1 <<< "$UPLOAD_RESPONSE") +UPLOAD_RESPONSE_BODY=$(sed \$d <<< "$UPLOAD_RESPONSE") + +if [ "$UPLOAD_RESPONSE_STATUS" -ne 201 ]; then + echo "Failed to upload Coder public SSH key with status code $UPLOAD_RESPONSE_STATUS!" + echo "$UPLOAD_RESPONSE_BODY" + exit 1 +fi echo "Coder public SSH key uploaded to GitHub!" \ No newline at end of file From edc163b5f2bd8052cf13bfb5fa42c77575ed8768 Mon Sep 17 00:00:00 2001 From: Garrett Delfosse Date: Sat, 27 Apr 2024 18:43:38 +0000 Subject: [PATCH 26/56] fix testing --- github-upload-public-key/run.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/github-upload-public-key/run.sh b/github-upload-public-key/run.sh index e973824..68f30d7 100755 --- a/github-upload-public-key/run.sh +++ b/github-upload-public-key/run.sh @@ -79,7 +79,7 @@ UPLOAD_RESPONSE=$(curl -L -s \ -H "Authorization: Bearer $GITHUB_TOKEN" \ -H "X-GitHub-Api-Version: 2022-11-28" \ https://api.github.com/user/keys \ - -d "{\"title\":\"$CODER_PUBLIC_KEY_NAME\",\"key\":\"nah\"}" + -d "{\"title\":\"$CODER_PUBLIC_KEY_NAME\",\"key\":\"$PUBLIC_KEY\"}" ) UPLOAD_RESPONSE_STATUS=$(tail -n1 <<< "$UPLOAD_RESPONSE") UPLOAD_RESPONSE_BODY=$(sed \$d <<< "$UPLOAD_RESPONSE") From 1273378ca88af0984fc073c52536aba3b5d8d845 Mon Sep 17 00:00:00 2001 From: Garrett Delfosse Date: Sun, 28 Apr 2024 17:25:42 -0400 Subject: [PATCH 27/56] Update README.md --- github-upload-public-key/README.md | 49 +----------------------------- 1 file changed, 1 insertion(+), 48 deletions(-) diff --git a/github-upload-public-key/README.md b/github-upload-public-key/README.md index 9e4a7b1..208e36a 100644 --- a/github-upload-public-key/README.md +++ b/github-upload-public-key/README.md @@ -20,51 +20,4 @@ module "github-upload-public-key" { ``` - -## Examples - -### Example 1 - -Install the Dracula theme from [OpenVSX](https://open-vsx.org/): - -```tf -module "MODULE_NAME" { - source = "registry.coder.com/modules/MODULE_NAME/coder" - version = "1.0.2" - agent_id = coder_agent.example.id - extensions = [ - "dracula-theme.theme-dracula" - ] -} -``` - -Enter the `.` into the extensions array and code-server will automatically install on start. - -### Example 2 - -Configure VS Code's [settings.json](https://code.visualstudio.com/docs/getstarted/settings#_settingsjson) file: - -```tf -module "MODULE_NAME" { - source = "registry.coder.com/modules/MODULE_NAME/coder" - version = "1.0.2" - agent_id = coder_agent.example.id - extensions = [ "dracula-theme.theme-dracula" ] - settings = { - "workbench.colorTheme" = "Dracula" - } -} -``` - -### Example 3 - -Run code-server in the background, don't fetch it from GitHub: - -```tf -module "MODULE_NAME" { - source = "registry.coder.com/modules/MODULE_NAME/coder" - version = "1.0.2" - agent_id = coder_agent.example.id - offline = true -} -``` + From e8ce194ff702f3c272ba60725ec344a76ea26175 Mon Sep 17 00:00:00 2001 From: Garrett Delfosse Date: Tue, 30 Apr 2024 16:23:20 +0000 Subject: [PATCH 28/56] use code cli for token and update readme --- github-upload-public-key/README.md | 21 ++++++++++++++++----- github-upload-public-key/run.sh | 10 ++++++++-- 2 files changed, 24 insertions(+), 7 deletions(-) diff --git a/github-upload-public-key/README.md b/github-upload-public-key/README.md index 208e36a..4317e02 100644 --- a/github-upload-public-key/README.md +++ b/github-upload-public-key/README.md @@ -3,13 +3,13 @@ display_name: Github Upload Public Key description: Automates uploading Coder public key to Github so users don't have to. icon: ../.icons/github.svg maintainer_github: f0ssel -verified: false -tags: [helper] +verified: true +tags: [helper, git] --- # github-upload-public-key - +Templates that utilize Github External Auth can automatically ensure that the Coder public key is uploaded to Github so that users can clone repositories without needing to upload the public key themselves. ```tf module "github-upload-public-key" { @@ -19,5 +19,16 @@ module "github-upload-public-key" { } ``` - - +# Requirements + +Github External Auth must be enabled in the workspace for this module to work. The Github app that is configured for external auth must have both read and write permissions to "Git SSH keys" in order to upload the public key. Additionally, a Coder admin must also have the `admin:public_key` scope added to the external auth configuration of the Coder deployment. For example: + +``` +CODER_EXTERNAL_AUTH_0_ID="USER_DEFINED_ID" +CODER_EXTERNAL_AUTH_0_TYPE=github +CODER_EXTERNAL_AUTH_0_CLIENT_ID=xxxxxx +CODER_EXTERNAL_AUTH_0_CLIENT_SECRET=xxxxxxx +CODER_EXTERNAL_AUTH_0_SCOPES="repo,workflow,admin:public_key" +``` + +Note that the default scopes if not provided are `repo,workflow`. diff --git a/github-upload-public-key/run.sh b/github-upload-public-key/run.sh index 68f30d7..1e39ec2 100755 --- a/github-upload-public-key/run.sh +++ b/github-upload-public-key/run.sh @@ -15,11 +15,17 @@ if [ -z "$CODER_OWNER_SESSION_TOKEN" ]; then exit 1 fi +echo "Fetching GitHub token..." +GITHUB_TOKEN=$(coder external-auth access-token github) +if [ $? -ne 0 ]; then + echo "Failed to fetch GitHub token!" + exit 1 +fi if [ -z "$GITHUB_TOKEN" ]; then - echo "No GITHUB_TOKEN in the workspace environment!" - echo "The user must be authenticated with Github before this script can be run." + echo "No GitHub token found!" exit 1 fi +echo "GitHub token found!" echo "Fetching Coder public SSH key..." PUBLIC_KEY_RESPONSE=$(curl -L -s \ From 2e4378858433dd433beb5d9d8b02a83066f7b6e1 Mon Sep 17 00:00:00 2001 From: Garrett Delfosse Date: Tue, 30 Apr 2024 16:23:59 +0000 Subject: [PATCH 29/56] heading --- github-upload-public-key/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/github-upload-public-key/README.md b/github-upload-public-key/README.md index 4317e02..1a63d05 100644 --- a/github-upload-public-key/README.md +++ b/github-upload-public-key/README.md @@ -11,6 +11,8 @@ tags: [helper, git] Templates that utilize Github External Auth can automatically ensure that the Coder public key is uploaded to Github so that users can clone repositories without needing to upload the public key themselves. +# Example + ```tf module "github-upload-public-key" { source = "registry.coder.com/modules/github-upload-public-key/coder" From 428f386c4c3665ce14bb96b467a23a519351c576 Mon Sep 17 00:00:00 2001 From: Garrett Delfosse Date: Tue, 30 Apr 2024 16:29:10 +0000 Subject: [PATCH 30/56] add troubleshooting --- github-upload-public-key/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/github-upload-public-key/README.md b/github-upload-public-key/README.md index 1a63d05..e581fb6 100644 --- a/github-upload-public-key/README.md +++ b/github-upload-public-key/README.md @@ -33,4 +33,4 @@ CODER_EXTERNAL_AUTH_0_CLIENT_SECRET=xxxxxxx CODER_EXTERNAL_AUTH_0_SCOPES="repo,workflow,admin:public_key" ``` -Note that the default scopes if not provided are `repo,workflow`. +Note that the default scopes if not provided are `repo,workflow`. If the module is failing to complete after updating the external auth configuration, instruct users of the module to "Unlink" and "Link" their Github account in the External Auth user settings page to get the new scopes. \ No newline at end of file From 5a33af28ace261807232c50909cf6ea1d7646edd Mon Sep 17 00:00:00 2001 From: Garrett Delfosse Date: Tue, 30 Apr 2024 16:37:28 +0000 Subject: [PATCH 31/56] fmt --- github-upload-public-key/README.md | 4 +-- github-upload-public-key/main.tf | 8 +++--- github-upload-public-key/run.sh | 43 ++++++++++++++++-------------- 3 files changed, 29 insertions(+), 26 deletions(-) diff --git a/github-upload-public-key/README.md b/github-upload-public-key/README.md index e581fb6..98c27c1 100644 --- a/github-upload-public-key/README.md +++ b/github-upload-public-key/README.md @@ -11,7 +11,7 @@ tags: [helper, git] Templates that utilize Github External Auth can automatically ensure that the Coder public key is uploaded to Github so that users can clone repositories without needing to upload the public key themselves. -# Example +# Example ```tf module "github-upload-public-key" { @@ -33,4 +33,4 @@ CODER_EXTERNAL_AUTH_0_CLIENT_SECRET=xxxxxxx CODER_EXTERNAL_AUTH_0_SCOPES="repo,workflow,admin:public_key" ``` -Note that the default scopes if not provided are `repo,workflow`. If the module is failing to complete after updating the external auth configuration, instruct users of the module to "Unlink" and "Link" their Github account in the External Auth user settings page to get the new scopes. \ No newline at end of file +Note that the default scopes if not provided are `repo,workflow`. If the module is failing to complete after updating the external auth configuration, instruct users of the module to "Unlink" and "Link" their Github account in the External Auth user settings page to get the new scopes. diff --git a/github-upload-public-key/main.tf b/github-upload-public-key/main.tf index 7728f45..313d716 100644 --- a/github-upload-public-key/main.tf +++ b/github-upload-public-key/main.tf @@ -18,9 +18,9 @@ resource "coder_script" "github_upload_public_key" { agent_id = var.agent_id script = templatefile("${path.module}/run.sh", { CODER_OWNER_SESSION_TOKEN : data.coder_workspace.me.owner_session_token, - CODER_ACCESS_URL : data.coder_workspace.me.access_url, + CODER_ACCESS_URL : data.coder_workspace.me.access_url, }) - display_name = "Github Upload Public Key" - icon = "/icon/github.svg" - run_on_start = true + display_name = "Github Upload Public Key" + icon = "/icon/github.svg" + run_on_start = true } \ No newline at end of file diff --git a/github-upload-public-key/run.sh b/github-upload-public-key/run.sh index 1e39ec2..fa8e115 100755 --- a/github-upload-public-key/run.sh +++ b/github-upload-public-key/run.sh @@ -28,11 +28,12 @@ fi echo "GitHub token found!" echo "Fetching Coder public SSH key..." -PUBLIC_KEY_RESPONSE=$(curl -L -s \ - -w "%{http_code}" \ - -H 'accept: application/json' \ - -H "cookie: coder_session_token=$CODER_OWNER_SESSION_TOKEN" \ - "$CODER_ACCESS_URL/api/v2/users/me/gitsshkey" +PUBLIC_KEY_RESPONSE=$( + curl -L -s \ + -w "%{http_code}" \ + -H 'accept: application/json' \ + -H "cookie: coder_session_token=$CODER_OWNER_SESSION_TOKEN" \ + "$CODER_ACCESS_URL/api/v2/users/me/gitsshkey" ) PUBLIC_KEY_RESPONSE_STATUS=$(tail -n1 <<< "$PUBLIC_KEY_RESPONSE") PUBLIC_KEY_BODY=$(sed \$d <<< "$PUBLIC_KEY_RESPONSE") @@ -52,12 +53,13 @@ if [ -z "$PUBLIC_KEY" ]; then fi echo "Fetching GitHub public SSH keys..." -GITHUB_KEYS_RESPONSE=$(curl -L -s \ - -w "%{http_code}" \ - -H "Accept: application/vnd.github+json" \ - -H "Authorization: Bearer $GITHUB_TOKEN" \ - -H "X-GitHub-Api-Version: 2022-11-28" \ - https://api.github.com/user/keys +GITHUB_KEYS_RESPONSE=$( + curl -L -s \ + -w "%{http_code}" \ + -H "Accept: application/vnd.github+json" \ + -H "Authorization: Bearer $GITHUB_TOKEN" \ + -H "X-GitHub-Api-Version: 2022-11-28" \ + https://api.github.com/user/keys ) GITHUB_KEYS_RESPONSE_STATUS=$(tail -n1 <<< "$GITHUB_KEYS_RESPONSE") GITHUB_KEYS_RESPONSE_BODY=$(sed \$d <<< "$GITHUB_KEYS_RESPONSE") @@ -78,14 +80,15 @@ fi echo "Coder public SSH key not found in GitHub keys!" echo "Uploading Coder public SSH key to GitHub..." CODER_PUBLIC_KEY_NAME="$CODER_ACCESS_URL Workspaces" -UPLOAD_RESPONSE=$(curl -L -s \ - -X POST \ - -w "%{http_code}" \ - -H "Accept: application/vnd.github+json" \ - -H "Authorization: Bearer $GITHUB_TOKEN" \ - -H "X-GitHub-Api-Version: 2022-11-28" \ - https://api.github.com/user/keys \ - -d "{\"title\":\"$CODER_PUBLIC_KEY_NAME\",\"key\":\"$PUBLIC_KEY\"}" +UPLOAD_RESPONSE=$( + curl -L -s \ + -X POST \ + -w "%{http_code}" \ + -H "Accept: application/vnd.github+json" \ + -H "Authorization: Bearer $GITHUB_TOKEN" \ + -H "X-GitHub-Api-Version: 2022-11-28" \ + https://api.github.com/user/keys \ + -d "{\"title\":\"$CODER_PUBLIC_KEY_NAME\",\"key\":\"$PUBLIC_KEY\"}" ) UPLOAD_RESPONSE_STATUS=$(tail -n1 <<< "$UPLOAD_RESPONSE") UPLOAD_RESPONSE_BODY=$(sed \$d <<< "$UPLOAD_RESPONSE") @@ -96,4 +99,4 @@ if [ "$UPLOAD_RESPONSE_STATUS" -ne 201 ]; then exit 1 fi -echo "Coder public SSH key uploaded to GitHub!" \ No newline at end of file +echo "Coder public SSH key uploaded to GitHub!" From cff60c4a7ed1c9b8d1504923c1deac9ce5160cd0 Mon Sep 17 00:00:00 2001 From: Garrett Delfosse Date: Tue, 30 Apr 2024 16:53:47 +0000 Subject: [PATCH 32/56] add auth id var --- github-upload-public-key/README.md | 5 +++++ github-upload-public-key/main.tf | 7 +++++++ github-upload-public-key/run.sh | 8 +++++++- 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/github-upload-public-key/README.md b/github-upload-public-key/README.md index 98c27c1..21d0287 100644 --- a/github-upload-public-key/README.md +++ b/github-upload-public-key/README.md @@ -14,10 +14,15 @@ Templates that utilize Github External Auth can automatically ensure that the Co # Example ```tf +data "coder_external_auth" "github" { + id = "myauthid" +} + module "github-upload-public-key" { source = "registry.coder.com/modules/github-upload-public-key/coder" version = "1.0.13" agent_id = coder_agent.example.id + external_auth_id = data.coder_external_auth.github.id } ``` diff --git a/github-upload-public-key/main.tf b/github-upload-public-key/main.tf index 313d716..e370357 100644 --- a/github-upload-public-key/main.tf +++ b/github-upload-public-key/main.tf @@ -14,11 +14,18 @@ variable "agent_id" { description = "The ID of a Coder agent." } +variable "external_auth_id" { + type = string + description = "The ID of the GitHub external auth." + default = "github" +} + resource "coder_script" "github_upload_public_key" { agent_id = var.agent_id script = templatefile("${path.module}/run.sh", { CODER_OWNER_SESSION_TOKEN : data.coder_workspace.me.owner_session_token, CODER_ACCESS_URL : data.coder_workspace.me.access_url, + GITHUB_EXTERNAL_AUTH_ID : var.external_auth_id, }) display_name = "Github Upload Public Key" icon = "/icon/github.svg" diff --git a/github-upload-public-key/run.sh b/github-upload-public-key/run.sh index fa8e115..b31a9d3 100755 --- a/github-upload-public-key/run.sh +++ b/github-upload-public-key/run.sh @@ -4,6 +4,7 @@ set -e CODER_ACCESS_URL="${CODER_ACCESS_URL}" CODER_OWNER_SESSION_TOKEN="${CODER_OWNER_SESSION_TOKEN}" +GITHUB_EXTERNAL_AUTH_ID="${GITHUB_EXTERNAL_AUTH_ID}" if [ -z "$CODER_ACCESS_URL" ]; then echo "No coder access url specified!" @@ -15,8 +16,13 @@ if [ -z "$CODER_OWNER_SESSION_TOKEN" ]; then exit 1 fi +if [ -z "$GITHUB_EXTERNAL_AUTH_ID" ]; then + echo "No GitHub external auth id specified!" + exit 1 +fi + echo "Fetching GitHub token..." -GITHUB_TOKEN=$(coder external-auth access-token github) +GITHUB_TOKEN=$(coder external-auth access-token $GITHUB_EXTERNAL_AUTH_ID) if [ $? -ne 0 ]; then echo "Failed to fetch GitHub token!" exit 1 From 5030fcb9887c82db58b4bd052b833feb621ddf0a Mon Sep 17 00:00:00 2001 From: Garrett Delfosse Date: Tue, 30 Apr 2024 16:59:20 +0000 Subject: [PATCH 33/56] add coder workspace me --- github-upload-public-key/main.tf | 2 ++ 1 file changed, 2 insertions(+) diff --git a/github-upload-public-key/main.tf b/github-upload-public-key/main.tf index e370357..cd22c1f 100644 --- a/github-upload-public-key/main.tf +++ b/github-upload-public-key/main.tf @@ -20,6 +20,8 @@ variable "external_auth_id" { default = "github" } +data "coder_workspace" "me" {} + resource "coder_script" "github_upload_public_key" { agent_id = var.agent_id script = templatefile("${path.module}/run.sh", { From a45706ad3ad64ded3ca67e2670b85c78cc97d32b Mon Sep 17 00:00:00 2001 From: Garrett Delfosse Date: Tue, 30 Apr 2024 17:03:21 +0000 Subject: [PATCH 34/56] fix Invalid template control keyword --- github-upload-public-key/run.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/github-upload-public-key/run.sh b/github-upload-public-key/run.sh index b31a9d3..f7c1e16 100755 --- a/github-upload-public-key/run.sh +++ b/github-upload-public-key/run.sh @@ -36,7 +36,7 @@ echo "GitHub token found!" echo "Fetching Coder public SSH key..." PUBLIC_KEY_RESPONSE=$( curl -L -s \ - -w "%{http_code}" \ + -w "%%{http_code}" \ -H 'accept: application/json' \ -H "cookie: coder_session_token=$CODER_OWNER_SESSION_TOKEN" \ "$CODER_ACCESS_URL/api/v2/users/me/gitsshkey" @@ -61,7 +61,7 @@ fi echo "Fetching GitHub public SSH keys..." GITHUB_KEYS_RESPONSE=$( curl -L -s \ - -w "%{http_code}" \ + -w "%%{http_code}" \ -H "Accept: application/vnd.github+json" \ -H "Authorization: Bearer $GITHUB_TOKEN" \ -H "X-GitHub-Api-Version: 2022-11-28" \ @@ -89,7 +89,7 @@ CODER_PUBLIC_KEY_NAME="$CODER_ACCESS_URL Workspaces" UPLOAD_RESPONSE=$( curl -L -s \ -X POST \ - -w "%{http_code}" \ + -w "%%{http_code}" \ -H "Accept: application/vnd.github+json" \ -H "Authorization: Bearer $GITHUB_TOKEN" \ -H "X-GitHub-Api-Version: 2022-11-28" \ From 180e10c3eec1891ef7119973b46ec3071a271e4b Mon Sep 17 00:00:00 2001 From: Garrett Delfosse Date: Tue, 30 Apr 2024 17:08:48 +0000 Subject: [PATCH 35/56] require curl and jq --- github-upload-public-key/README.md | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/github-upload-public-key/README.md b/github-upload-public-key/README.md index 21d0287..60525d9 100644 --- a/github-upload-public-key/README.md +++ b/github-upload-public-key/README.md @@ -11,23 +11,18 @@ tags: [helper, git] Templates that utilize Github External Auth can automatically ensure that the Coder public key is uploaded to Github so that users can clone repositories without needing to upload the public key themselves. -# Example - ```tf -data "coder_external_auth" "github" { - id = "myauthid" -} - module "github-upload-public-key" { source = "registry.coder.com/modules/github-upload-public-key/coder" version = "1.0.13" agent_id = coder_agent.example.id - external_auth_id = data.coder_external_auth.github.id } ``` # Requirements +This module requires `curl` and `jq` to be installed inside your workspace. + Github External Auth must be enabled in the workspace for this module to work. The Github app that is configured for external auth must have both read and write permissions to "Git SSH keys" in order to upload the public key. Additionally, a Coder admin must also have the `admin:public_key` scope added to the external auth configuration of the Coder deployment. For example: ``` @@ -39,3 +34,20 @@ CODER_EXTERNAL_AUTH_0_SCOPES="repo,workflow,admin:public_key" ``` Note that the default scopes if not provided are `repo,workflow`. If the module is failing to complete after updating the external auth configuration, instruct users of the module to "Unlink" and "Link" their Github account in the External Auth user settings page to get the new scopes. + +# Example + +Using a coder github external auth with a non-default id: (default is `github`) + +```tf +data "coder_external_auth" "github" { + id = "myauthid" +} + +module "github-upload-public-key" { + source = "registry.coder.com/modules/github-upload-public-key/coder" + version = "1.0.13" + agent_id = coder_agent.example.id + external_auth_id = data.coder_external_auth.github.id +} +``` \ No newline at end of file From 46bf422d619d6f90327bf04e5b5b755ee4fdb3c8 Mon Sep 17 00:00:00 2001 From: Garrett Delfosse Date: Tue, 30 Apr 2024 17:14:40 +0000 Subject: [PATCH 36/56] maintainer --- github-upload-public-key/README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/github-upload-public-key/README.md b/github-upload-public-key/README.md index 60525d9..d776619 100644 --- a/github-upload-public-key/README.md +++ b/github-upload-public-key/README.md @@ -2,7 +2,7 @@ display_name: Github Upload Public Key description: Automates uploading Coder public key to Github so users don't have to. icon: ../.icons/github.svg -maintainer_github: f0ssel +maintainer_github: coder verified: true tags: [helper, git] --- @@ -45,9 +45,9 @@ data "coder_external_auth" "github" { } module "github-upload-public-key" { - source = "registry.coder.com/modules/github-upload-public-key/coder" - version = "1.0.13" - agent_id = coder_agent.example.id + source = "registry.coder.com/modules/github-upload-public-key/coder" + version = "1.0.13" + agent_id = coder_agent.example.id external_auth_id = data.coder_external_auth.github.id } -``` \ No newline at end of file +``` From 36fa871e7ba1354f46b3256f573b8147504fc1f4 Mon Sep 17 00:00:00 2001 From: Garrett Delfosse Date: Wed, 1 May 2024 15:19:50 -0400 Subject: [PATCH 37/56] add tests --- CONTRIBUTING.md | 2 + github-upload-public-key/main.test.ts | 89 +++++++++++++++++++++++++++ github-upload-public-key/main.tf | 26 +++++++- github-upload-public-key/run.sh | 22 ++++--- slackme/main.test.ts | 10 +-- test.ts | 11 +++- 6 files changed, 139 insertions(+), 21 deletions(-) create mode 100644 github-upload-public-key/main.test.ts diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 6aa77cf..198eede 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -10,6 +10,8 @@ To create a new module, clone this repository and run: A suite of test-helpers exists to run `terraform apply` on modules with variables, and test script output against containers. +The testing suite must be able to run docker containers with the `--network=host` flag, which typically requires running the tests on linux as this flag does not apply to Docker Desktop for MacOS and Windows. MacOS users can work around this by using something like [Orbstack](https://orbstack.dev/) instead of Docker Desktop. + Reference existing `*.test.ts` files for implementation. ```shell diff --git a/github-upload-public-key/main.test.ts b/github-upload-public-key/main.test.ts new file mode 100644 index 0000000..8b6dca7 --- /dev/null +++ b/github-upload-public-key/main.test.ts @@ -0,0 +1,89 @@ +import { describe, expect, it } from "bun:test"; +import { createJSONResponse, execContainer, findResourceInstance, runContainer, runTerraformApply, runTerraformInit, testRequiredVariables, writeCoder } from "../test"; +import { Server, serve } from "bun"; + +describe("github-upload-public-key", async () => { + await runTerraformInit(import.meta.dir); + + testRequiredVariables(import.meta.dir, { + agent_id: "foo", + }); + + it("creates new key if one does not exist", async () => { + const { instance, id } = await setupContainer(); + await writeCoder(id, "echo foo"); + let exec = await execContainer(id, ["bash", "-c", instance.script]); + expect(exec.stdout).toContain("Coder public SSH key uploaded to GitHub!") + expect(exec.exitCode).toBe(0); + }); + + it("does nothing if one already exists", async () => { + const { instance, id } = await setupContainer(); + await writeCoder(id, "echo findkey"); + let exec = await execContainer(id, ["bash", "-c", instance.script]); + expect(exec.stdout).toContain("Coder public SSH key is already uploaded to GitHub!") + expect(exec.exitCode).toBe(0); + }); +}); + +const setupContainer = async ( + image = "lorello/alpine-bash", + vars: Record = {}, + ) => { + const server = await setupServer(); + const state = await runTerraformApply(import.meta.dir, { + agent_id: "foo", + // trim the trailing slash on the URL + access_url: server.url.toString().slice(0, -1), + owner_session_token: "bar", + github_api_url: server.url.toString().slice(0, -1), + ...vars, + }); + const instance = findResourceInstance(state, "coder_script"); + const id = await runContainer(image); + return { id, instance }; +}; + +const setupServer = async (): Promise => { + let url: URL; + const fakeSlackHost = serve({ + fetch: (req) => { + url = new URL(req.url); + if (url.pathname === "/api/v2/users/me/gitsshkey") { + return createJSONResponse({ + public_key: "exists", + }); + } + + if (url.pathname === "/user/keys") { + if (req.method === "POST") { + return createJSONResponse({ + key: "created", + }, 201); + } + + // case: key already exists + if (req.headers.get("Authorization") == "Bearer findkey") { + return createJSONResponse([{ + key: "foo", + }, { + key: "exists", + }]); + } + + // case: key does not exist + return createJSONResponse([{ + key: "foo", + }]); + } + + + return createJSONResponse({ + error: "not_found" + }, 404); + }, + port: 0, + }); + + return fakeSlackHost; +} \ No newline at end of file diff --git a/github-upload-public-key/main.tf b/github-upload-public-key/main.tf index cd22c1f..7d18ddb 100644 --- a/github-upload-public-key/main.tf +++ b/github-upload-public-key/main.tf @@ -20,14 +20,34 @@ variable "external_auth_id" { default = "github" } +variable "github_api_url" { + type = string + description = "The URL of the GitHub instance." + default = "https://api.github.com" +} + +// Optional variables mostly for testing purposes, will normally come from data.coder_workspace.me +variable "access_url" { + type = string + description = "The access URL of the workspace." + default = "" +} + +variable "owner_session_token" { + type = string + description = "The owner session token of the workspace." + default = "" +} + data "coder_workspace" "me" {} resource "coder_script" "github_upload_public_key" { agent_id = var.agent_id script = templatefile("${path.module}/run.sh", { - CODER_OWNER_SESSION_TOKEN : data.coder_workspace.me.owner_session_token, - CODER_ACCESS_URL : data.coder_workspace.me.access_url, - GITHUB_EXTERNAL_AUTH_ID : var.external_auth_id, + CODER_OWNER_SESSION_TOKEN : var.owner_session_token != "" ? var.owner_session_token : data.coder_workspace.me.owner_session_token, + CODER_ACCESS_URL : var.access_url != "" ? var.access_url : data.coder_workspace.me.access_url, + CODER_EXTERNAL_AUTH_ID : var.external_auth_id, + GITHUB_API_URL : var.github_api_url, }) display_name = "Github Upload Public Key" icon = "/icon/github.svg" diff --git a/github-upload-public-key/run.sh b/github-upload-public-key/run.sh index f7c1e16..6dabefa 100755 --- a/github-upload-public-key/run.sh +++ b/github-upload-public-key/run.sh @@ -4,7 +4,8 @@ set -e CODER_ACCESS_URL="${CODER_ACCESS_URL}" CODER_OWNER_SESSION_TOKEN="${CODER_OWNER_SESSION_TOKEN}" -GITHUB_EXTERNAL_AUTH_ID="${GITHUB_EXTERNAL_AUTH_ID}" +CODER_EXTERNAL_AUTH_ID="${CODER_EXTERNAL_AUTH_ID}" +GITHUB_API_URL="${GITHUB_API_URL}" if [ -z "$CODER_ACCESS_URL" ]; then echo "No coder access url specified!" @@ -16,13 +17,18 @@ if [ -z "$CODER_OWNER_SESSION_TOKEN" ]; then exit 1 fi -if [ -z "$GITHUB_EXTERNAL_AUTH_ID" ]; then +if [ -z "$CODER_EXTERNAL_AUTH_ID" ]; then echo "No GitHub external auth id specified!" exit 1 fi +if [ -z "$GITHUB_API_URL" ]; then + echo "No GitHub API URL specified!" + exit 1 +fi + echo "Fetching GitHub token..." -GITHUB_TOKEN=$(coder external-auth access-token $GITHUB_EXTERNAL_AUTH_ID) +GITHUB_TOKEN=$(coder external-auth access-token $CODER_EXTERNAL_AUTH_ID) if [ $? -ne 0 ]; then echo "Failed to fetch GitHub token!" exit 1 @@ -36,7 +42,7 @@ echo "GitHub token found!" echo "Fetching Coder public SSH key..." PUBLIC_KEY_RESPONSE=$( curl -L -s \ - -w "%%{http_code}" \ + -w "\n%%{http_code}" \ -H 'accept: application/json' \ -H "cookie: coder_session_token=$CODER_OWNER_SESSION_TOKEN" \ "$CODER_ACCESS_URL/api/v2/users/me/gitsshkey" @@ -61,11 +67,11 @@ fi echo "Fetching GitHub public SSH keys..." GITHUB_KEYS_RESPONSE=$( curl -L -s \ - -w "%%{http_code}" \ + -w "\n%%{http_code}" \ -H "Accept: application/vnd.github+json" \ -H "Authorization: Bearer $GITHUB_TOKEN" \ -H "X-GitHub-Api-Version: 2022-11-28" \ - https://api.github.com/user/keys + $GITHUB_API_URL/user/keys ) GITHUB_KEYS_RESPONSE_STATUS=$(tail -n1 <<< "$GITHUB_KEYS_RESPONSE") GITHUB_KEYS_RESPONSE_BODY=$(sed \$d <<< "$GITHUB_KEYS_RESPONSE") @@ -89,11 +95,11 @@ CODER_PUBLIC_KEY_NAME="$CODER_ACCESS_URL Workspaces" UPLOAD_RESPONSE=$( curl -L -s \ -X POST \ - -w "%%{http_code}" \ + -w "\n%%{http_code}" \ -H "Accept: application/vnd.github+json" \ -H "Authorization: Bearer $GITHUB_TOKEN" \ -H "X-GitHub-Api-Version: 2022-11-28" \ - https://api.github.com/user/keys \ + $GITHUB_API_URL/user/keys \ -d "{\"title\":\"$CODER_PUBLIC_KEY_NAME\",\"key\":\"$PUBLIC_KEY\"}" ) UPLOAD_RESPONSE_STATUS=$(tail -n1 <<< "$UPLOAD_RESPONSE") diff --git a/slackme/main.test.ts b/slackme/main.test.ts index 53c6b2e..402a690 100644 --- a/slackme/main.test.ts +++ b/slackme/main.test.ts @@ -8,6 +8,7 @@ import { runTerraformApply, runTerraformInit, testRequiredVariables, + writeCoder, } from "../test"; describe("slackme", async () => { @@ -119,15 +120,6 @@ const setupContainer = async ( return { id, instance }; }; -const writeCoder = async (id: string, script: string) => { - const exec = await execContainer(id, [ - "sh", - "-c", - `echo '${script}' > /usr/bin/coder && chmod +x /usr/bin/coder`, - ]); - expect(exec.exitCode).toBe(0); -}; - const assertSlackMessage = async (opts: { command: string; format?: string; diff --git a/test.ts b/test.ts index 97416cf..c2eb65e 100644 --- a/test.ts +++ b/test.ts @@ -222,4 +222,13 @@ export const createJSONResponse = (obj: object, statusCode = 200): Response => { }, status: statusCode, }) -} \ No newline at end of file +} + +export const writeCoder = async (id: string, script: string) => { + const exec = await execContainer(id, [ + "sh", + "-c", + `echo '${script}' > /usr/bin/coder && chmod +x /usr/bin/coder`, + ]); + expect(exec.exitCode).toBe(0); +}; From aced7547bce2304f83802b6d51bfc2932badcfef Mon Sep 17 00:00:00 2001 From: Garrett Delfosse Date: Wed, 1 May 2024 15:20:22 -0400 Subject: [PATCH 38/56] fmt --- CONTRIBUTING.md | 2 +- github-upload-public-key/main.test.ts | 129 +++++++++++++++----------- github-upload-public-key/main.tf | 2 +- 3 files changed, 77 insertions(+), 56 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 198eede..749791f 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -10,7 +10,7 @@ To create a new module, clone this repository and run: A suite of test-helpers exists to run `terraform apply` on modules with variables, and test script output against containers. -The testing suite must be able to run docker containers with the `--network=host` flag, which typically requires running the tests on linux as this flag does not apply to Docker Desktop for MacOS and Windows. MacOS users can work around this by using something like [Orbstack](https://orbstack.dev/) instead of Docker Desktop. +The testing suite must be able to run docker containers with the `--network=host` flag, which typically requires running the tests on linux as this flag does not apply to Docker Desktop for MacOS and Windows. MacOS users can work around this by using something like [Orbstack](https://orbstack.dev/) instead of Docker Desktop. Reference existing `*.test.ts` files for implementation. diff --git a/github-upload-public-key/main.test.ts b/github-upload-public-key/main.test.ts index 8b6dca7..b4e83a5 100644 --- a/github-upload-public-key/main.test.ts +++ b/github-upload-public-key/main.test.ts @@ -1,5 +1,14 @@ import { describe, expect, it } from "bun:test"; -import { createJSONResponse, execContainer, findResourceInstance, runContainer, runTerraformApply, runTerraformInit, testRequiredVariables, writeCoder } from "../test"; +import { + createJSONResponse, + execContainer, + findResourceInstance, + runContainer, + runTerraformApply, + runTerraformInit, + testRequiredVariables, + writeCoder, +} from "../test"; import { Server, serve } from "bun"; describe("github-upload-public-key", async () => { @@ -13,7 +22,7 @@ describe("github-upload-public-key", async () => { const { instance, id } = await setupContainer(); await writeCoder(id, "echo foo"); let exec = await execContainer(id, ["bash", "-c", instance.script]); - expect(exec.stdout).toContain("Coder public SSH key uploaded to GitHub!") + expect(exec.stdout).toContain("Coder public SSH key uploaded to GitHub!"); expect(exec.exitCode).toBe(0); }); @@ -21,69 +30,81 @@ describe("github-upload-public-key", async () => { const { instance, id } = await setupContainer(); await writeCoder(id, "echo findkey"); let exec = await execContainer(id, ["bash", "-c", instance.script]); - expect(exec.stdout).toContain("Coder public SSH key is already uploaded to GitHub!") + expect(exec.stdout).toContain( + "Coder public SSH key is already uploaded to GitHub!", + ); expect(exec.exitCode).toBe(0); }); }); const setupContainer = async ( - image = "lorello/alpine-bash", - vars: Record = {}, - ) => { - const server = await setupServer(); - const state = await runTerraformApply(import.meta.dir, { - agent_id: "foo", - // trim the trailing slash on the URL - access_url: server.url.toString().slice(0, -1), - owner_session_token: "bar", - github_api_url: server.url.toString().slice(0, -1), - ...vars, - }); - const instance = findResourceInstance(state, "coder_script"); - const id = await runContainer(image); - return { id, instance }; + image = "lorello/alpine-bash", + vars: Record = {}, +) => { + const server = await setupServer(); + const state = await runTerraformApply(import.meta.dir, { + agent_id: "foo", + // trim the trailing slash on the URL + access_url: server.url.toString().slice(0, -1), + owner_session_token: "bar", + github_api_url: server.url.toString().slice(0, -1), + ...vars, + }); + const instance = findResourceInstance(state, "coder_script"); + const id = await runContainer(image); + return { id, instance }; }; const setupServer = async (): Promise => { - let url: URL; - const fakeSlackHost = serve({ - fetch: (req) => { - url = new URL(req.url); - if (url.pathname === "/api/v2/users/me/gitsshkey") { - return createJSONResponse({ - public_key: "exists", - }); - } - - if (url.pathname === "/user/keys") { - if (req.method === "POST") { - return createJSONResponse({ - key: "created", - }, 201); - } + let url: URL; + const fakeSlackHost = serve({ + fetch: (req) => { + url = new URL(req.url); + if (url.pathname === "/api/v2/users/me/gitsshkey") { + return createJSONResponse({ + public_key: "exists", + }); + } - // case: key already exists - if (req.headers.get("Authorization") == "Bearer findkey") { - return createJSONResponse([{ - key: "foo", - }, { - key: "exists", - }]); - } + if (url.pathname === "/user/keys") { + if (req.method === "POST") { + return createJSONResponse( + { + key: "created", + }, + 201, + ); + } - // case: key does not exist - return createJSONResponse([{ - key: "foo", - }]); + // case: key already exists + if (req.headers.get("Authorization") == "Bearer findkey") { + return createJSONResponse([ + { + key: "foo", + }, + { + key: "exists", + }, + ]); } + // case: key does not exist + return createJSONResponse([ + { + key: "foo", + }, + ]); + } - return createJSONResponse({ - error: "not_found" - }, 404); - }, - port: 0, - }); + return createJSONResponse( + { + error: "not_found", + }, + 404, + ); + }, + port: 0, + }); - return fakeSlackHost; -} \ No newline at end of file + return fakeSlackHost; +}; diff --git a/github-upload-public-key/main.tf b/github-upload-public-key/main.tf index 7d18ddb..5c6501e 100644 --- a/github-upload-public-key/main.tf +++ b/github-upload-public-key/main.tf @@ -23,7 +23,7 @@ variable "external_auth_id" { variable "github_api_url" { type = string description = "The URL of the GitHub instance." - default = "https://api.github.com" + default = "https://api.github.com" } // Optional variables mostly for testing purposes, will normally come from data.coder_workspace.me From 67fef297da32005afa624101a1c6c0afad0d5323 Mon Sep 17 00:00:00 2001 From: Garrett Delfosse Date: Wed, 1 May 2024 15:43:26 -0400 Subject: [PATCH 39/56] increase test timeout --- github-upload-public-key/main.test.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/github-upload-public-key/main.test.ts b/github-upload-public-key/main.test.ts index b4e83a5..5c71464 100644 --- a/github-upload-public-key/main.test.ts +++ b/github-upload-public-key/main.test.ts @@ -24,10 +24,12 @@ describe("github-upload-public-key", async () => { let exec = await execContainer(id, ["bash", "-c", instance.script]); expect(exec.stdout).toContain("Coder public SSH key uploaded to GitHub!"); expect(exec.exitCode).toBe(0); - }); + // we need to increase timeout to pull the container + }, 10000); it("does nothing if one already exists", async () => { const { instance, id } = await setupContainer(); + // use keyword to make server return a existing key await writeCoder(id, "echo findkey"); let exec = await execContainer(id, ["bash", "-c", instance.script]); expect(exec.stdout).toContain( From a239212f0b7afad4903b34eba9febf1f6e9f8718 Mon Sep 17 00:00:00 2001 From: Garrett Delfosse Date: Wed, 1 May 2024 15:45:25 -0400 Subject: [PATCH 40/56] fmt and increase timeout again --- github-upload-public-key/main.test.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/github-upload-public-key/main.test.ts b/github-upload-public-key/main.test.ts index 5c71464..45e1b5a 100644 --- a/github-upload-public-key/main.test.ts +++ b/github-upload-public-key/main.test.ts @@ -24,8 +24,8 @@ describe("github-upload-public-key", async () => { let exec = await execContainer(id, ["bash", "-c", instance.script]); expect(exec.stdout).toContain("Coder public SSH key uploaded to GitHub!"); expect(exec.exitCode).toBe(0); - // we need to increase timeout to pull the container - }, 10000); + // we need to increase timeout to pull the container + }, 15000); it("does nothing if one already exists", async () => { const { instance, id } = await setupContainer(); From daed80353076d51dee516922350b2d4f375b1358 Mon Sep 17 00:00:00 2001 From: Garrett Delfosse Date: Thu, 2 May 2024 12:50:36 -0400 Subject: [PATCH 41/56] pr review --- github-upload-public-key/main.test.ts | 32 ++++++++++++++++++------- github-upload-public-key/main.tf | 17 ++------------ github-upload-public-key/run.sh | 34 ++++++++------------------- 3 files changed, 35 insertions(+), 48 deletions(-) diff --git a/github-upload-public-key/main.test.ts b/github-upload-public-key/main.test.ts index 45e1b5a..316f50f 100644 --- a/github-upload-public-key/main.test.ts +++ b/github-upload-public-key/main.test.ts @@ -19,19 +19,37 @@ describe("github-upload-public-key", async () => { }); it("creates new key if one does not exist", async () => { - const { instance, id } = await setupContainer(); + const { instance, id, server } = await setupContainer(); await writeCoder(id, "echo foo"); - let exec = await execContainer(id, ["bash", "-c", instance.script]); + let exec = await execContainer(id, [ + "env", + "CODER_ACCESS_URL=" + server.url.toString().slice(0, -1), + "GITHUB_API_URL=" + server.url.toString().slice(0, -1), + "CODER_OWNER_SESSION_TOKEN=foo", + "CODER_EXTERNAL_AUTH_ID=github", + "bash", + "-c", + instance.script, + ]); expect(exec.stdout).toContain("Coder public SSH key uploaded to GitHub!"); expect(exec.exitCode).toBe(0); // we need to increase timeout to pull the container }, 15000); it("does nothing if one already exists", async () => { - const { instance, id } = await setupContainer(); + const { instance, id, server } = await setupContainer(); // use keyword to make server return a existing key await writeCoder(id, "echo findkey"); - let exec = await execContainer(id, ["bash", "-c", instance.script]); + let exec = await execContainer(id, [ + "env", + "CODER_ACCESS_URL=" + server.url.toString().slice(0, -1), + "GITHUB_API_URL=" + server.url.toString().slice(0, -1), + "CODER_OWNER_SESSION_TOKEN=foo", + "CODER_EXTERNAL_AUTH_ID=github", + "bash", + "-c", + instance.script, + ]); expect(exec.stdout).toContain( "Coder public SSH key is already uploaded to GitHub!", ); @@ -46,15 +64,11 @@ const setupContainer = async ( const server = await setupServer(); const state = await runTerraformApply(import.meta.dir, { agent_id: "foo", - // trim the trailing slash on the URL - access_url: server.url.toString().slice(0, -1), - owner_session_token: "bar", - github_api_url: server.url.toString().slice(0, -1), ...vars, }); const instance = findResourceInstance(state, "coder_script"); const id = await runContainer(image); - return { id, instance }; + return { id, instance, server }; }; const setupServer = async (): Promise => { diff --git a/github-upload-public-key/main.tf b/github-upload-public-key/main.tf index 5c6501e..b35d246 100644 --- a/github-upload-public-key/main.tf +++ b/github-upload-public-key/main.tf @@ -26,26 +26,13 @@ variable "github_api_url" { default = "https://api.github.com" } -// Optional variables mostly for testing purposes, will normally come from data.coder_workspace.me -variable "access_url" { - type = string - description = "The access URL of the workspace." - default = "" -} - -variable "owner_session_token" { - type = string - description = "The owner session token of the workspace." - default = "" -} - data "coder_workspace" "me" {} resource "coder_script" "github_upload_public_key" { agent_id = var.agent_id script = templatefile("${path.module}/run.sh", { - CODER_OWNER_SESSION_TOKEN : var.owner_session_token != "" ? var.owner_session_token : data.coder_workspace.me.owner_session_token, - CODER_ACCESS_URL : var.access_url != "" ? var.access_url : data.coder_workspace.me.access_url, + CODER_OWNER_SESSION_TOKEN : data.coder_workspace.me.owner_session_token, + CODER_ACCESS_URL : data.coder_workspace.me.access_url, CODER_EXTERNAL_AUTH_ID : var.external_auth_id, GITHUB_API_URL : var.github_api_url, }) diff --git a/github-upload-public-key/run.sh b/github-upload-public-key/run.sh index 6dabefa..9083040 100755 --- a/github-upload-public-key/run.sh +++ b/github-upload-public-key/run.sh @@ -2,44 +2,34 @@ set -e -CODER_ACCESS_URL="${CODER_ACCESS_URL}" -CODER_OWNER_SESSION_TOKEN="${CODER_OWNER_SESSION_TOKEN}" -CODER_EXTERNAL_AUTH_ID="${CODER_EXTERNAL_AUTH_ID}" -GITHUB_API_URL="${GITHUB_API_URL}" - if [ -z "$CODER_ACCESS_URL" ]; then - echo "No coder access url specified!" + echo "No CODER_ACCESS_URL specified!" exit 1 fi if [ -z "$CODER_OWNER_SESSION_TOKEN" ]; then - echo "No coder owner session token specified!" + echo "No CODER_OWNER_SESSION_TOKEN specified!" exit 1 fi if [ -z "$CODER_EXTERNAL_AUTH_ID" ]; then - echo "No GitHub external auth id specified!" + echo "No CODER_EXTERNAL_AUTH_ID specified!" exit 1 fi if [ -z "$GITHUB_API_URL" ]; then - echo "No GitHub API URL specified!" + echo "No GITHUB_API_URL specified!" exit 1 fi echo "Fetching GitHub token..." GITHUB_TOKEN=$(coder external-auth access-token $CODER_EXTERNAL_AUTH_ID) if [ $? -ne 0 ]; then - echo "Failed to fetch GitHub token!" - exit 1 -fi -if [ -z "$GITHUB_TOKEN" ]; then - echo "No GitHub token found!" + printf "Authenticate with Github to automatically upload Coder public key:\n$GITHUB_TOKEN\n" exit 1 fi -echo "GitHub token found!" -echo "Fetching Coder public SSH key..." +echo "Fetching public key from Coder..." PUBLIC_KEY_RESPONSE=$( curl -L -s \ -w "\n%%{http_code}" \ @@ -55,16 +45,13 @@ if [ "$PUBLIC_KEY_RESPONSE_STATUS" -ne 200 ]; then echo "$PUBLIC_KEY_BODY" exit 1 fi - PUBLIC_KEY=$(jq -r '.public_key' <<< "$PUBLIC_KEY_BODY") -echo "Coder public SSH key found!" - if [ -z "$PUBLIC_KEY" ]; then echo "No Coder public SSH key found!" exit 1 fi -echo "Fetching GitHub public SSH keys..." +echo "Fetching public keys from GitHub..." GITHUB_KEYS_RESPONSE=$( curl -L -s \ -w "\n%%{http_code}" \ @@ -85,12 +72,11 @@ fi GITHUB_MATCH=$(jq -r --arg PUBLIC_KEY "$PUBLIC_KEY" '.[] | select(.key == $PUBLIC_KEY) | .key' <<< "$GITHUB_KEYS_RESPONSE_BODY") if [ "$PUBLIC_KEY" = "$GITHUB_MATCH" ]; then - echo "Coder public SSH key is already uploaded to GitHub!" + echo "Your Coder public key is already on GitHub!" exit 0 fi -echo "Coder public SSH key not found in GitHub keys!" -echo "Uploading Coder public SSH key to GitHub..." +echo "Your Coder public key is not in GitHub. Adding it now..." CODER_PUBLIC_KEY_NAME="$CODER_ACCESS_URL Workspaces" UPLOAD_RESPONSE=$( curl -L -s \ @@ -111,4 +97,4 @@ if [ "$UPLOAD_RESPONSE_STATUS" -ne 201 ]; then exit 1 fi -echo "Coder public SSH key uploaded to GitHub!" +echo "Your Coder public key has been added to GitHub!" From 4bdb428244fac594131c7545891cde35796d4361 Mon Sep 17 00:00:00 2001 From: Garrett Delfosse Date: Thu, 2 May 2024 12:55:00 -0400 Subject: [PATCH 42/56] fix test --- github-upload-public-key/main.test.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/github-upload-public-key/main.test.ts b/github-upload-public-key/main.test.ts index 316f50f..d7ce193 100644 --- a/github-upload-public-key/main.test.ts +++ b/github-upload-public-key/main.test.ts @@ -31,7 +31,7 @@ describe("github-upload-public-key", async () => { "-c", instance.script, ]); - expect(exec.stdout).toContain("Coder public SSH key uploaded to GitHub!"); + expect(exec.stdout).toContain("Your Coder public key has been added to GitHub!"); expect(exec.exitCode).toBe(0); // we need to increase timeout to pull the container }, 15000); @@ -51,7 +51,7 @@ describe("github-upload-public-key", async () => { instance.script, ]); expect(exec.stdout).toContain( - "Coder public SSH key is already uploaded to GitHub!", + "Your Coder public key is already on GitHub!", ); expect(exec.exitCode).toBe(0); }); From 85e73c2071f815cfb921f7c47450071b43124ef6 Mon Sep 17 00:00:00 2001 From: Garrett Delfosse Date: Thu, 2 May 2024 12:55:52 -0400 Subject: [PATCH 43/56] fmt --- github-upload-public-key/main.test.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/github-upload-public-key/main.test.ts b/github-upload-public-key/main.test.ts index d7ce193..fb1b977 100644 --- a/github-upload-public-key/main.test.ts +++ b/github-upload-public-key/main.test.ts @@ -31,7 +31,9 @@ describe("github-upload-public-key", async () => { "-c", instance.script, ]); - expect(exec.stdout).toContain("Your Coder public key has been added to GitHub!"); + expect(exec.stdout).toContain( + "Your Coder public key has been added to GitHub!", + ); expect(exec.exitCode).toBe(0); // we need to increase timeout to pull the container }, 15000); From c068082e6b2b5e080e391d5570b40455dcc7f8e7 Mon Sep 17 00:00:00 2001 From: Garrett Delfosse Date: Thu, 2 May 2024 13:03:58 -0400 Subject: [PATCH 44/56] pr comments --- CONTRIBUTING.md | 2 +- github-upload-public-key/run.sh | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 749791f..557171e 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -10,7 +10,7 @@ To create a new module, clone this repository and run: A suite of test-helpers exists to run `terraform apply` on modules with variables, and test script output against containers. -The testing suite must be able to run docker containers with the `--network=host` flag, which typically requires running the tests on linux as this flag does not apply to Docker Desktop for MacOS and Windows. MacOS users can work around this by using something like [Orbstack](https://orbstack.dev/) instead of Docker Desktop. +The testing suite must be able to run docker containers with the `--network=host` flag, which typically requires running the tests on Linux as this flag does not apply to Docker Desktop for MacOS and Windows. MacOS users can work around this by using something like [colima](https://github.com/abiosoft/colima) or [Orbstack](https://orbstack.dev/) instead of Docker Desktop. Reference existing `*.test.ts` files for implementation. diff --git a/github-upload-public-key/run.sh b/github-upload-public-key/run.sh index 9083040..da39e10 100755 --- a/github-upload-public-key/run.sh +++ b/github-upload-public-key/run.sh @@ -3,22 +3,22 @@ set -e if [ -z "$CODER_ACCESS_URL" ]; then - echo "No CODER_ACCESS_URL specified!" + echo "CODER_ACCESS_URL is empty!" exit 1 fi if [ -z "$CODER_OWNER_SESSION_TOKEN" ]; then - echo "No CODER_OWNER_SESSION_TOKEN specified!" + echo "CODER_OWNER_SESSION_TOKEN is empty!" exit 1 fi if [ -z "$CODER_EXTERNAL_AUTH_ID" ]; then - echo "No CODER_EXTERNAL_AUTH_ID specified!" + echo "CODER_EXTERNAL_AUTH_ID is empty!" exit 1 fi if [ -z "$GITHUB_API_URL" ]; then - echo "No GITHUB_API_URL specified!" + echo "GITHUB_API_URL is empty!" exit 1 fi From 282e1f8c57efaecee9ff1e3f54342a77212856f2 Mon Sep 17 00:00:00 2001 From: Garrett Delfosse Date: Thu, 2 May 2024 14:21:01 -0400 Subject: [PATCH 45/56] take env and then interpolate --- github-upload-public-key/run.sh | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/github-upload-public-key/run.sh b/github-upload-public-key/run.sh index da39e10..2fb8d26 100755 --- a/github-upload-public-key/run.sh +++ b/github-upload-public-key/run.sh @@ -3,23 +3,35 @@ set -e if [ -z "$CODER_ACCESS_URL" ]; then - echo "CODER_ACCESS_URL is empty!" - exit 1 + if [ -z "${CODER_ACCESS_URL}" ]; then + echo "CODER_ACCESS_URL is empty!" + exit 1 + fi + CODER_ACCESS_URL=${CODER_ACCESS_URL} fi if [ -z "$CODER_OWNER_SESSION_TOKEN" ]; then - echo "CODER_OWNER_SESSION_TOKEN is empty!" - exit 1 + if [ -z "${CODER_OWNER_SESSION_TOKEN}" ]; then + echo "CODER_OWNER_SESSION_TOKEN is empty!" + exit 1 + fi + CODER_OWNER_SESSION_TOKEN=${CODER_OWNER_SESSION_TOKEN} fi if [ -z "$CODER_EXTERNAL_AUTH_ID" ]; then - echo "CODER_EXTERNAL_AUTH_ID is empty!" - exit 1 + if [ -z "${CODER_EXTERNAL_AUTH_ID}" ]; then + echo "CODER_EXTERNAL_AUTH_ID is empty!" + exit 1 + fi + CODER_EXTERNAL_AUTH_ID=${CODER_EXTERNAL_AUTH_ID} fi if [ -z "$GITHUB_API_URL" ]; then - echo "GITHUB_API_URL is empty!" - exit 1 + if [ -z "${GITHUB_API_URL}" ]; then + echo "GITHUB_API_URL is empty!" + exit 1 + fi + GITHUB_API_URL=${GITHUB_API_URL} fi echo "Fetching GitHub token..." From 873207fddf90a6468da0663c939d5bf0786f1a59 Mon Sep 17 00:00:00 2001 From: Garrett Delfosse Date: Thu, 2 May 2024 14:33:08 -0400 Subject: [PATCH 46/56] remove set -e --- github-upload-public-key/run.sh | 2 -- 1 file changed, 2 deletions(-) diff --git a/github-upload-public-key/run.sh b/github-upload-public-key/run.sh index 2fb8d26..a382a40 100755 --- a/github-upload-public-key/run.sh +++ b/github-upload-public-key/run.sh @@ -1,7 +1,5 @@ #!/usr/bin/env bash -set -e - if [ -z "$CODER_ACCESS_URL" ]; then if [ -z "${CODER_ACCESS_URL}" ]; then echo "CODER_ACCESS_URL is empty!" From f5d41520cfaddde9c2cb719e645cb065fcb5fecc Mon Sep 17 00:00:00 2001 From: Michael Brewer Date: Fri, 3 May 2024 10:36:28 -0700 Subject: [PATCH 47/56] feat(vscode-web): add offline, use_cached, extensions_dir and auto_install_extensions (#235) --- vscode-web/main.test.ts | 42 ++++++++++++++++++++++++++ vscode-web/main.tf | 41 +++++++++++++++++++++++++ vscode-web/run.sh | 67 +++++++++++++++++++++++++++++++++-------- 3 files changed, 138 insertions(+), 12 deletions(-) create mode 100644 vscode-web/main.test.ts diff --git a/vscode-web/main.test.ts b/vscode-web/main.test.ts new file mode 100644 index 0000000..d8e0e68 --- /dev/null +++ b/vscode-web/main.test.ts @@ -0,0 +1,42 @@ +import { describe, expect, it } from "bun:test"; +import { runTerraformApply, runTerraformInit } from "../test"; + +describe("vscode-web", async () => { + await runTerraformInit(import.meta.dir); + + it("accept_license should be set to true", () => { + const t = async () => { + await runTerraformApply(import.meta.dir, { + agent_id: "foo", + accept_license: "false", + }); + }; + expect(t).toThrow("Invalid value for variable"); + }); + + it("use_cached and offline can not be used together", () => { + const t = async () => { + await runTerraformApply(import.meta.dir, { + agent_id: "foo", + accept_license: "true", + use_cached: "true", + offline: "true", + }); + }; + expect(t).toThrow("Offline and Use Cached can not be used together"); + }); + + it("offline and extensions can not be used together", () => { + const t = async () => { + await runTerraformApply(import.meta.dir, { + agent_id: "foo", + accept_license: "true", + offline: "true", + extensions: '["1", "2"]', + }); + }; + expect(t).toThrow("Offline mode does not allow extensions to be installed"); + }); + + // More tests depend on shebang refactors +}); diff --git a/vscode-web/main.tf b/vscode-web/main.tf index dd2ab3b..084f830 100644 --- a/vscode-web/main.tf +++ b/vscode-web/main.tf @@ -97,6 +97,30 @@ variable "settings" { default = {} } +variable "offline" { + type = bool + description = "Just run VS Code Web in the background, don't fetch it from the internet." + default = false +} + +variable "use_cached" { + type = bool + description = "Uses cached copy of VS Code Web in the background, otherwise fetches it from internet." + default = false +} + +variable "extensions_dir" { + type = string + description = "Override the directory to store extensions in." + default = "" +} + +variable "auto_install_extensions" { + type = bool + description = "Automatically install recommended extensions when VS Code Web starts." + default = false +} + resource "coder_script" "vscode-web" { agent_id = var.agent_id display_name = "VS Code Web" @@ -109,8 +133,25 @@ resource "coder_script" "vscode-web" { TELEMETRY_LEVEL : var.telemetry_level, // This is necessary otherwise the quotes are stripped! SETTINGS : replace(jsonencode(var.settings), "\"", "\\\""), + OFFLINE : var.offline, + USE_CACHED : var.use_cached, + EXTENSIONS_DIR : var.extensions_dir, + FOLDER : var.folder, + AUTO_INSTALL_EXTENSIONS : var.auto_install_extensions, }) run_on_start = true + + lifecycle { + precondition { + condition = !var.offline || length(var.extensions) == 0 + error_message = "Offline mode does not allow extensions to be installed" + } + + precondition { + condition = !var.offline || !var.use_cached + error_message = "Offline and Use Cached can not be used together" + } + } } resource "coder_app" "vscode-web" { diff --git a/vscode-web/run.sh b/vscode-web/run.sh index 491906f..ce8782f 100755 --- a/vscode-web/run.sh +++ b/vscode-web/run.sh @@ -2,6 +2,40 @@ BOLD='\033[0;1m' EXTENSIONS=("${EXTENSIONS}") +VSCODE_WEB="${INSTALL_PREFIX}/bin/code-server" + +# Set extension directory +EXTENSION_ARG="" +if [ -n "${EXTENSIONS_DIR}" ]; then + EXTENSION_ARG="--extensions-dir=${EXTENSIONS_DIR}" +fi + +run_vscode_web() { + echo "👷 Running $VSCODE_WEB serve-local $EXTENSION_ARG --port ${PORT} --host 127.0.0.1 --accept-server-license-terms --without-connection-token --telemetry-level ${TELEMETRY_LEVEL} in the background..." + echo "Check logs at ${LOG_PATH}!" + "$VSCODE_WEB" serve-local "$EXTENSION_ARG" --port "${PORT}" --host 127.0.0.1 --accept-server-license-terms --without-connection-token --telemetry-level "${TELEMETRY_LEVEL}" > "${LOG_PATH}" 2>&1 & +} + +# Check if the settings file exists... +if [ ! -f ~/.vscode-server/data/Machine/settings.json ]; then + echo "⚙️ Creating settings file..." + mkdir -p ~/.vscode-server/data/Machine + echo "${SETTINGS}" > ~/.vscode-server/data/Machine/settings.json +fi + +# Check if vscode-server is already installed for offline or cached mode +if [ -f "$VSCODE_WEB" ]; then + if [ "${OFFLINE}" = true ] || [ "${USE_CACHED}" = true ]; then + echo "🥳 Found a copy of VS Code Web" + run_vscode_web + exit 0 + fi +fi +# Offline mode always expects a copy of vscode-server to be present +if [ "${OFFLINE}" = true ]; then + echo "Failed to find a copy of VS Code Web" + exit 1 +fi # Create install prefix mkdir -p ${INSTALL_PREFIX} @@ -26,9 +60,7 @@ if [ $? -ne 0 ]; then echo "Failed to install Microsoft Visual Studio Code Server: $output" exit 1 fi -printf "$${BOLD}Microsoft Visual Studio Code Server has been installed.\n" - -VSCODE_SERVER="${INSTALL_PREFIX}/bin/code-server" +printf "$${BOLD}VS Code Web has been installed.\n" # Install each extension... IFS=',' read -r -a EXTENSIONLIST <<< "$${EXTENSIONS}" @@ -37,20 +69,31 @@ for extension in "$${EXTENSIONLIST[@]}"; do continue fi printf "🧩 Installing extension $${CODE}$extension$${RESET}...\n" - output=$($VSCODE_SERVER --install-extension "$extension" --force) + output=$($VSCODE_WEB "$EXTENSION_ARG" --install-extension "$extension" --force) if [ $? -ne 0 ]; then echo "Failed to install extension: $extension: $output" exit 1 fi done -# Check if the settings file exists... -if [ ! -f ~/.vscode-server/data/Machine/settings.json ]; then - echo "⚙️ Creating settings file..." - mkdir -p ~/.vscode-server/data/Machine - echo "${SETTINGS}" > ~/.vscode-server/data/Machine/settings.json +if [ "${AUTO_INSTALL_EXTENSIONS}" = true ]; then + if ! command -v jq > /dev/null; then + echo "jq is required to install extensions from a workspace file." + exit 0 + fi + + WORKSPACE_DIR="$HOME" + if [ -n "${FOLDER}" ]; then + WORKSPACE_DIR="${FOLDER}" + fi + + if [ -f "$WORKSPACE_DIR/.vscode/extensions.json" ]; then + printf "🧩 Installing extensions from %s/.vscode/extensions.json...\n" "$WORKSPACE_DIR" + extensions=$(jq -r '.recommendations[]' "$WORKSPACE_DIR"/.vscode/extensions.json) + for extension in $extensions; do + $VSCODE_WEB "$EXTENSION_ARG" --install-extension "$extension" --force + done + fi fi -echo "👷 Running ${INSTALL_PREFIX}/bin/code-server serve-local --port ${PORT} --host 127.0.0.1 --accept-server-license-terms serve-local --without-connection-token --telemetry-level ${TELEMETRY_LEVEL} in the background..." -echo "Check logs at ${LOG_PATH}!" -"${INSTALL_PREFIX}/bin/code-server" serve-local --port "${PORT}" --host 127.0.0.1 --accept-server-license-terms serve-local --without-connection-token --telemetry-level "${TELEMETRY_LEVEL}" > "${LOG_PATH}" 2>&1 & +run_vscode_web From dcd605c52efedbb09ac718968e2eeb11f8a1d80a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 3 May 2024 20:40:09 +0300 Subject: [PATCH 48/56] chore: bump version to 1.0.14 in README.md files (#245) Co-authored-by: matifali --- code-server/README.md | 14 +++++++------- dotfiles/README.md | 12 ++++++------ github-upload-public-key/README.md | 4 ++-- vscode-web/README.md | 8 ++++---- 4 files changed, 19 insertions(+), 19 deletions(-) diff --git a/code-server/README.md b/code-server/README.md index 909c985..463fb22 100644 --- a/code-server/README.md +++ b/code-server/README.md @@ -14,7 +14,7 @@ Automatically install [code-server](https://github.com/coder/code-server) in a w ```tf module "code-server" { source = "registry.coder.com/modules/code-server/coder" - version = "1.0.12" + version = "1.0.14" agent_id = coder_agent.example.id } ``` @@ -28,7 +28,7 @@ module "code-server" { ```tf module "code-server" { source = "registry.coder.com/modules/code-server/coder" - version = "1.0.12" + version = "1.0.14" agent_id = coder_agent.example.id install_version = "4.8.3" } @@ -41,7 +41,7 @@ Install the Dracula theme from [OpenVSX](https://open-vsx.org/): ```tf module "code-server" { source = "registry.coder.com/modules/code-server/coder" - version = "1.0.12" + version = "1.0.14" agent_id = coder_agent.example.id extensions = [ "dracula-theme.theme-dracula" @@ -58,7 +58,7 @@ Configure VS Code's [settings.json](https://code.visualstudio.com/docs/getstarte ```tf module "code-server" { source = "registry.coder.com/modules/code-server/coder" - version = "1.0.12" + version = "1.0.14" agent_id = coder_agent.example.id extensions = ["dracula-theme.theme-dracula"] settings = { @@ -74,7 +74,7 @@ Just run code-server in the background, don't fetch it from GitHub: ```tf module "code-server" { source = "registry.coder.com/modules/code-server/coder" - version = "1.0.12" + version = "1.0.14" agent_id = coder_agent.example.id extensions = ["dracula-theme.theme-dracula", "ms-azuretools.vscode-docker"] } @@ -89,7 +89,7 @@ Run an existing copy of code-server if found, otherwise download from GitHub: ```tf module "code-server" { source = "registry.coder.com/modules/code-server/coder" - version = "1.0.12" + version = "1.0.14" agent_id = coder_agent.example.id use_cached = true extensions = ["dracula-theme.theme-dracula", "ms-azuretools.vscode-docker"] @@ -101,7 +101,7 @@ Just run code-server in the background, don't fetch it from GitHub: ```tf module "code-server" { source = "registry.coder.com/modules/code-server/coder" - version = "1.0.12" + version = "1.0.14" agent_id = coder_agent.example.id offline = true } diff --git a/dotfiles/README.md b/dotfiles/README.md index be174c2..4e3312f 100644 --- a/dotfiles/README.md +++ b/dotfiles/README.md @@ -18,7 +18,7 @@ Under the hood, this module uses the [coder dotfiles](https://coder.com/docs/v2/ ```tf module "dotfiles" { source = "registry.coder.com/modules/dotfiles/coder" - version = "1.0.12" + version = "1.0.14" agent_id = coder_agent.example.id } ``` @@ -30,7 +30,7 @@ module "dotfiles" { ```tf module "dotfiles" { source = "registry.coder.com/modules/dotfiles/coder" - version = "1.0.0" + version = "1.0.14" agent_id = coder_agent.example.id } ``` @@ -40,7 +40,7 @@ module "dotfiles" { ```tf module "dotfiles" { source = "registry.coder.com/modules/dotfiles/coder" - version = "1.0.0" + version = "1.0.14" agent_id = coder_agent.example.id user = "root" } @@ -51,13 +51,13 @@ module "dotfiles" { ```tf module "dotfiles" { source = "registry.coder.com/modules/dotfiles/coder" - version = "1.0.0" + version = "1.0.14" agent_id = coder_agent.example.id } module "dotfiles-root" { source = "registry.coder.com/modules/dotfiles/coder" - version = "1.0.0" + version = "1.0.14" agent_id = coder_agent.example.id user = "root" dotfiles_uri = module.dotfiles.dotfiles_uri @@ -71,7 +71,7 @@ You can set a default dotfiles repository for all users by setting the `default_ ```tf module "dotfiles" { source = "registry.coder.com/modules/dotfiles/coder" - version = "1.0.12" + version = "1.0.14" agent_id = coder_agent.example.id default_dotfiles_uri = "https://github.com/coder/dotfiles" } diff --git a/github-upload-public-key/README.md b/github-upload-public-key/README.md index d776619..2e1938a 100644 --- a/github-upload-public-key/README.md +++ b/github-upload-public-key/README.md @@ -14,7 +14,7 @@ Templates that utilize Github External Auth can automatically ensure that the Co ```tf module "github-upload-public-key" { source = "registry.coder.com/modules/github-upload-public-key/coder" - version = "1.0.13" + version = "1.0.14" agent_id = coder_agent.example.id } ``` @@ -46,7 +46,7 @@ data "coder_external_auth" "github" { module "github-upload-public-key" { source = "registry.coder.com/modules/github-upload-public-key/coder" - version = "1.0.13" + version = "1.0.14" agent_id = coder_agent.example.id external_auth_id = data.coder_external_auth.github.id } diff --git a/vscode-web/README.md b/vscode-web/README.md index f037607..ba395d0 100644 --- a/vscode-web/README.md +++ b/vscode-web/README.md @@ -14,7 +14,7 @@ Automatically install [Visual Studio Code Server](https://code.visualstudio.com/ ```tf module "vscode-web" { source = "registry.coder.com/modules/vscode-web/coder" - version = "1.0.11" + version = "1.0.14" agent_id = coder_agent.example.id accept_license = true } @@ -29,7 +29,7 @@ module "vscode-web" { ```tf module "vscode-web" { source = "registry.coder.com/modules/vscode-web/coder" - version = "1.0.11" + version = "1.0.14" agent_id = coder_agent.example.id install_prefix = "/home/coder/.vscode-web" folder = "/home/coder" @@ -42,7 +42,7 @@ module "vscode-web" { ```tf module "vscode-web" { source = "registry.coder.com/modules/vscode-web/coder" - version = "1.0.11" + version = "1.0.14" agent_id = coder_agent.example.id extensions = ["github.copilot", "ms-python.python", "ms-toolsai.jupyter"] accept_license = true @@ -56,7 +56,7 @@ Configure VS Code's [settings.json](https://code.visualstudio.com/docs/getstarte ```tf module "vscode-web" { source = "registry.coder.com/modules/vscode-web/coder" - version = "1.0.11" + version = "1.0.14" agent_id = coder_agent.example.id extensions = ["dracula-theme.theme-dracula"] settings = { From 0d7bc37f9c0f55a2a8f459807df5bb3300d8c583 Mon Sep 17 00:00:00 2001 From: Phorcys <57866459+phorcys420@users.noreply.github.com> Date: Fri, 17 May 2024 15:35:30 +0200 Subject: [PATCH 49/56] fix(dotfiles): remove extra "(optional)" in coder parameter display name (#249) --- dotfiles/main.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotfiles/main.tf b/dotfiles/main.tf index 950cb9b..bfb67e4 100644 --- a/dotfiles/main.tf +++ b/dotfiles/main.tf @@ -44,7 +44,7 @@ data "coder_parameter" "dotfiles_uri" { type = "string" name = "dotfiles_uri" - display_name = "Dotfiles URL (optional)" + display_name = "Dotfiles URL" order = var.coder_parameter_order default = var.default_dotfiles_uri description = "Enter a URL for a [dotfiles repository](https://dotfiles.github.io) to personalize your workspace" From beaa33b6829ef9d35f8cb857fbd3949420d462a5 Mon Sep 17 00:00:00 2001 From: Asher Date: Tue, 21 May 2024 17:21:04 +0000 Subject: [PATCH 50/56] Add open_recent option to VS Code desktop (#248) --- vscode-desktop/main.test.ts | 44 ++++++++++++++++++++++++++++++++++++- vscode-desktop/main.tf | 21 +++++++++--------- 2 files changed, 54 insertions(+), 11 deletions(-) diff --git a/vscode-desktop/main.test.ts b/vscode-desktop/main.test.ts index 53fba96..fa937f8 100644 --- a/vscode-desktop/main.test.ts +++ b/vscode-desktop/main.test.ts @@ -18,13 +18,55 @@ describe("vscode-desktop", async () => { agent_id: "foo", }); expect(state.outputs.vscode_url.value).toBe( - "vscode://coder.coder-remote/open?owner=default&workspace=default&token=$SESSION_TOKEN", + "vscode://coder.coder-remote/open?owner=default&workspace=default&url=https://mydeployment.coder.com&token=$SESSION_TOKEN", ); const resources: any = state.resources; expect(resources[1].instances[0].attributes.order).toBeNull(); }); + it("adds folder", async () => { + const state = await runTerraformApply(import.meta.dir, { + agent_id: "foo", + folder: "/foo/bar", + }); + expect(state.outputs.vscode_url.value).toBe( + "vscode://coder.coder-remote/open?owner=default&workspace=default&folder=/foo/bar&url=https://mydeployment.coder.com&token=$SESSION_TOKEN", + ); + }); + + it("adds folder and open_recent", async () => { + const state = await runTerraformApply(import.meta.dir, { + agent_id: "foo", + folder: "/foo/bar", + open_recent: true, + }); + expect(state.outputs.vscode_url.value).toBe( + "vscode://coder.coder-remote/open?owner=default&workspace=default&folder=/foo/bar&openRecent&url=https://mydeployment.coder.com&token=$SESSION_TOKEN", + ); + }); + + it("adds folder but not open_recent", async () => { + const state = await runTerraformApply(import.meta.dir, { + agent_id: "foo", + folder: "/foo/bar", + openRecent: false, + }); + expect(state.outputs.vscode_url.value).toBe( + "vscode://coder.coder-remote/open?owner=default&workspace=default&folder=/foo/bar&url=https://mydeployment.coder.com&token=$SESSION_TOKEN", + ); + }); + + it("adds open_recent", async () => { + const state = await runTerraformApply(import.meta.dir, { + agent_id: "foo", + open_recent: true, + }); + expect(state.outputs.vscode_url.value).toBe( + "vscode://coder.coder-remote/open?owner=default&workspace=default&openRecent&url=https://mydeployment.coder.com&token=$SESSION_TOKEN", + ); + }); + it("expect order to be set", async () => { const state = await runTerraformApply(import.meta.dir, { agent_id: "foo", diff --git a/vscode-desktop/main.tf b/vscode-desktop/main.tf index 7a0a052..15af533 100644 --- a/vscode-desktop/main.tf +++ b/vscode-desktop/main.tf @@ -20,6 +20,12 @@ variable "folder" { default = "" } +variable "open_recent" { + type = bool + description = "Open the most recent workspace or folder. Falls back to the folder if there is no recent workspace or folder to open." + default = false +} + variable "order" { type = number description = "The order determines the position of app in the UI presentation. The lowest order is shown first and apps with equal order are sorted by name (ascending order)." @@ -35,22 +41,17 @@ resource "coder_app" "vscode" { slug = "vscode" display_name = "VS Code Desktop" order = var.order - url = var.folder != "" ? join("", [ - "vscode://coder.coder-remote/open?owner=", + url = join("", [ + "vscode://coder.coder-remote/open", + "?owner=", data.coder_workspace.me.owner, "&workspace=", data.coder_workspace.me.name, - "&folder=", - var.folder, + var.folder != "" ? join("", ["&folder=", var.folder]) : "", + var.open_recent ? "&openRecent" : "", "&url=", data.coder_workspace.me.access_url, "&token=$SESSION_TOKEN", - ]) : join("", [ - "vscode://coder.coder-remote/open?owner=", - data.coder_workspace.me.owner, - "&workspace=", - data.coder_workspace.me.name, - "&token=$SESSION_TOKEN", ]) } From c6b457e7fe845bf9b1dc31f5c3e8b43238b9f2d5 Mon Sep 17 00:00:00 2001 From: Michael Brewer Date: Tue, 28 May 2024 11:00:58 -0700 Subject: [PATCH 51/56] fix(git-config): add support for coder 0.22 (#254) --- git-config/main.test.ts | 39 +++++++++++++++++++++++++++++++-------- git-config/main.tf | 2 +- 2 files changed, 32 insertions(+), 9 deletions(-) diff --git a/git-config/main.test.ts b/git-config/main.test.ts index fe410aa..fe1fc39 100644 --- a/git-config/main.test.ts +++ b/git-config/main.test.ts @@ -20,10 +20,12 @@ describe("git-config", async () => { }); const resources = state.resources; - expect(resources).toHaveLength(3); + expect(resources).toHaveLength(5); expect(resources).toMatchObject([ { type: "coder_workspace", name: "me" }, + { type: "coder_env", name: "git_author_email" }, { type: "coder_env", name: "git_author_name" }, + { type: "coder_env", name: "git_commmiter_email" }, { type: "coder_env", name: "git_commmiter_name" }, ]); }); @@ -35,12 +37,14 @@ describe("git-config", async () => { }); const resources = state.resources; - expect(resources).toHaveLength(5); + expect(resources).toHaveLength(7); expect(resources).toMatchObject([ { type: "coder_parameter", name: "user_email" }, { type: "coder_parameter", name: "username" }, { type: "coder_workspace", name: "me" }, + { type: "coder_env", name: "git_author_email" }, { type: "coder_env", name: "git_author_name" }, + { type: "coder_env", name: "git_commmiter_email" }, { type: "coder_env", name: "git_commmiter_name" }, ]); }); @@ -53,7 +57,7 @@ describe("git-config", async () => { allow_username_change: "false", allow_email_change: "false", }, - { CODER_WORKSPACE_OWNER_EMAIL: "foo@emai.com" }, + { CODER_WORKSPACE_OWNER_EMAIL: "foo@email.com" }, ); const resources = state.resources; @@ -75,12 +79,22 @@ describe("git-config", async () => { allow_email_change: "true", coder_parameter_order: order.toString(), }); - expect(state.resources).toHaveLength(5); + const resources = state.resources; + expect(resources).toHaveLength(7); + expect(resources).toMatchObject([ + { type: "coder_parameter", name: "user_email" }, + { type: "coder_parameter", name: "username" }, + { type: "coder_workspace", name: "me" }, + { type: "coder_env", name: "git_author_email" }, + { type: "coder_env", name: "git_author_name" }, + { type: "coder_env", name: "git_commmiter_email" }, + { type: "coder_env", name: "git_commmiter_name" }, + ]); // user_email order is the same as the order - expect(state.resources[0].instances[0].attributes.order).toBe(order); + expect(resources[0].instances[0].attributes.order).toBe(order); // username order is incremented by 1 // @ts-ignore: Object is possibly 'null'. - expect(state.resources[1].instances[0]?.attributes.order).toBe(order + 1); + expect(resources[1].instances[0]?.attributes.order).toBe(order + 1); }); it("set custom order for coder_parameter for just username", async () => { @@ -91,9 +105,18 @@ describe("git-config", async () => { allow_username_change: "true", coder_parameter_order: order.toString(), }); - expect(state.resources).toHaveLength(4); + const resources = state.resources; + expect(resources).toHaveLength(6); + expect(resources).toMatchObject([ + { type: "coder_parameter", name: "username" }, + { type: "coder_workspace", name: "me" }, + { type: "coder_env", name: "git_author_email" }, + { type: "coder_env", name: "git_author_name" }, + { type: "coder_env", name: "git_commmiter_email" }, + { type: "coder_env", name: "git_commmiter_name" }, + ]); // user_email was not created // username order is incremented by 1 - expect(state.resources[0].instances[0].attributes.order).toBe(order + 1); + expect(resources[0].instances[0].attributes.order).toBe(order + 1); }); }); diff --git a/git-config/main.tf b/git-config/main.tf index fe19288..b876625 100644 --- a/git-config/main.tf +++ b/git-config/main.tf @@ -4,7 +4,7 @@ terraform { required_providers { coder = { source = "coder/coder" - version = ">= 0.13" + version = ">= 0.22" } } } From 49cff4b2aabc5b0d1cf25fec123fd00e7034728d Mon Sep 17 00:00:00 2001 From: Cian Johnston Date: Wed, 29 May 2024 16:22:04 +0100 Subject: [PATCH 52/56] chore: remove usage of deprecated fields coder_workspace.owner_* Updates the following modules to no longer reference fields matching coder_workspace.owner_*: - coder-login - git-config - github-upload-public-key - jfrog-oauth - vscode-desktop Also updates dependency of coder/coder to 0.23.0 for the above. For context, see https://github.com/coder/terraform-provider-coder/releases/tag/v0.23.0 --- coder-login/main.tf | 5 +++-- git-config/main.test.ts | 15 ++++++++++----- git-config/main.tf | 15 ++++++++------- github-upload-public-key/main.tf | 5 +++-- jfrog-oauth/main.tf | 7 ++++--- jfrog-token/README.md | 2 +- jfrog-token/main.tf | 7 ++++--- vscode-desktop/main.test.ts | 12 ++++++++---- vscode-desktop/main.tf | 5 +++-- 9 files changed, 44 insertions(+), 29 deletions(-) diff --git a/coder-login/main.tf b/coder-login/main.tf index 58d1bf0..0db33a8 100644 --- a/coder-login/main.tf +++ b/coder-login/main.tf @@ -4,7 +4,7 @@ terraform { required_providers { coder = { source = "coder/coder" - version = ">= 0.12" + version = ">= 0.23" } } } @@ -15,11 +15,12 @@ variable "agent_id" { } data "coder_workspace" "me" {} +data "coder_workspace_owner" "me" {} resource "coder_script" "coder-login" { agent_id = var.agent_id script = templatefile("${path.module}/run.sh", { - CODER_USER_TOKEN : data.coder_workspace.me.owner_session_token, + CODER_USER_TOKEN : data.coder_workspace_owner.me.session_token, CODER_DEPLOYMENT_URL : data.coder_workspace.me.access_url }) display_name = "Coder Login" diff --git a/git-config/main.test.ts b/git-config/main.test.ts index fe1fc39..e702c6e 100644 --- a/git-config/main.test.ts +++ b/git-config/main.test.ts @@ -20,9 +20,10 @@ describe("git-config", async () => { }); const resources = state.resources; - expect(resources).toHaveLength(5); + expect(resources).toHaveLength(6); expect(resources).toMatchObject([ { type: "coder_workspace", name: "me" }, + { type: "coder_workspace_owner", name: "me" }, { type: "coder_env", name: "git_author_email" }, { type: "coder_env", name: "git_author_name" }, { type: "coder_env", name: "git_commmiter_email" }, @@ -37,11 +38,12 @@ describe("git-config", async () => { }); const resources = state.resources; - expect(resources).toHaveLength(7); + expect(resources).toHaveLength(8); expect(resources).toMatchObject([ { type: "coder_parameter", name: "user_email" }, { type: "coder_parameter", name: "username" }, { type: "coder_workspace", name: "me" }, + { type: "coder_workspace_owner", name: "me" }, { type: "coder_env", name: "git_author_email" }, { type: "coder_env", name: "git_author_name" }, { type: "coder_env", name: "git_commmiter_email" }, @@ -61,9 +63,10 @@ describe("git-config", async () => { ); const resources = state.resources; - expect(resources).toHaveLength(5); + expect(resources).toHaveLength(6); expect(resources).toMatchObject([ { type: "coder_workspace", name: "me" }, + { type: "coder_workspace_owner", name: "me" }, { type: "coder_env", name: "git_author_email" }, { type: "coder_env", name: "git_author_name" }, { type: "coder_env", name: "git_commmiter_email" }, @@ -80,11 +83,12 @@ describe("git-config", async () => { coder_parameter_order: order.toString(), }); const resources = state.resources; - expect(resources).toHaveLength(7); + expect(resources).toHaveLength(8); expect(resources).toMatchObject([ { type: "coder_parameter", name: "user_email" }, { type: "coder_parameter", name: "username" }, { type: "coder_workspace", name: "me" }, + { type: "coder_workspace_owner", name: "me" }, { type: "coder_env", name: "git_author_email" }, { type: "coder_env", name: "git_author_name" }, { type: "coder_env", name: "git_commmiter_email" }, @@ -106,10 +110,11 @@ describe("git-config", async () => { coder_parameter_order: order.toString(), }); const resources = state.resources; - expect(resources).toHaveLength(6); + expect(resources).toHaveLength(7); expect(resources).toMatchObject([ { type: "coder_parameter", name: "username" }, { type: "coder_workspace", name: "me" }, + { type: "coder_workspace_owner", name: "me" }, { type: "coder_env", name: "git_author_email" }, { type: "coder_env", name: "git_author_name" }, { type: "coder_env", name: "git_commmiter_email" }, diff --git a/git-config/main.tf b/git-config/main.tf index b876625..e8fea8f 100644 --- a/git-config/main.tf +++ b/git-config/main.tf @@ -4,7 +4,7 @@ terraform { required_providers { coder = { source = "coder/coder" - version = ">= 0.22" + version = ">= 0.23" } } } @@ -33,6 +33,7 @@ variable "coder_parameter_order" { } data "coder_workspace" "me" {} +data "coder_workspace_owner" "me" {} data "coder_parameter" "user_email" { count = var.allow_email_change ? 1 : 0 @@ -59,25 +60,25 @@ data "coder_parameter" "username" { resource "coder_env" "git_author_name" { agent_id = var.agent_id name = "GIT_AUTHOR_NAME" - value = coalesce(try(data.coder_parameter.username[0].value, ""), data.coder_workspace.me.owner_name, data.coder_workspace.me.owner) + value = coalesce(try(data.coder_parameter.username[0].value, ""), data.coder_workspace_owner.me.full_name, data.coder_workspace_owner.me.name) } resource "coder_env" "git_commmiter_name" { agent_id = var.agent_id name = "GIT_COMMITTER_NAME" - value = coalesce(try(data.coder_parameter.username[0].value, ""), data.coder_workspace.me.owner_name, data.coder_workspace.me.owner) + value = coalesce(try(data.coder_parameter.username[0].value, ""), data.coder_workspace_owner.me.full_name, data.coder_workspace_owner.me.name) } resource "coder_env" "git_author_email" { agent_id = var.agent_id name = "GIT_AUTHOR_EMAIL" - value = coalesce(try(data.coder_parameter.user_email[0].value, ""), data.coder_workspace.me.owner_email) - count = data.coder_workspace.me.owner_email != "" ? 1 : 0 + value = coalesce(try(data.coder_parameter.user_email[0].value, ""), data.coder_workspace_owner.me.email) + count = data.coder_workspace_owner.me.email != "" ? 1 : 0 } resource "coder_env" "git_commmiter_email" { agent_id = var.agent_id name = "GIT_COMMITTER_EMAIL" - value = coalesce(try(data.coder_parameter.user_email[0].value, ""), data.coder_workspace.me.owner_email) - count = data.coder_workspace.me.owner_email != "" ? 1 : 0 + value = coalesce(try(data.coder_parameter.user_email[0].value, ""), data.coder_workspace_owner.me.email) + count = data.coder_workspace_owner.me.email != "" ? 1 : 0 } diff --git a/github-upload-public-key/main.tf b/github-upload-public-key/main.tf index b35d246..b527400 100644 --- a/github-upload-public-key/main.tf +++ b/github-upload-public-key/main.tf @@ -4,7 +4,7 @@ terraform { required_providers { coder = { source = "coder/coder" - version = ">= 0.12" + version = ">= 0.23" } } } @@ -27,11 +27,12 @@ variable "github_api_url" { } data "coder_workspace" "me" {} +data "coder_workspace_owner" "me" {} resource "coder_script" "github_upload_public_key" { agent_id = var.agent_id script = templatefile("${path.module}/run.sh", { - CODER_OWNER_SESSION_TOKEN : data.coder_workspace.me.owner_session_token, + CODER_OWNER_SESSION_TOKEN : data.coder_workspace_owner.me.session_token, CODER_ACCESS_URL : data.coder_workspace.me.access_url, CODER_EXTERNAL_AUTH_ID : var.external_auth_id, GITHUB_API_URL : var.github_api_url, diff --git a/jfrog-oauth/main.tf b/jfrog-oauth/main.tf index 70fd0e8..767235a 100644 --- a/jfrog-oauth/main.tf +++ b/jfrog-oauth/main.tf @@ -4,7 +4,7 @@ terraform { required_providers { coder = { source = "coder/coder" - version = ">= 0.12.4" + version = ">= 0.23" } } } @@ -68,11 +68,12 @@ EOF locals { # The username field to use for artifactory - username = var.username_field == "email" ? data.coder_workspace.me.owner_email : data.coder_workspace.me.owner + username = var.username_field == "email" ? data.coder_workspace_owner.me.email : data.coder_workspace_owner.me.name jfrog_host = replace(var.jfrog_url, "https://", "") } data "coder_workspace" "me" {} +data "coder_workspace_owner" "me" {} data "coder_external_auth" "jfrog" { id = var.external_auth_id @@ -87,7 +88,7 @@ resource "coder_script" "jfrog" { JFROG_HOST : local.jfrog_host, JFROG_SERVER_ID : var.jfrog_server_id, ARTIFACTORY_USERNAME : local.username, - ARTIFACTORY_EMAIL : data.coder_workspace.me.owner_email, + ARTIFACTORY_EMAIL : data.coder_workspace_owner.me.email, ARTIFACTORY_ACCESS_TOKEN : data.coder_external_auth.jfrog.access_token, CONFIGURE_CODE_SERVER : var.configure_code_server, REPOSITORY_NPM : lookup(var.package_managers, "npm", ""), diff --git a/jfrog-token/README.md b/jfrog-token/README.md index 0bd4781..4a4089a 100644 --- a/jfrog-token/README.md +++ b/jfrog-token/README.md @@ -98,7 +98,7 @@ module "jfrog" { agent_id = coder_agent.example.id jfrog_url = "https://XXXX.jfrog.io" artifactory_access_token = var.artifactory_access_token - token_description = "Token for Coder workspace: ${data.coder_workspace.me.owner}/${data.coder_workspace.me.name}" + token_description = "Token for Coder workspace: ${data.coder_workspace_owner.me.name}/${data.coder_workspace.me.name}" package_managers = { "npm" : "npm", "go" : "go", diff --git a/jfrog-token/main.tf b/jfrog-token/main.tf index d1f99f1..90dad61 100644 --- a/jfrog-token/main.tf +++ b/jfrog-token/main.tf @@ -4,7 +4,7 @@ terraform { required_providers { coder = { source = "coder/coder" - version = ">= 0.12.4" + version = ">= 0.23" } artifactory = { source = "registry.terraform.io/jfrog/artifactory" @@ -95,7 +95,7 @@ EOF locals { # The username field to use for artifactory - username = var.username_field == "email" ? data.coder_workspace.me.owner_email : data.coder_workspace.me.owner + username = var.username_field == "email" ? data.coder_workspace_owner.me.email : data.coder_workspace_owner.me.name jfrog_host = replace(var.jfrog_url, "https://", "") } @@ -117,6 +117,7 @@ resource "artifactory_scoped_token" "me" { } data "coder_workspace" "me" {} +data "coder_workspace_owner" "me" {} resource "coder_script" "jfrog" { agent_id = var.agent_id @@ -127,7 +128,7 @@ resource "coder_script" "jfrog" { JFROG_HOST : local.jfrog_host, JFROG_SERVER_ID : var.jfrog_server_id, ARTIFACTORY_USERNAME : local.username, - ARTIFACTORY_EMAIL : data.coder_workspace.me.owner_email, + ARTIFACTORY_EMAIL : data.coder_workspace_owner.me.email, ARTIFACTORY_ACCESS_TOKEN : artifactory_scoped_token.me.access_token, CONFIGURE_CODE_SERVER : var.configure_code_server, REPOSITORY_NPM : lookup(var.package_managers, "npm", ""), diff --git a/vscode-desktop/main.test.ts b/vscode-desktop/main.test.ts index fa937f8..e3f50c5 100644 --- a/vscode-desktop/main.test.ts +++ b/vscode-desktop/main.test.ts @@ -21,8 +21,10 @@ describe("vscode-desktop", async () => { "vscode://coder.coder-remote/open?owner=default&workspace=default&url=https://mydeployment.coder.com&token=$SESSION_TOKEN", ); - const resources: any = state.resources; - expect(resources[1].instances[0].attributes.order).toBeNull(); + const coder_app = state.resources.find((res) => res.type == "coder_app" && res.name == "vscode"); + expect(coder_app).not.toBeNull(); + expect(coder_app.instances.length).toBe(1); + expect(coder_app.instances[0].attributes.order).toBeNull(); }); it("adds folder", async () => { @@ -73,7 +75,9 @@ describe("vscode-desktop", async () => { order: "22", }); - const resources: any = state.resources; - expect(resources[1].instances[0].attributes.order).toBe(22); + const coder_app = state.resources.find((res) => res.type == "coder_app" && res.name == "vscode"); + expect(coder_app).not.toBeNull(); + expect(coder_app.instances.length).toBe(1); + expect(coder_app.instances[0].attributes.order).toBe(22); }); }); diff --git a/vscode-desktop/main.tf b/vscode-desktop/main.tf index 15af533..16d070b 100644 --- a/vscode-desktop/main.tf +++ b/vscode-desktop/main.tf @@ -4,7 +4,7 @@ terraform { required_providers { coder = { source = "coder/coder" - version = ">= 0.17" + version = ">= 0.23" } } } @@ -33,6 +33,7 @@ variable "order" { } data "coder_workspace" "me" {} +data "coder_workspace_owner" "me" {} resource "coder_app" "vscode" { agent_id = var.agent_id @@ -44,7 +45,7 @@ resource "coder_app" "vscode" { url = join("", [ "vscode://coder.coder-remote/open", "?owner=", - data.coder_workspace.me.owner, + data.coder_workspace_owner.me.name, "&workspace=", data.coder_workspace.me.name, var.folder != "" ? join("", ["&folder=", var.folder]) : "", From 249cb2fe9e7d8f974815fcf0d929f9534a69b140 Mon Sep 17 00:00:00 2001 From: Cian Johnston Date: Wed, 29 May 2024 16:30:52 +0100 Subject: [PATCH 53/56] fmt --- vscode-desktop/main.test.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/vscode-desktop/main.test.ts b/vscode-desktop/main.test.ts index e3f50c5..e61e6ec 100644 --- a/vscode-desktop/main.test.ts +++ b/vscode-desktop/main.test.ts @@ -21,7 +21,9 @@ describe("vscode-desktop", async () => { "vscode://coder.coder-remote/open?owner=default&workspace=default&url=https://mydeployment.coder.com&token=$SESSION_TOKEN", ); - const coder_app = state.resources.find((res) => res.type == "coder_app" && res.name == "vscode"); + const coder_app = state.resources.find( + (res) => res.type == "coder_app" && res.name == "vscode", + ); expect(coder_app).not.toBeNull(); expect(coder_app.instances.length).toBe(1); expect(coder_app.instances[0].attributes.order).toBeNull(); @@ -75,7 +77,9 @@ describe("vscode-desktop", async () => { order: "22", }); - const coder_app = state.resources.find((res) => res.type == "coder_app" && res.name == "vscode"); + const coder_app = state.resources.find( + (res) => res.type == "coder_app" && res.name == "vscode", + ); expect(coder_app).not.toBeNull(); expect(coder_app.instances.length).toBe(1); expect(coder_app.instances[0].attributes.order).toBe(22); From 4021d856badaf16c9df81b1dea5f1f3b03962800 Mon Sep 17 00:00:00 2001 From: Michael Brewer Date: Mon, 3 Jun 2024 12:43:17 -0700 Subject: [PATCH 54/56] fix(code-server): USE_CACHED should still install extensions (#252) --- code-server/run.sh | 39 ++++++++++++++++++++------------------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/code-server/run.sh b/code-server/run.sh index 26a1c6e..c89502b 100755 --- a/code-server/run.sh +++ b/code-server/run.sh @@ -25,36 +25,37 @@ if [ ! -f ~/.local/share/code-server/User/settings.json ]; then echo "${SETTINGS}" > ~/.local/share/code-server/User/settings.json fi -# Check if code-server is already installed for offline or cached mode -if [ -f "$CODE_SERVER" ]; then - if [ "${OFFLINE}" = true ] || [ "${USE_CACHED}" = true ]; then +# Check if code-server is already installed for offline +if [ "${OFFLINE}" = true ]; then + if [ -f "$CODE_SERVER" ]; then echo "🥳 Found a copy of code-server" run_code_server exit 0 fi -fi -# Offline mode always expects a copy of code-server to be present -if [ "${OFFLINE}" = true ]; then + # Offline mode always expects a copy of code-server to be present echo "Failed to find a copy of code-server" exit 1 fi -printf "$${BOLD}Installing code-server!\n" +# If there is no cached install OR we don't want to use a cached install +if [ ! -f "$CODE_SERVER" ] || [ "${USE_CACHED}" != true ]; then + printf "$${BOLD}Installing code-server!\n" -ARGS=( - "--method=standalone" - "--prefix=${INSTALL_PREFIX}" -) -if [ -n "${VERSION}" ]; then - ARGS+=("--version=${VERSION}") -fi + ARGS=( + "--method=standalone" + "--prefix=${INSTALL_PREFIX}" + ) + if [ -n "${VERSION}" ]; then + ARGS+=("--version=${VERSION}") + fi -output=$(curl -fsSL https://code-server.dev/install.sh | sh -s -- "$${ARGS[@]}") -if [ $? -ne 0 ]; then - echo "Failed to install code-server: $output" - exit 1 + output=$(curl -fsSL https://code-server.dev/install.sh | sh -s -- "$${ARGS[@]}") + if [ $? -ne 0 ]; then + echo "Failed to install code-server: $output" + exit 1 + fi + printf "🥳 code-server has been installed in ${INSTALL_PREFIX}\n\n" fi -printf "🥳 code-server has been installed in ${INSTALL_PREFIX}\n\n" # Install each extension... IFS=',' read -r -a EXTENSIONLIST <<< "$${EXTENSIONS}" From c652dbe32006eebbaef01b8777b49eb787a915f8 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 3 Jun 2024 22:49:24 +0300 Subject: [PATCH 55/56] chore: bump version to 1.0.15 in README.md files (#258) Co-authored-by: matifali --- code-server/README.md | 14 +++++++------- coder-login/README.md | 2 +- dotfiles/README.md | 12 ++++++------ git-config/README.md | 6 +++--- github-upload-public-key/README.md | 4 ++-- jfrog-oauth/README.md | 6 +++--- jfrog-token/README.md | 8 ++++---- vscode-desktop/README.md | 4 ++-- 8 files changed, 28 insertions(+), 28 deletions(-) diff --git a/code-server/README.md b/code-server/README.md index 463fb22..e1ca7a2 100644 --- a/code-server/README.md +++ b/code-server/README.md @@ -14,7 +14,7 @@ Automatically install [code-server](https://github.com/coder/code-server) in a w ```tf module "code-server" { source = "registry.coder.com/modules/code-server/coder" - version = "1.0.14" + version = "1.0.15" agent_id = coder_agent.example.id } ``` @@ -28,7 +28,7 @@ module "code-server" { ```tf module "code-server" { source = "registry.coder.com/modules/code-server/coder" - version = "1.0.14" + version = "1.0.15" agent_id = coder_agent.example.id install_version = "4.8.3" } @@ -41,7 +41,7 @@ Install the Dracula theme from [OpenVSX](https://open-vsx.org/): ```tf module "code-server" { source = "registry.coder.com/modules/code-server/coder" - version = "1.0.14" + version = "1.0.15" agent_id = coder_agent.example.id extensions = [ "dracula-theme.theme-dracula" @@ -58,7 +58,7 @@ Configure VS Code's [settings.json](https://code.visualstudio.com/docs/getstarte ```tf module "code-server" { source = "registry.coder.com/modules/code-server/coder" - version = "1.0.14" + version = "1.0.15" agent_id = coder_agent.example.id extensions = ["dracula-theme.theme-dracula"] settings = { @@ -74,7 +74,7 @@ Just run code-server in the background, don't fetch it from GitHub: ```tf module "code-server" { source = "registry.coder.com/modules/code-server/coder" - version = "1.0.14" + version = "1.0.15" agent_id = coder_agent.example.id extensions = ["dracula-theme.theme-dracula", "ms-azuretools.vscode-docker"] } @@ -89,7 +89,7 @@ Run an existing copy of code-server if found, otherwise download from GitHub: ```tf module "code-server" { source = "registry.coder.com/modules/code-server/coder" - version = "1.0.14" + version = "1.0.15" agent_id = coder_agent.example.id use_cached = true extensions = ["dracula-theme.theme-dracula", "ms-azuretools.vscode-docker"] @@ -101,7 +101,7 @@ Just run code-server in the background, don't fetch it from GitHub: ```tf module "code-server" { source = "registry.coder.com/modules/code-server/coder" - version = "1.0.14" + version = "1.0.15" agent_id = coder_agent.example.id offline = true } diff --git a/coder-login/README.md b/coder-login/README.md index d68e088..c9bb333 100644 --- a/coder-login/README.md +++ b/coder-login/README.md @@ -14,7 +14,7 @@ Automatically logs the user into Coder when creating their workspace. ```tf module "coder-login" { source = "registry.coder.com/modules/coder-login/coder" - version = "1.0.2" + version = "1.0.15" agent_id = coder_agent.example.id } ``` diff --git a/dotfiles/README.md b/dotfiles/README.md index 4e3312f..41371ab 100644 --- a/dotfiles/README.md +++ b/dotfiles/README.md @@ -18,7 +18,7 @@ Under the hood, this module uses the [coder dotfiles](https://coder.com/docs/v2/ ```tf module "dotfiles" { source = "registry.coder.com/modules/dotfiles/coder" - version = "1.0.14" + version = "1.0.15" agent_id = coder_agent.example.id } ``` @@ -30,7 +30,7 @@ module "dotfiles" { ```tf module "dotfiles" { source = "registry.coder.com/modules/dotfiles/coder" - version = "1.0.14" + version = "1.0.15" agent_id = coder_agent.example.id } ``` @@ -40,7 +40,7 @@ module "dotfiles" { ```tf module "dotfiles" { source = "registry.coder.com/modules/dotfiles/coder" - version = "1.0.14" + version = "1.0.15" agent_id = coder_agent.example.id user = "root" } @@ -51,13 +51,13 @@ module "dotfiles" { ```tf module "dotfiles" { source = "registry.coder.com/modules/dotfiles/coder" - version = "1.0.14" + version = "1.0.15" agent_id = coder_agent.example.id } module "dotfiles-root" { source = "registry.coder.com/modules/dotfiles/coder" - version = "1.0.14" + version = "1.0.15" agent_id = coder_agent.example.id user = "root" dotfiles_uri = module.dotfiles.dotfiles_uri @@ -71,7 +71,7 @@ You can set a default dotfiles repository for all users by setting the `default_ ```tf module "dotfiles" { source = "registry.coder.com/modules/dotfiles/coder" - version = "1.0.14" + version = "1.0.15" agent_id = coder_agent.example.id default_dotfiles_uri = "https://github.com/coder/dotfiles" } diff --git a/git-config/README.md b/git-config/README.md index 8a0f3ad..90e8442 100644 --- a/git-config/README.md +++ b/git-config/README.md @@ -14,7 +14,7 @@ Runs a script that updates git credentials in the workspace to match the user's ```tf module "git-config" { source = "registry.coder.com/modules/git-config/coder" - version = "1.0.12" + version = "1.0.15" agent_id = coder_agent.example.id } ``` @@ -28,7 +28,7 @@ TODO: Add screenshot ```tf module "git-config" { source = "registry.coder.com/modules/git-config/coder" - version = "1.0.12" + version = "1.0.15" agent_id = coder_agent.example.id allow_email_change = true } @@ -41,7 +41,7 @@ TODO: Add screenshot ```tf module "git-config" { source = "registry.coder.com/modules/git-config/coder" - version = "1.0.12" + version = "1.0.15" agent_id = coder_agent.example.id allow_username_change = false allow_email_change = false diff --git a/github-upload-public-key/README.md b/github-upload-public-key/README.md index 2e1938a..17464f3 100644 --- a/github-upload-public-key/README.md +++ b/github-upload-public-key/README.md @@ -14,7 +14,7 @@ Templates that utilize Github External Auth can automatically ensure that the Co ```tf module "github-upload-public-key" { source = "registry.coder.com/modules/github-upload-public-key/coder" - version = "1.0.14" + version = "1.0.15" agent_id = coder_agent.example.id } ``` @@ -46,7 +46,7 @@ data "coder_external_auth" "github" { module "github-upload-public-key" { source = "registry.coder.com/modules/github-upload-public-key/coder" - version = "1.0.14" + version = "1.0.15" agent_id = coder_agent.example.id external_auth_id = data.coder_external_auth.github.id } diff --git a/jfrog-oauth/README.md b/jfrog-oauth/README.md index 60b3bb7..b7f9d58 100644 --- a/jfrog-oauth/README.md +++ b/jfrog-oauth/README.md @@ -17,7 +17,7 @@ Install the JF CLI and authenticate package managers with Artifactory using OAut ```tf module "jfrog" { source = "registry.coder.com/modules/jfrog-oauth/coder" - version = "1.0.5" + version = "1.0.15" agent_id = coder_agent.example.id jfrog_url = "https://example.jfrog.io" username_field = "username" # If you are using GitHub to login to both Coder and Artifactory, use username_field = "username" @@ -44,7 +44,7 @@ Configure the Python pip package manager to fetch packages from Artifactory whil ```tf module "jfrog" { source = "registry.coder.com/modules/jfrog-oauth/coder" - version = "1.0.5" + version = "1.0.15" agent_id = coder_agent.example.id jfrog_url = "https://example.jfrog.io" username_field = "email" @@ -72,7 +72,7 @@ The [JFrog extension](https://open-vsx.org/extension/JFrog/jfrog-vscode-extensio ```tf module "jfrog" { source = "registry.coder.com/modules/jfrog-oauth/coder" - version = "1.0.5" + version = "1.0.15" agent_id = coder_agent.example.id jfrog_url = "https://example.jfrog.io" username_field = "username" # If you are using GitHub to login to both Coder and Artifactory, use username_field = "username" diff --git a/jfrog-token/README.md b/jfrog-token/README.md index 4a4089a..f903f90 100644 --- a/jfrog-token/README.md +++ b/jfrog-token/README.md @@ -15,7 +15,7 @@ Install the JF CLI and authenticate package managers with Artifactory using Arti ```tf module "jfrog" { source = "registry.coder.com/modules/jfrog-token/coder" - version = "1.0.10" + version = "1.0.15" agent_id = coder_agent.example.id jfrog_url = "https://XXXX.jfrog.io" artifactory_access_token = var.artifactory_access_token @@ -41,7 +41,7 @@ For detailed instructions, please see this [guide](https://coder.com/docs/v2/lat ```tf module "jfrog" { source = "registry.coder.com/modules/jfrog-token/coder" - version = "1.0.10" + version = "1.0.15" agent_id = coder_agent.example.id jfrog_url = "https://YYYY.jfrog.io" artifactory_access_token = var.artifactory_access_token # An admin access token @@ -74,7 +74,7 @@ The [JFrog extension](https://open-vsx.org/extension/JFrog/jfrog-vscode-extensio ```tf module "jfrog" { source = "registry.coder.com/modules/jfrog-token/coder" - version = "1.0.10" + version = "1.0.15" agent_id = coder_agent.example.id jfrog_url = "https://XXXX.jfrog.io" artifactory_access_token = var.artifactory_access_token @@ -94,7 +94,7 @@ data "coder_workspace" "me" {} module "jfrog" { source = "registry.coder.com/modules/jfrog-token/coder" - version = "1.0.10" + version = "1.0.15" agent_id = coder_agent.example.id jfrog_url = "https://XXXX.jfrog.io" artifactory_access_token = var.artifactory_access_token diff --git a/vscode-desktop/README.md b/vscode-desktop/README.md index e0d1ff2..bc8920d 100644 --- a/vscode-desktop/README.md +++ b/vscode-desktop/README.md @@ -16,7 +16,7 @@ Uses the [Coder Remote VS Code Extension](https://github.com/coder/vscode-coder) ```tf module "vscode" { source = "registry.coder.com/modules/vscode-desktop/coder" - version = "1.0.8" + version = "1.0.15" agent_id = coder_agent.example.id } ``` @@ -28,7 +28,7 @@ module "vscode" { ```tf module "vscode" { source = "registry.coder.com/modules/vscode-desktop/coder" - version = "1.0.8" + version = "1.0.15" agent_id = coder_agent.example.id folder = "/home/coder/project" } From 45456ab39426da6b084b1de2709203694497adec Mon Sep 17 00:00:00 2001 From: Michael Brewer Date: Mon, 17 Jun 2024 13:42:45 -0700 Subject: [PATCH 56/56] feat(code-server): add option to skip reinstalling extensions (#259) --- code-server/main.tf | 7 +++++++ code-server/run.sh | 26 ++++++++++++++++++++++++-- 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/code-server/main.tf b/code-server/main.tf index c186c14..30b705c 100644 --- a/code-server/main.tf +++ b/code-server/main.tf @@ -95,6 +95,12 @@ variable "use_cached" { default = false } +variable "use_cached_extensions" { + type = bool + description = "Uses cached copy of extensions, otherwise do a forced upgrade" + default = false +} + variable "extensions_dir" { type = string description = "Override the directory to store extensions in." @@ -122,6 +128,7 @@ resource "coder_script" "code-server" { SETTINGS : replace(jsonencode(var.settings), "\"", "\\\""), OFFLINE : var.offline, USE_CACHED : var.use_cached, + USE_CACHED_EXTENSIONS : var.use_cached_extensions, EXTENSIONS_DIR : var.extensions_dir, FOLDER : var.folder, AUTO_INSTALL_EXTENSIONS : var.auto_install_extensions, diff --git a/code-server/run.sh b/code-server/run.sh index c89502b..8e068b8 100755 --- a/code-server/run.sh +++ b/code-server/run.sh @@ -57,14 +57,33 @@ if [ ! -f "$CODE_SERVER" ] || [ "${USE_CACHED}" != true ]; then printf "🥳 code-server has been installed in ${INSTALL_PREFIX}\n\n" fi +# Get the list of installed extensions... +LIST_EXTENSIONS=$($CODE_SERVER --list-extensions $EXTENSION_ARG) +readarray -t EXTENSIONS_ARRAY <<< "$LIST_EXTENSIONS" +function extension_installed() { + if [ "${USE_CACHED_EXTENSIONS}" != true ]; then + return 1 + fi + for _extension in "$${EXTENSIONS_ARRAY[@]}"; do + if [ "$_extension" == "$1" ]; then + echo "Extension $1 was already installed." + return 0 + fi + done + return 1 +} + # Install each extension... IFS=',' read -r -a EXTENSIONLIST <<< "$${EXTENSIONS}" for extension in "$${EXTENSIONLIST[@]}"; do if [ -z "$extension" ]; then continue fi + if extension_installed "$extension"; then + continue + fi printf "🧩 Installing extension $${CODE}$extension$${RESET}...\n" - output=$($CODE_SERVER "$EXTENSION_ARG" --install-extension "$extension") + output=$($CODE_SERVER "$EXTENSION_ARG" --force --install-extension "$extension") if [ $? -ne 0 ]; then echo "Failed to install extension: $extension: $output" exit 1 @@ -86,7 +105,10 @@ if [ "${AUTO_INSTALL_EXTENSIONS}" = true ]; then printf "🧩 Installing extensions from %s/.vscode/extensions.json...\n" "$WORKSPACE_DIR" extensions=$(jq -r '.recommendations[]' "$WORKSPACE_DIR"/.vscode/extensions.json) for extension in $extensions; do - $CODE_SERVER "$EXTENSION_ARG" --install-extension "$extension" + if extension_installed "$extension"; then + continue + fi + $CODE_SERVER "$EXTENSION_ARG" --force --install-extension "$extension" done fi fi