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() }, diff --git a/src/test/e2e/runner_test.go b/src/test/e2e/runner_test.go index 16002aca..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) @@ -349,4 +348,19 @@ 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) { + 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, "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, "amd64") + require.Contains(t, stdErr, "arm64") + + os.Setenv("UDS_ARCHITECTURE", "") + }) } 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}"