From 6c582c24282bb049c34ed15c970593745ce8f35e Mon Sep 17 00:00:00 2001 From: Darcy Cleaver Date: Wed, 13 Mar 2024 14:15:26 -0600 Subject: [PATCH 1/3] pass UDS_ARCHITECTURE to runner --- src/cmd/vendored.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/cmd/vendored.go b/src/cmd/vendored.go index a5cf6101..c6b325ca 100644 --- a/src/cmd/vendored.go +++ b/src/cmd/vendored.go @@ -26,6 +26,12 @@ var runnerCmd = &cobra.Command{ os.Args = os.Args[1:] // grab 'run' and onward from the CLI args runnerConfig.CmdPrefix = "uds" // use vendored Zarf inside the runner runnerConfig.EnvPrefix = "uds" + // The maru runner init gets called before the uds-cli init, which looks for RUN_ARCHITECTURE because the EnvPrefix + // that we set above is not called yet. So in order to set the architecture if passing in UDS_ARCHITECTURE we must set it here. + archValue := os.Getenv("UDS_ARCHITECTURE") + if archValue != "" { + runnerConfig.CLIArch = archValue + } runnerCLI.RootCmd().SetArgs(os.Args) runnerCLI.Execute() }, From 0c5994e3faf8bf422e644e69c79b956cacd06e63 Mon Sep 17 00:00:00 2001 From: Darcy Cleaver Date: Wed, 13 Mar 2024 16:29:13 -0600 Subject: [PATCH 2/3] adding tests --- src/test/e2e/runner_test.go | 14 ++++++++++++++ src/test/tasks/tasks.yaml | 4 ++++ 2 files changed, 18 insertions(+) diff --git a/src/test/e2e/runner_test.go b/src/test/e2e/runner_test.go index 16002aca..47b5eb2d 100644 --- a/src/test/e2e/runner_test.go +++ b/src/test/e2e/runner_test.go @@ -349,4 +349,18 @@ func TestTaskRunner(t *testing.T) { require.NotContains(t, stdErr, "default") require.Contains(t, stdErr, "env-var") }) + t.Run("test that ARCHITECTURE env var is getting passed to runner", func(t *testing.T) { + t.Parallel() + os.Setenv("UDS_ARCHITECTURE", "amd64") + stdOut, stdErr, err := e2e.UDS("run", "echo-architecture", "--file", "src/test/tasks/tasks.yaml") + require.NoError(t, err, stdOut, stdErr) + require.NotContains(t, stdErr, "default") + require.Contains(t, stdErr, "amd64") + + os.Setenv("UDS_ARCHITECTURE", "arm64") + stdOut, stdErr, err = e2e.UDS("run", "echo-architecture", "--file", "src/test/tasks/tasks.yaml") + require.NoError(t, err, stdOut, stdErr) + require.NotContains(t, stdErr, "default") + require.Contains(t, stdErr, "arm64") + }) } diff --git a/src/test/tasks/tasks.yaml b/src/test/tasks/tasks.yaml index 66402c0a..1e32e1dc 100644 --- a/src/test/tasks/tasks.yaml +++ b/src/test/tasks/tasks.yaml @@ -162,3 +162,7 @@ tasks: actions: - cmd: cat ${COOL_FILE} dir: ${COOL_DIR} + - name: echo-architecture + description: Echos the architecture being used for the task by the runner + actions: + - cmd: echo "${UDS_ARCH}" From 87b826e99ba8b87fc2f567f00ac93e81b8038954 Mon Sep 17 00:00:00 2001 From: Darcy Cleaver Date: Wed, 13 Mar 2024 16:50:26 -0600 Subject: [PATCH 3/3] make env sensitive tests non parallel --- src/test/e2e/runner_test.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/test/e2e/runner_test.go b/src/test/e2e/runner_test.go index 47b5eb2d..76110ef4 100644 --- a/src/test/e2e/runner_test.go +++ b/src/test/e2e/runner_test.go @@ -323,7 +323,6 @@ func TestTaskRunner(t *testing.T) { }) t.Run("test task to load env vars using the envPath key", func(t *testing.T) { - t.Parallel() stdOut, stdErr, err := e2e.UDS("run", "env-from-file", "--file", "src/test/tasks/tasks.yaml") require.NoError(t, err, stdOut, stdErr) require.Contains(t, stdErr, e2e.Arch) @@ -350,17 +349,18 @@ func TestTaskRunner(t *testing.T) { require.Contains(t, stdErr, "env-var") }) t.Run("test that ARCHITECTURE env var is getting passed to runner", func(t *testing.T) { - t.Parallel() os.Setenv("UDS_ARCHITECTURE", "amd64") stdOut, stdErr, err := e2e.UDS("run", "echo-architecture", "--file", "src/test/tasks/tasks.yaml") require.NoError(t, err, stdOut, stdErr) - require.NotContains(t, stdErr, "default") + require.NotContains(t, stdErr, "arm64") require.Contains(t, stdErr, "amd64") os.Setenv("UDS_ARCHITECTURE", "arm64") stdOut, stdErr, err = e2e.UDS("run", "echo-architecture", "--file", "src/test/tasks/tasks.yaml") require.NoError(t, err, stdOut, stdErr) - require.NotContains(t, stdErr, "default") + require.NotContains(t, stdErr, "amd64") require.Contains(t, stdErr, "arm64") + + os.Setenv("UDS_ARCHITECTURE", "") }) }