From 8fb65b2b481b680b7dfd3777b647fe52d1f1054c Mon Sep 17 00:00:00 2001 From: Gautam Gupta Date: Wed, 20 May 2026 17:50:51 -0700 Subject: [PATCH] Allow job metadata with top-level HCL blocks --- CHANGELOG.md | 1 + internal/runner/job/metadata.go | 2 +- internal/runner/job/metadata_test.go | 22 ++++++++++++++++++++++ 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index baea9c3c..b6569545 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ IMPROVEMENTS: BUG FIXES: * cli: Fix panic when calling status command with namespace wildcard [[GH-827](https://github.com/hashicorp/nomad-pack/pull/854)] +* pack: Preserve pack metadata injection for job templates with top-level HCL blocks such as `locals` ## 0.4.2 (March 16, 2026) diff --git a/internal/runner/job/metadata.go b/internal/runner/job/metadata.go index ef4c2b46..5c2ac66a 100644 --- a/internal/runner/job/metadata.go +++ b/internal/runner/job/metadata.go @@ -30,7 +30,7 @@ func (r *Runner) setHCLMeta(job string) string { if diags.HasErrors() { return job } - content, diags := file.Body.Content(&hcl.BodySchema{ + content, _, diags := file.Body.PartialContent(&hcl.BodySchema{ Blocks: []hcl.BlockHeaderSchema{ {Type: "job", LabelNames: []string{""}}, }, diff --git a/internal/runner/job/metadata_test.go b/internal/runner/job/metadata_test.go index 4bab6834..4580cd2c 100644 --- a/internal/runner/job/metadata_test.go +++ b/internal/runner/job/metadata_test.go @@ -83,6 +83,28 @@ func TestDeployer_setHCLMeta(t *testing.T) { "pack.version" = "123456" thing = "baz" } +}`, + }, + { + desc: "top-level locals are preserved while job meta is merged", + inputRunner: &Runner{ + runnerCfg: defaultConfig, + }, + inputJob: "locals {\n thing = \"baz\"\n}\n\njob \"foobar\" {\n meta {\n other = \"foobar\" \n}\n }", + expectedJob: `locals { + thing = "baz" +} + +job "foobar" { + meta = { + other = "foobar" + "pack.deployment_name" = "foobar@123456" + "pack.job" = "foobar" + "pack.name" = "foobar" + "pack.path" = "/opt/src/foobar" + "pack.registry" = "default" + "pack.version" = "123456" + } }`, }, {