chore: upgrade bundled terraform binary version (#21092)

Closes:
https://github.com/coder/internal/issues/1172

---------

Co-authored-by: Dean Sheather <dean@deansheather.com>
This commit is contained in:
Jakub Domeracki
2025-12-09 14:49:40 +01:00
committed by GitHub
co-authored by Dean Sheather
parent ce9e7ad909
commit b04e6870ea
33 changed files with 117 additions and 38 deletions
+1 -1
View File
@@ -7,5 +7,5 @@ runs:
- name: Install Terraform
uses: hashicorp/setup-terraform@b9cd54a3c349d3f38e8881555d616ced269862dd # v3.1.2
with:
terraform_version: 1.13.4
terraform_version: 1.14.1
terraform_wrapper: false
+1 -1
View File
@@ -214,7 +214,7 @@ RUN sed -i 's|http://archive.ubuntu.com/ubuntu/|http://mirrors.edge.kernel.org/u
# NOTE: In scripts/Dockerfile.base we specifically install Terraform version 1.12.2.
# Installing the same version here to match.
RUN wget -O /tmp/terraform.zip "https://releases.hashicorp.com/terraform/1.13.4/terraform_1.13.4_linux_amd64.zip" && \
RUN wget -O /tmp/terraform.zip "https://releases.hashicorp.com/terraform/1.14.1/terraform_1.14.1_linux_amd64.zip" && \
unzip /tmp/terraform.zip -d /usr/local/bin && \
rm -f /tmp/terraform.zip && \
chmod +x /usr/local/bin/terraform && \
+1 -1
View File
@@ -273,7 +273,7 @@ EOF
main() {
MAINLINE=1
STABLE=0
TERRAFORM_VERSION="1.13.4"
TERRAFORM_VERSION="1.14.1"
if [ "${TRACE-}" ]; then
set -x
+2 -2
View File
@@ -22,10 +22,10 @@ var (
// when Terraform is not available on the system.
// NOTE: Keep this in sync with the version in scripts/Dockerfile.base.
// NOTE: Keep this in sync with the version in install.sh.
TerraformVersion = version.Must(version.NewVersion("1.13.4"))
TerraformVersion = version.Must(version.NewVersion("1.14.1"))
minTerraformVersion = version.Must(version.NewVersion("1.1.0"))
maxTerraformVersion = version.Must(version.NewVersion("1.13.9")) // use .9 to automatically allow patch releases
maxTerraformVersion = version.Must(version.NewVersion("1.14.9")) // use .9 to automatically allow patch releases
errTerraformMinorVersionMismatch = xerrors.New("Terraform binary minor version mismatch.")
)
+1 -1
View File
@@ -102,7 +102,7 @@ func (p *terraformProxy) handleGet(w http.ResponseWriter, r *http.Request) {
require.NoError(p.t, err)
// update index.json so urls in it point to proxy by making them relative
// "https://releases.hashicorp.com/terraform/1.13.4/terraform_1.13.4_windows_amd64.zip" -> "/terraform/1.13.4/terraform_1.13.4_windows_amd64.zip"
// "https://releases.hashicorp.com/terraform/1.14.1/terraform_1.14.1_windows_amd64.zip" -> "/terraform/1.14.1/terraform_1.14.1_windows_amd64.zip"
if strings.HasSuffix(r.URL.Path, "index.json") {
body = []byte(strings.ReplaceAll(string(body), terraformURL, ""))
}
+5
View File
@@ -3,6 +3,11 @@
set -euo pipefail
cd "$(dirname "${BASH_SOURCE[0]}")/resources"
# These environment variables influence the coder provider.
for v in $(env | grep -E '^CODER_' | cut -d= -f1); do
unset "$v"
done
generate() {
local name="$1"
@@ -41,6 +41,7 @@
"sidebar_app": []
},
"after_unknown": {
"enabled": true,
"id": true,
"prompt": true,
"sidebar_app": []
@@ -81,11 +82,11 @@
"schema_version": 1,
"values": {
"access_port": 443,
"access_url": "https://dev.coder.com/",
"access_url": "https://mydeployment.coder.com",
"id": "5c06d6ea-101b-4069-8d14-7179df66ebcc",
"is_prebuild": false,
"is_prebuild_claim": false,
"name": "coder",
"name": "default",
"prebuild_count": 0,
"start_count": 1,
"template_id": "",
@@ -104,7 +105,7 @@
"schema_version": 0,
"values": {
"email": "default@example.com",
"full_name": "coder",
"full_name": "default",
"groups": [],
"id": "8796d8d7-88f1-445a-bea7-65f5cf530b95",
"login_type": null,
@@ -27,11 +27,11 @@
"schema_version": 1,
"values": {
"access_port": 443,
"access_url": "https://dev.coder.com/",
"access_url": "https://mydeployment.coder.com",
"id": "bca94359-107b-43c9-a272-99af4b239aad",
"is_prebuild": false,
"is_prebuild_claim": false,
"name": "coder",
"name": "default",
"prebuild_count": 0,
"start_count": 1,
"template_id": "",
@@ -50,7 +50,7 @@
"schema_version": 0,
"values": {
"email": "default@example.com",
"full_name": "coder",
"full_name": "default",
"groups": [],
"id": "cb8c55f2-7f66-4e69-a584-eb08f4a7cf04",
"login_type": null,
@@ -79,8 +79,9 @@
"schema_version": 1,
"values": {
"app_id": "5ece4674-dd35-4f16-88c8-82e40e72e2fd",
"enabled": false,
"id": "c4f032b8-97e4-42b0-aa2f-30a9e698f8d4",
"prompt": "default",
"prompt": null,
"sidebar_app": []
},
"sensitive_values": {
@@ -66,6 +66,7 @@
},
"after_unknown": {
"app_id": true,
"enabled": true,
"id": true,
"prompt": true,
"sidebar_app": [
@@ -97,6 +98,7 @@
"sidebar_app": []
},
"after_unknown": {
"enabled": true,
"id": true,
"prompt": true,
"sidebar_app": []
@@ -137,11 +139,11 @@
"schema_version": 1,
"values": {
"access_port": 443,
"access_url": "https://dev.coder.com/",
"access_url": "https://mydeployment.coder.com",
"id": "344575c1-55b9-43bb-89b5-35f547e2cf08",
"is_prebuild": false,
"is_prebuild_claim": false,
"name": "sebenza-nonix",
"name": "default",
"prebuild_count": 0,
"start_count": 1,
"template_id": "",
@@ -173,7 +175,9 @@
},
"sensitive_values": {
"groups": [],
"oidc_access_token": true,
"rbac_roles": [],
"session_token": true,
"ssh_private_key": true
}
}
@@ -27,11 +27,11 @@
"schema_version": 1,
"values": {
"access_port": 443,
"access_url": "https://dev.coder.com/",
"access_url": "https://mydeployment.coder.com",
"id": "b6713709-6736-4d2f-b3da-7b5b242df5f4",
"is_prebuild": false,
"is_prebuild_claim": false,
"name": "sebenza-nonix",
"name": "default",
"prebuild_count": 0,
"start_count": 1,
"template_id": "",
@@ -63,7 +63,9 @@
},
"sensitive_values": {
"groups": [],
"oidc_access_token": true,
"rbac_roles": [],
"session_token": true,
"ssh_private_key": true
}
},
@@ -77,8 +79,9 @@
"schema_version": 1,
"values": {
"app_id": "5ece4674-dd35-4f16-88c8-82e40e72e2fd",
"enabled": false,
"id": "89e6ab36-2e98-4d13-9b4c-69b7588b7e1d",
"prompt": "default",
"prompt": null,
"sidebar_app": [
{
"id": "5ece4674-dd35-4f16-88c8-82e40e72e2fd"
@@ -101,8 +104,9 @@
"schema_version": 1,
"values": {
"app_id": "5ece4674-dd35-4f16-88c8-82e40e72e2fd",
"enabled": false,
"id": "5ece4674-dd35-4f16-88c8-82e40e72e2fd",
"prompt": "default",
"prompt": null,
"sidebar_app": []
},
"sensitive_values": {
@@ -50,6 +50,7 @@
},
"after_unknown": {
"app_id": true,
"enabled": true,
"id": true,
"prompt": true,
"sidebar_app": [
@@ -94,11 +95,11 @@
"schema_version": 1,
"values": {
"access_port": 443,
"access_url": "https://dev.coder.com/",
"access_url": "https://mydeployment.coder.com",
"id": "344575c1-55b9-43bb-89b5-35f547e2cf08",
"is_prebuild": false,
"is_prebuild_claim": false,
"name": "sebenza-nonix",
"name": "default",
"prebuild_count": 0,
"start_count": 1,
"template_id": "",
@@ -130,7 +131,9 @@
},
"sensitive_values": {
"groups": [],
"oidc_access_token": true,
"rbac_roles": [],
"session_token": true,
"ssh_private_key": true
}
}
@@ -27,11 +27,11 @@
"schema_version": 1,
"values": {
"access_port": 443,
"access_url": "https://dev.coder.com/",
"access_url": "https://mydeployment.coder.com",
"id": "b6713709-6736-4d2f-b3da-7b5b242df5f4",
"is_prebuild": false,
"is_prebuild_claim": false,
"name": "sebenza-nonix",
"name": "default",
"prebuild_count": 0,
"start_count": 1,
"template_id": "",
@@ -63,7 +63,9 @@
},
"sensitive_values": {
"groups": [],
"oidc_access_token": true,
"rbac_roles": [],
"session_token": true,
"ssh_private_key": true
}
},
@@ -77,8 +79,9 @@
"schema_version": 1,
"values": {
"app_id": "5ece4674-dd35-4f16-88c8-82e40e72e2fd",
"enabled": false,
"id": "89e6ab36-2e98-4d13-9b4c-69b7588b7e1d",
"prompt": "default",
"prompt": null,
"sidebar_app": [
{
"id": "5ece4674-dd35-4f16-88c8-82e40e72e2fd"
@@ -147,11 +147,11 @@
"schema_version": 1,
"values": {
"access_port": 443,
"access_url": "https://dev.coder.com/",
"access_url": "https://mydeployment.coder.com",
"id": "0b7fc772-5e27-4096-b8a3-9e6a8b914ebe",
"is_prebuild": false,
"is_prebuild_claim": false,
"name": "kacper",
"name": "default",
"prebuild_count": 0,
"start_count": 1,
"template_id": "",
@@ -170,7 +170,7 @@
"schema_version": 0,
"values": {
"email": "default@example.com",
"full_name": "kacpersaw",
"full_name": "default",
"groups": [],
"id": "1ebd1795-7cf2-47c5-8024-5d56e68f1681",
"login_type": null,
@@ -27,11 +27,11 @@
"schema_version": 1,
"values": {
"access_port": 443,
"access_url": "https://dev.coder.com/",
"access_url": "https://mydeployment.coder.com",
"id": "dfa1dbe8-ad31-410b-b201-a4ed4d884938",
"is_prebuild": false,
"is_prebuild_claim": false,
"name": "kacper",
"name": "default",
"prebuild_count": 0,
"start_count": 1,
"template_id": "",
@@ -50,7 +50,7 @@
"schema_version": 0,
"values": {
"email": "default@example.com",
"full_name": "kacpersaw",
"full_name": "default",
"groups": [],
"id": "f5e82b90-ea22-4288-8286-9cf7af651143",
"login_type": null,
@@ -136,7 +136,9 @@
"id": "github",
"optional": null
},
"sensitive_values": {}
"sensitive_values": {
"access_token": true
}
},
{
"address": "data.coder_external_auth.gitlab",
@@ -150,7 +152,9 @@
"id": "gitlab",
"optional": true
},
"sensitive_values": {}
"sensitive_values": {
"access_token": true
}
}
]
}
@@ -16,7 +16,9 @@
"id": "github",
"optional": null
},
"sensitive_values": {}
"sensitive_values": {
"access_token": true
}
},
{
"address": "data.coder_external_auth.gitlab",
@@ -30,7 +32,9 @@
"id": "gitlab",
"optional": true
},
"sensitive_values": {}
"sensitive_values": {
"access_token": true
}
},
{
"address": "coder_agent.main",
@@ -56,6 +56,7 @@
"share": "owner",
"slug": "app1",
"subdomain": null,
"tooltip": null,
"url": null
},
"sensitive_values": {
@@ -83,6 +84,7 @@
"share": "owner",
"slug": "app2",
"subdomain": null,
"tooltip": null,
"url": null
},
"sensitive_values": {
@@ -175,6 +177,7 @@
"share": "owner",
"slug": "app1",
"subdomain": null,
"tooltip": null,
"url": null
},
"after_unknown": {
@@ -213,6 +216,7 @@
"share": "owner",
"slug": "app2",
"subdomain": null,
"tooltip": null,
"url": null
},
"after_unknown": {
@@ -72,6 +72,7 @@
"share": "owner",
"slug": "app1",
"subdomain": null,
"tooltip": null,
"url": null
},
"sensitive_values": {
@@ -104,6 +105,7 @@
"share": "owner",
"slug": "app2",
"subdomain": null,
"tooltip": null,
"url": null
},
"sensitive_values": {
@@ -86,6 +86,7 @@
"share": "owner",
"slug": "app1",
"subdomain": null,
"tooltip": null,
"url": null
},
"sensitive_values": {
@@ -118,6 +119,7 @@
"share": "owner",
"slug": "app2",
"subdomain": true,
"tooltip": null,
"url": null
},
"sensitive_values": {
@@ -146,6 +148,7 @@
"share": "owner",
"slug": "app3",
"subdomain": false,
"tooltip": null,
"url": null
},
"sensitive_values": {
@@ -294,6 +297,7 @@
"share": "owner",
"slug": "app1",
"subdomain": null,
"tooltip": null,
"url": null
},
"after_unknown": {
@@ -337,6 +341,7 @@
"share": "owner",
"slug": "app2",
"subdomain": true,
"tooltip": null,
"url": null
},
"after_unknown": {
@@ -378,6 +383,7 @@
"share": "owner",
"slug": "app3",
"subdomain": false,
"tooltip": null,
"url": null
},
"after_unknown": {
@@ -116,6 +116,7 @@
"share": "owner",
"slug": "app1",
"subdomain": null,
"tooltip": null,
"url": null
},
"sensitive_values": {
@@ -153,6 +154,7 @@
"share": "owner",
"slug": "app2",
"subdomain": true,
"tooltip": null,
"url": null
},
"sensitive_values": {
@@ -186,6 +188,7 @@
"share": "owner",
"slug": "app3",
"subdomain": false,
"tooltip": null,
"url": null
},
"sensitive_values": {
@@ -2,7 +2,7 @@ terraform {
required_providers {
coder = {
source = "coder/coder"
version = "2.2.0-pre0"
version = ">=2.2.0"
}
}
}
@@ -134,6 +134,7 @@
"share": "owner",
"slug": "app1",
"subdomain": null,
"tooltip": null,
"url": null
},
"sensitive_values": {
@@ -166,6 +167,7 @@
"share": "owner",
"slug": "app2",
"subdomain": true,
"tooltip": null,
"url": null
},
"sensitive_values": {
@@ -369,6 +371,7 @@
"share": "owner",
"slug": "app1",
"subdomain": null,
"tooltip": null,
"url": null
},
"after_unknown": {
@@ -412,6 +415,7 @@
"share": "owner",
"slug": "app2",
"subdomain": true,
"tooltip": null,
"url": null
},
"after_unknown": {
@@ -456,7 +460,7 @@
"coder": {
"name": "coder",
"full_name": "registry.terraform.io/coder/coder",
"version_constraint": "2.2.0-pre0"
"version_constraint": ">= 2.2.0"
},
"null": {
"name": "null",
@@ -164,6 +164,7 @@
"share": "owner",
"slug": "app1",
"subdomain": null,
"tooltip": null,
"url": null
},
"sensitive_values": {
@@ -201,6 +202,7 @@
"share": "owner",
"slug": "app2",
"subdomain": true,
"tooltip": null,
"url": null
},
"sensitive_values": {
@@ -55,6 +55,7 @@
"share": "owner",
"slug": "app1",
"subdomain": null,
"tooltip": null,
"url": null
},
"sensitive_values": {
@@ -87,6 +88,7 @@
"share": "owner",
"slug": "app2",
"subdomain": true,
"tooltip": null,
"url": null
},
"sensitive_values": {
@@ -115,6 +117,7 @@
"share": "owner",
"slug": "app3",
"subdomain": false,
"tooltip": null,
"url": null
},
"sensitive_values": {
@@ -206,6 +209,7 @@
"share": "owner",
"slug": "app1",
"subdomain": null,
"tooltip": null,
"url": null
},
"after_unknown": {
@@ -249,6 +253,7 @@
"share": "owner",
"slug": "app2",
"subdomain": true,
"tooltip": null,
"url": null
},
"after_unknown": {
@@ -290,6 +295,7 @@
"share": "owner",
"slug": "app3",
"subdomain": false,
"tooltip": null,
"url": null
},
"after_unknown": {
@@ -71,6 +71,7 @@
"share": "owner",
"slug": "app1",
"subdomain": null,
"tooltip": null,
"url": null
},
"sensitive_values": {
@@ -108,6 +109,7 @@
"share": "owner",
"slug": "app2",
"subdomain": true,
"tooltip": null,
"url": null
},
"sensitive_values": {
@@ -141,6 +143,7 @@
"share": "owner",
"slug": "app3",
"subdomain": false,
"tooltip": null,
"url": null
},
"sensitive_values": {
@@ -162,6 +162,8 @@
"schema_version": 1,
"values": {
"default": true,
"description": null,
"icon": null,
"id": "development",
"name": "development",
"parameters": {
@@ -194,6 +196,8 @@
"schema_version": 1,
"values": {
"default": true,
"description": null,
"icon": null,
"id": "production",
"name": "production",
"parameters": {
@@ -42,6 +42,8 @@
"schema_version": 1,
"values": {
"default": true,
"description": null,
"icon": null,
"id": "development",
"name": "development",
"parameters": {
@@ -74,6 +76,8 @@
"schema_version": 1,
"values": {
"default": true,
"description": null,
"icon": null,
"id": "production",
"name": "production",
"parameters": {
@@ -162,6 +162,8 @@
"schema_version": 1,
"values": {
"default": true,
"description": null,
"icon": null,
"id": "development",
"name": "development",
"parameters": {
@@ -194,6 +196,8 @@
"schema_version": 1,
"values": {
"default": false,
"description": null,
"icon": null,
"id": "production",
"name": "production",
"parameters": {
@@ -42,6 +42,8 @@
"schema_version": 1,
"values": {
"default": true,
"description": null,
"icon": null,
"id": "development",
"name": "development",
"parameters": {
@@ -74,6 +76,8 @@
"schema_version": 1,
"values": {
"default": false,
"description": null,
"icon": null,
"id": "production",
"name": "production",
"parameters": {
+2
View File
@@ -162,6 +162,8 @@
"schema_version": 1,
"values": {
"default": false,
"description": null,
"icon": null,
"id": "My First Project",
"name": "My First Project",
"parameters": {
@@ -42,6 +42,8 @@
"schema_version": 1,
"values": {
"default": false,
"description": null,
"icon": null,
"id": "My First Project",
"name": "My First Project",
"parameters": {
+1 -1
View File
@@ -1 +1 @@
1.13.4
1.14.1
+1 -1
View File
@@ -27,7 +27,7 @@ RUN apk add --no-cache \
# Terraform was disabled in the edge repo due to a build issue.
# https://gitlab.alpinelinux.org/alpine/aports/-/commit/f3e263d94cfac02d594bef83790c280e045eba35
# Using wget for now. Note that busybox unzip doesn't support streaming.
RUN ARCH="$(arch)"; if [ "${ARCH}" == "x86_64" ]; then ARCH="amd64"; elif [ "${ARCH}" == "aarch64" ]; then ARCH="arm64"; elif [ "${ARCH}" == "armv7l" ]; then ARCH="arm"; fi; wget -O /tmp/terraform.zip "https://releases.hashicorp.com/terraform/1.13.4/terraform_1.13.4_linux_${ARCH}.zip" && \
RUN ARCH="$(arch)"; if [ "${ARCH}" == "x86_64" ]; then ARCH="amd64"; elif [ "${ARCH}" == "aarch64" ]; then ARCH="arm64"; elif [ "${ARCH}" == "armv7l" ]; then ARCH="arm"; fi; wget -O /tmp/terraform.zip "https://releases.hashicorp.com/terraform/1.14.1/terraform_1.14.1_linux_${ARCH}.zip" && \
busybox unzip /tmp/terraform.zip -d /usr/local/bin && \
rm -f /tmp/terraform.zip && \
chmod +x /usr/local/bin/terraform && \