From 6f6de5600ca72bfbc96dc81aeb636dace8264122 Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Tue, 21 Jan 2025 11:11:00 -0500 Subject: [PATCH] CHANGELOG: add changes for v1.12.0 --- CHANGELOG.md | 128 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 128 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4d94cfbbacd..6bce9b0946c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,131 @@ +## 1.12.0 (January 22, 2025) + +### FEATURES: + +* core: add support for a DAG-based evaluation on locals and datasources. + A long-standing odditiy of Packer has been the order of evaluation for + locals and data sources. In previous versions of Packer, the + data sources were evaluated first, then the local variables were, making + it impossible to have a datasource that referenced a local variable as + part of its configuration. + This change introduces a Directed Acyclic Graph (DAG) to evaluate those + resources, instead of the phased approach of old, which makes the order + of evaluation not dependent on the type of resource, but instead of the + detected dependencies between them. + **Note**: While we are confident this should be robust enough for general + use, we do recognise that it is possible some users might encounter issues. + To give those users a way to continue using the old evaluation method, we + introduced a `-use-sequential-evaluation` command-line flag to the build, + validate, console and inspect subcommands, to force using the sequential + evaluation approach for those entities. + [GH-13155](https://github.com/hashicorp/packer/pull/13155) + +* core/hcp: support for uploading SBOMs to HCP Packer. + Software Bill of Materials (SBOM) are a standardised way to export the various + software packages linked to an artifact. As some users have expressed a + need to produce and access those for images they build, we now add the + feature to Packer itself. + While the generation of the SBOM itself is not done directly by + Packer, instead we recommend using known scanners to produce them, we add + the capacity to upload this SBOM file to HCP Packer, and link it to a + build artifact. + [GH-13171](https://github.com/hashicorp/packer/pull/13171) + +* core: support for alternate serialisation formats for plugin communication. + Packer relies on plugins to do most of the actual workload related to + building and provisioing artifacts, while Packer is mostly an orchestrator + for those plugins to perform their work. + This separation of concerns implies that both entities have to + communicate on multiple occasions during the course of a build. + Before v1.12.0 of Packer, and v0.6.0 of the plugin SDK, we used Gob to + do most of the serialisation for those steps. + This is however a bit of a problem recently, as go-cty, the library we + use for dynamic objects lifted from HCL templates, dropped support for + this a while back. + Therefore now, we introduce an alternative: protobuf/msgpack, which are + both usable and maintained by the projects around Packer, so we can begin + our transition away from gob with this change. + **Note**: as with the introduction of the DAG for locals/datasources, this + is a feature that we are reasonably confident you will not encounter bugs + with, however we cannot rule-out this possibility, therefore we introduce + a new environment variable: `PACKER_FORCE_GOB`, which if set to '1', forces + the use of Gob instead of protobuf/msgpack. + [GH-13120](https://github.com/hashicorp/packer/pull/13120) + +### IMPROVEMENTS: + +* hcl2/json: add `aws_secretsmanager_raw` funcion. + When using the AWS secretsmanager function with a non-text secret, one could + only get a secret once at a time. + This could get cumbersome if wanting to get multiple through one request, + which led people to encode their JSON/Object secrets as a big base64 + encoded string that they could get once, and then manipulate through JSON + functions. + While the workaround works, it is one extra layer of manipulations to do so, + therefore a new function to always get the raw textual version of a secret + is now added to Packer. + [GH-13242](https://github.com/hashicorp/packer/pull/13242) +* hcl2: add `alltrue` and `anytrue` functions. + As with Terraform, Packer now supports the HCL functions `alltrue` and + `anytrue`, which returns whether or not a collection only consists of + `true` values, or if any is. + [GH-13237](https://github.com/hashicorp/packer/pull/13237) +* hcl2: add `strcontains` function. + As with Terraform, Packer now supports the HCL function `strcontains`, + which returns whether or not a string contains a substring within it. + [GH-13217](https://github.com/hashicorp/packer/pull/13217) + [GH-13222](https://github.com/hashicorp/packer/pull/13222) +* datasource/http: Support other methods than GET. + The HTTP datasource used to always use GET requests for getting data + from a remote HTTP server, which was not always enough since some endpoints + may only support other methods. This change allows for most of the HTTP + methods to perform those requests. + [GH-13190](https://github.com/hashicorp/packer/pull/13190) +* hcl2: add `base64gzip` function. + In some cases, small blobs may need to be kept in memory, and injected in + a template somewhere else, but if the blob needs to be minimised, the + base64gzip function can be invoked to compress the blob and expose it + as a valid HCL2 string for use later. + [GH-13142](https://github.com/hashicorp/packer/pull/13142) + +### BUG FIXES: + +* hcl2: Fix duplicate error messages on top-level HCL violations. + A parsing quirk for HCL templates caused Packer to produce the same parsing + error multiple times if the error was caused by a top-level violation. + [GH-13245](https://github.com/hashicorp/packer/pull/13245) +* build: Include LC_UUID in Darwin binaries. + A change in how Apple authorises a plugin to access the network caused + Packer to break on recent (14.7 and above) macOS versions, as Packer uses + the local network to communicate with plugins. + The fix is to include an additional UUID into the metadata of the produced + binary, so it is authorised by macOS to use the local network, which prompts + an update to the version of Go used for building Packer (1.22.9), as it is + when this addition is supported by an LDFLAG. + [GH-13214](https://github.com/hashicorp/packer/pull/13214) +* hcl2: Don't error on empty bucker slug. + As reported by members of our community, using a hcp_packer_registry + block without a bucket slug, even if provided by external means, would cause + Packer to fail with an invalid bucket slug error. This is most definitely + a bug, which is addressed in this release. + [GH-13210](https://github.com/hashicorp/packer/pull/13210) +* hcp: fix bug when trying to extract HEAD SHA from empty Git repo. + [GH-13165](https://github.com/hashicorp/packer/pull/13165) + +### SECURITY: + +* Bump to go-crypto v0.31.0 + [GH-13233](https://github.com/hashicorp/packer/pull/13233) + +### NOTES: + +* docs: fix UUIDv4 example. A community user has found discrepancies in the + UUIDv4 examples which were used in our docs, as they do not match the + standard. + [GH-13229](https://github.com/hashicorp/packer/pull/13229) +* hcl2: fix slice initialisation method during variable evaluation phase. + [GH-13175](https://github.com/hashicorp/packer/pull/13175) + ## 1.11.2 (July 30, 2024) ### FEATURES