Skip to content

chore(gha): adopt the new jsii-terraform image and test Terraform 1.5.7 + 1.16.1 - #398

Merged
so0k merged 3 commits into
open-constructs:mainfrom
jsteinich:chore/bump-jsii-terraform-digest
Sep 9, 2026
Merged

chore(gha): adopt the new jsii-terraform image and test Terraform 1.5.7 + 1.16.1#398
so0k merged 3 commits into
open-constructs:mainfrom
jsteinich:chore/bump-jsii-terraform-digest

Conversation

@jsteinich

@jsteinich jsteinich commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

Related issue

Follow-up to #394. Step 2 of the sequencing agreed in #337. Rebased on #383, which unblocks the ceiling half.

Description

Three commits, all consequences of #394 having published a new image and #383 having fixed cdktn get on modern Terraform.

1. Bump the pinned image digest — all 27 references across 11 workflow files move to sha256:62c00a31..., the image built from 2f29d5a. Confirmed to be that build: :latest and the immutable 0.24.0-2f29d5a8d45b047c5450eee9640e1cbaaee98c8d tag resolve to the same digest. First image carrying OpenTofu 1.12.6, Terraform 1.5.7 and 1.16.1, the fail-fast install layers and the post-install binary verification.

2. Move the floor leg from Terraform 1.5.5 to 1.5.7 — 1.5.7 is the newest pre-fork release and the exact floor cdktn already declares. DEFAULT_TARGET_VERSIONS in packages/cdktn/src/validations/target-versions.ts is { terraform: ">=1.5.7", opentofu: ">=1.6.0" }, so every project that declares no targetVersions is told 1.5.7 is supported, while CI was testing 1.5.5 — a version nothing declares.

3. Raise the ceiling from 1.6.5 to 1.16.1 — unblocked by #383 (54a8217). cdktn get was broken from Terraform 1.15.7 onward for any module declaring configuration_aliases (#379); until that fix was in main this would have landed red.

Both version changes are renames of existing legs, not additionstested goes from ["1.5.5", "1.6.5"] to ["1.5.7", "1.16.1"], so the integration cross-product keeps the same job count and the CI bill is unchanged. The two legs now span the declared floor and current stable instead of two adjacent 2023 releases, which is what #337 needed in order to exercise the newer-protocol schema sections (functions, ephemeral_resource_schemas, write_only) at all — the previous 1.6.5 ceiling structurally could not emit them.

default moves to 1.16.1 with it. That drives the examples matrix (tools/build-example-matrix.mjs reads .default) and — less obviously — every provider-integration run: provider-integration.yml's terraform_version input is defaulted rather than passed, and none of its three callers override it. The duplicated unit-test matrices in pr-unit.yml and release.yml move with it too.

Deliberately not included

  • Pruning 1.5.5 and 1.6.5 from available. They are unreferenced now, but editing .terraform.versions.json only rebuilds the image on merge — the workflows stay pinned to the current digest, so the prune would not take effect until a later bump. It belongs with the next digest bump.
  • tools/generate-function-bindings/function-availability/functions-matrix.json still lists 1.6.5. That is generated function-availability data covering every release, not a CI version.

Follow-ups

Checklist

  • I have updated the PR title to match CDKTN's style guide
  • I have run the linter on my code locally
  • I have performed a self-review of my code
  • I have commented my code, particularly in hard-to-understand areas
  • I have made corresponding changes to the documentation if applicable — n/a
  • My changes generate no new warnings
  • I have added tests that prove my fix is effective or that my feature works if applicable — n/a; this PR's own CI run is the verification, since it exercises the new image on both new version legs
  • New and existing unit tests pass locally with my changes — n/a, no source changes

🤖 Generated with Claude Code

@jsteinich
jsteinich requested a review from a team as a code owner September 8, 2026 00:35
@jsteinich
jsteinich force-pushed the chore/bump-jsii-terraform-digest branch from 4761a46 to 41f78d7 Compare September 8, 2026 11:05
@jsteinich jsteinich changed the title chore(gha): adopt the new jsii-terraform image and move the floor leg to Terraform 1.5.7 chore(gha): adopt the new jsii-terraform image and test Terraform 1.5.7 + 1.16.1 Sep 8, 2026
@so0k

This comment was marked as resolved.

jsteinich and others added 3 commits September 9, 2026 16:27
…TF 1.16.1

Points all 27 pinned references across the 11 workflow files at the image
published from 2f29d5a (open-constructs#394), which is the first one carrying OpenTofu
1.12.6, Terraform 1.5.7 and 1.16.1, the fail-fast install layers and the
post-install binary verification.

This is purely the digest bump. `tested` still runs 1.5.5 and 1.6.5, so no
job counts or version coverage change here — that comes next, now that the
binaries are actually present in the image CI runs.

Digest confirmed to be the build of 2f29d5a: the immutable
0.24.0-2f29d5a8d45b047c5450eee9640e1cbaaee98c8d tag and :latest both
resolve to sha256:62c00a31...

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
1.5.7 is the newest pre-fork release and the exact floor cdktn already
declares: DEFAULT_TARGET_VERSIONS in
packages/cdktn/src/validations/target-versions.ts is `terraform: ">=1.5.7"`.
The matrix was testing 1.5.5, which nothing declares support for.

This is a rename of an existing leg, not a new one — same number of jobs,
same cross-product. It relies on the image digest bumped in the previous
commit, which is the first to carry a terraform1.5.7 binary.

The two hardcoded terraform_version lists in pr-unit.yml and release.yml
move with it. They duplicate `tested` from .terraform.versions.json rather
than deriving from it; worth fixing separately so a version change is a
one-file edit.

Deliberately not included: moving the upper leg from 1.6.5 to 1.16.1, and
`default` with it. `cdktn get` is broken from Terraform 1.15.7 on for any
module declaring configuration_aliases (open-constructs#379); the fix is open in open-constructs#383 and
is not in main, so raising the ceiling now would land red. That half should
follow open-constructs#383.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Unblocked by open-constructs#383, which landed in 54a8217. `cdktn get` was broken from
Terraform 1.15.7 on for any module declaring configuration_aliases (open-constructs#379),
so until that fix was in main this half would have landed red.

Like the floor-leg move, this renames the upper leg rather than adding one:
`tested` goes from 1.5.7 + 1.6.5 to 1.5.7 + 1.16.1, so the integration
cross-product keeps the same job count. Together the two legs now span the
declared floor and current stable instead of two adjacent 2023 releases,
which is what open-constructs#337 needed to exercise the newer-protocol schema sections at
all.

`default` moves to 1.16.1 as well. That is what the examples matrix builds
against (tools/build-example-matrix.mjs reads `.default`) and, less
obviously, what every provider-integration run uses: the terraform_version
input in provider-integration.yml is defaulted rather than passed, and none
of its three callers override it.

The duplicated unit-test matrices in pr-unit.yml and release.yml move with
it. `available` is deliberately left alone — 1.5.5 and 1.6.5 are now
unreferenced, but pruning them only takes effect once the workflows repin to
a rebuilt image, so it belongs with the next digest bump rather than here.

Not touched: tools/generate-function-bindings/function-availability/
functions-matrix.json, which lists 1.6.5 among every other release as
generated function-availability data, not as a CI version.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@so0k
so0k force-pushed the chore/bump-jsii-terraform-digest branch from 41f78d7 to 2f51249 Compare September 9, 2026 09:27
@so0k
so0k merged commit 3ad760b into open-constructs:main Sep 9, 2026
258 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants