Releases: hashicorp/terraform-cdk
v0.14.1
v0.14.0
Breaking changes
Back in October, we announced significant performance improvements with CDKTF version 0.13. These improvements required breaking changes for which we provided backward-compatible provider bindings in version 0.13. As announced, the 0.12 (non-namespaced) provider bindings will no longer work starting with CDKTF 0.14. Refer to the upgrade guide for 0.13 to learn how to update your imports for these changes.
feat
- feat(cli): add provider upgrade command #2202
- feat(cli): Add option to select providers to add with init #2184
- feat(cli): only re-generate provider bindings on get if necessary #2266
- feat(lib): expose operators on their own API class #2292
- feat(lib): Introduce
Token.nullValue()
that allows to pass null to Terraform configurations in languages other than TypeScript #2284 - feat(cli): Automatically Update Locked Providers #2020
- feat(lib): Added testing matchers for Providers #2154
- feat(lib): adds failed process output to test matcher APIs #1953 #2196
fix
- fix(cli): do not check for version when DISABLE_VERSION_CHECK #2257
- fix(docs): fix module code example #2256
- fix(docs): fix links to pre-built provider repositories #2264
- fix(docs): fix a couple of typos in stacks.mdx #2269
- fix(examples): fix CI for Python examples #2291
- fix: set global flag to be able to start search for code blocks at an index #2274
chore
- chore(docs): Add CDK for Terraform to page titles #2278
- chore: document Python hash error in local development #2272
- chore: document JSII debug flags in contribution guide #2271
- chore: update LICENSE #2268
- chore(cli): Prevent minification when watching cdktf-cli #2262
- chore(lib): Add deprecation notices to backends that were deprecated in Terraform v1.2.3 and removed in TF 1.3 #2261
- chore: adding mgarrell777 to docs codeowners to be notified for docs changes #2259
- chore: add ecs-microservices example #2252
- chore: sync version and changelog from the 0.13.3 backported release #2251
- chore: install pre-built provider with exact version #2249
- chore: cache examples and terraform plugins #2213
v0.13.3
v0.13.2
fix
- fix(provider-generator): don't require arrays wrapping variable / output declarations #2199
- fix(cli): Use 'id' as argument name for all templates #2119
- fix(cli): use a custom user-agent when talking to TFC #2210
- fix(cli): Ignore local obj/ dir in C# template #2217
- fix(deps): Use apt instead of yum, since base image is debian based now #2216
- fix: correctly denote all of our redirects as temporary because they might change #2218
chore
- chore: Update Go to version 1.18 on windows workflows #2219
- chore: Update Digital Team Files #2203
- chore(cli): change url to pre-built providers to one we control #2181
- chore(cli): Move things to src/ folder #2130
- chore(deps): Update docker image to use new jsii/superchain tag #2214
- chore(docs): rewrite internal redirects #2204
feat
- feat: add CODEOWNERS file for automatic PR review assignment #2212
v0.13.1
feat
- feat(cli): Add support for terraform's parallelism flag #2107
- feat: add redirect link to pre-built providers json file #2180
- feat(cli): link to troubleshooting page for error #2192
fix
- fix(provider-generator): change Static resource class to StaticResource as their namespace 'static' is not valid in TypeScript re-exports #2168
- fix(cli): dont wrap list terminal output #2188
- fix(cli): handle missing package versions for non-npm packages #2177
- fix(docs): Fix upgrade guide imports for Python #2171
- fix(docs): update old config key #2195
chore
- chore: Update link to blogpost #2176
v0.13.0
Breaking Changes
Abbreviated version below, for a guide see Upgrade Guide for 0.13.
0.13 includes performance improvements to generated providers. Instead of exporting a flat list of exports including all supported resources and data sources, we now export each construct and it's associated structures in their own namespace. Due to this, the way you import constructs from your CDKTF application will change. For more information regarding this release, and some of the reasonings behind the changes, please check out the version 0.13 release post.
Typescript
// Before version 0.13
import { Container, Image, DockerProvider } from "@ckdtf/provider-docker";
// Version 0.13
import { Image } from "@cdktf/provider-docker/lib/image";
import { DockerProvider } from "@cdktf/provider-docker/lib/provider";
import { Container } from "@cdktf/provider-docker/lib/container";
Python
from cdktf_cdktf_provider_kubernetes.kubernetes import Namespace, Service, Deployment, KubernetesProvider
v0.12.3
Breaking Changes
A very minor change in the UX of the cdktf get
command now generates the provider bindings for all languages (except TypeScript) in parallel. This speeds up the process in general, but on devices with limited memory it could lead to Out of Memory errors. If this happens you can limit the parallelism by providing the parallelism flag: cdktf get --parallelism=1
.
fix
- fix(provider-generator): Add special case in case resource is named 'object' #2138
- fix(docs): Fix two small bugs in the code causing it to not compile #2128
- fix(lib): Add missing config options for AzurermBackend #2127
- fix(cli): Update require package in template #2118
- fix: Change url of
pipenv
in log #2117 - fix(cli): support using remote execution in Terraform Cloud with up to 500 MB (instead of 10MB) #2108
- fix(docs): remove empty code block #2102
- fix: update constructs and go runtime versions #2096
- fix(cli): add sentry DSN in build process #2085
- fix(docs): fix wrong command mentioned in TFC docs #2083
- fix: let create changelog script use commit hashes from PRs instead of finding merge commit messages that may not always exist #2068
feat
- feat(cli): include language used in cdktf init telemetry event #2123
- feat(cli): support generating provider bindings in parallel #2111
chore
- chore(cli): Use the npm package's repository field for generating go package name #2145
- chore: npm-check-updates && yarn upgrade #2142
- chore: split up unit tests per package #2122
- chore: Update diagram with new provider count #2104
- chore: change YT link to cut version #2103
- chore(cli): Don't trim output for unstructured logs #2100
- chore: only run expensive tasks on source code changes #2099
- chore: Support building with Go 1.19 #2098
- chore: fix go azure example #2092
- chore: fix the project board TS errors #2091
- chore: npm-check-updates && yarn upgrade #2090
- chore: npm-check-updates && yarn upgrade #2077
- chore(examples): clean up examples #2069
- chore(docs): Check whether links work :) #2063
- chore: ensure we have license header #1960
- chore: measure and print memory consumption of build and synth steps for examples in CI #2060
- chore: start running tests against TF 1.2.8 and drop running against 1.0.7 #2058
v0.12.2
Breaking Changes
A very minor change in the interface names for provisioners occured to support them in JSII languages, renaming the following interfaces:
ISSHProvisionerConnection
toSSHProvisionerConnection
IWinrmProvisionerConnection
toWinrmProvisionerConnection
IFileProvisioner
toFileProvisioner
ILocalExecProvisioner
toLocalExecProvisioner
IRemoteExecProvisioner
toRemoteExecProvisioner
Another very minor change is that we now use the CloudBackend
by default when running cdktf init. This requires Terraform >=1.1, therefore an error is thrown on cdktf init
if you want to use Terraform Cloud and are on an older version. Already existing projects are not affected and you can use cdktf init --local
and configure the RemoteBackend
if you need to use an older version.
feat
- feat(cli): throw an error if a user tries to create a new project with TFC on an old TF version #2062
- feat: install time tool in Docker container to be able to use it for memory consumption tracking in tests #2059
- feat: add Go port of TypeScript Google CloudRun example #2035
- feat(lib): add support for cloud backend #1924
fix
- fix(provider-generator): use terraform get instead of init to download modules #2057
- fix(lib): Add missing config options for S3Backend: skipRegionValidation, assumeRolePolicyArns, assumeRoleTags, and assumeRoleTransitiveTagKeys #2050
- fix: support provisioners in JSII languages #2042
- fix(hcl2json): add fs-extra to dependencies #2040
- fix(lib): Improve error message when provider constructs are missing #2039
- fix(cli): Make provider add command case insensitive for provider names #2038
- fix(cli): run a speculative plan on diff #2033
chore
- chore(cli): remove red and magenta from colors for stack names #2064
- chore: add link to hybrid module talk #2054
- chore: make Terraform 1.2.8 available in Docker image #2051
- chore: document updating the API documentation #2046
- chore(docs): Remove positional language + fix style nits #2045
- chore(lib): deprecate Resource in favor of Construct #2044
- chore: update links in our youtube playlist examples #2043
- chore: npm-check-updates && yarn upgrade #2025
- chore: translate parts of the documentation #2011
refactor
- refactor: port example script to JS #2047
v0.12.1
fix
- fix(cli): add major versions greater 1 to package name when installing pre-built providers for go #2002
- fix(cli): Wait for other stacks to complete if one of them failed #1987
- fix(cli): fix version detection for Java being a bit too optimistic about the package name #1995
- fix(cli): Improve wording around starting from an existing Terraform project #1985
- fix(tests): force local as Go now has pre-built providers #2005
- fix(tests): as predicted, the test needs to be skipped for a bit of time #2004
- fix(docs): fix aspects example not being valid TypeScript #1986
- fix(docs): fix links by removing all links to the providers-and-resources page that does not exist anymore #2010
- fix: don't lock state in tests #1990
- fix: don't overwrite all
NODE_OPTIONS
#2009
chore
v0.12.0
Breaking Changes
cdktf get
exits with 0 exit code when no provider / module specifications are found in the cdktf.json
Previously we would throw an error and exit with 1 if there were no provider or module specifications in the cdktf.json
file. This can be inconvenient if cdktf get
is part of a workflow.
Fn.merge
is split into Fn.mergeLists
and Fn.mergeMaps
The Terraform merge
function can merge both lists and maps, but this can cause issues when using the result in a typed language. Therefore we split it into Fn.mergeLists
and Fn.mergeMaps
, this means you need to change your cdktf programs code.
Simplified interfaces of recursive attributes
The generated provider bindings are based on the Terraform schema which does not support recursion and hence uses a large, explicit structure instead. Previously this resulted in long names such as e.g. Wafv2WebAclRuleStatementAndStatementStatementOrStatementStatementLabelMatchStatement
. In 0.12 we implemented a first rough detection for this underlying recursion which drastically reduced the amount of generated interfaces as they now are converted to recursive data structures themselves.
If you are currently using those types e.g. in a language like Java, you will need to change them to the new shorter names.
feat
- feat(lib): Introduce Iterator and
for_each
to implement apply time iteration #1830 - feat(lib): Introduce TerraformDynamicBlock to enable iterator usage on blocks #1882
- feat(cli): support refresh only option for diff and deploy #1851
- feat(docs): Add iterator docs page #1840
- feat(docs): document FORCE_COLOR env var that allows disabling colored output #1917
- feat(cli): plug provider add command in help printed after initializing a new cdktf project #1833
- feat(lib): exposed testing matchers for other languages properly #1935
fix
- fix: Allow "all" as ignoreChanges lifecycle value #1848
- fix: Fixed naming collision between resources of different providers #1870
- fix: Small fix to the CONTRIBUTING.md #1887
- fix(cli): increase default max memory for node process when running app command for synth #1915
- fix(provider-generator): Meta arguments available for generated modules #1880
- fix(provider-generator): replace dashes with underscores in module names for Go when generating bindings for Terraform modules #1928
- fix(hcl2json): bundle wasm_exec used for building Go instead of looking for it at runtime #1954
- fix(hcl2cdk): use the same attribute renaming function as in the provider generation #1842
- fix(hcl2cdk): maps should not be wrapped in arrays #1838
chore
- chore: document CI flag #1888
- chore: modernize example output #1914
- chore: pin provider version #1896
- chore: update prerequisites #1894
- chore(tests): Re-enable Windows Provider Add C# Test #1879
- chore: add tfe test as pre-step to releasing #1872
- chore: split provider tests into one test per provider #1862
- chore: reuse integration test definition for releases #1859
- chore: fix broken link in readme #1845
- chore: npm-check-updates && yarn upgrade #1706