From d5a9cf2a9a16d56a0fd6dca72ac6e695f5ae8835 Mon Sep 17 00:00:00 2001 From: Case Wylie Date: Fri, 21 Jul 2023 15:59:26 -0400 Subject: [PATCH 01/10] [TASK] Tests for named ports, wait-for, and metrics Signed-off-by: Case Wylie --- examples/manifests/httpd-deployment.yaml | 1 + examples/manifests/httpd-service.yaml | 18 +++++++++++ examples/manifests/zarf.yaml | 3 +- src/internal/agent/http/server.go | 3 ++ src/test/e2e/21_connect_test.go | 39 ++++++++++++++++++++++++ src/test/e2e/26_simple_packages_test.go | 13 ++++++++ 6 files changed, 76 insertions(+), 1 deletion(-) create mode 100644 examples/manifests/httpd-service.yaml diff --git a/examples/manifests/httpd-deployment.yaml b/examples/manifests/httpd-deployment.yaml index 8465e727f3..62a1192717 100644 --- a/examples/manifests/httpd-deployment.yaml +++ b/examples/manifests/httpd-deployment.yaml @@ -17,3 +17,4 @@ spec: image: httpd:alpine3.18 ports: - containerPort: 80 + name: httpd diff --git a/examples/manifests/httpd-service.yaml b/examples/manifests/httpd-service.yaml new file mode 100644 index 0000000000..e79acbe44a --- /dev/null +++ b/examples/manifests/httpd-service.yaml @@ -0,0 +1,18 @@ +apiVersion: v1 +kind: Service +metadata: + creationTimestamp: null + name: httpd + labels: + # Enables "zarf connect httpd" + zarf.dev/connect-name: httpd +spec: + ports: + - port: 80 + protocol: TCP + targetPort: httpd + selector: + app: httpd +status: + loadBalancer: {} + \ No newline at end of file diff --git a/examples/manifests/zarf.yaml b/examples/manifests/zarf.yaml index 3ba1cac6f0..037f70bf28 100644 --- a/examples/manifests/zarf.yaml +++ b/examples/manifests/zarf.yaml @@ -12,6 +12,7 @@ components: files: # local manifests are specified relative to the `zarf.yaml` that uses them: - httpd-deployment.yaml + - httpd-service.yaml actions: onDeploy: # the following checks were computed by viewing the success state of the package deployment @@ -22,7 +23,7 @@ components: kind: deployment name: httpd-deployment namespace: httpd - condition: available + condition: '{.status.readyReplicas}=2' # image discovery is supported in all manifests and charts using: # zarf prepare find-images images: diff --git a/src/internal/agent/http/server.go b/src/internal/agent/http/server.go index 7910d18f44..29db20bfb4 100644 --- a/src/internal/agent/http/server.go +++ b/src/internal/agent/http/server.go @@ -10,6 +10,7 @@ import ( "github.com/defenseunicorns/zarf/src/internal/agent/hooks" "github.com/defenseunicorns/zarf/src/pkg/message" + "github.com/prometheus/client_golang/prometheus/promhttp" ) // NewAdmissionServer creates an http.Server for the mutating webhook admission handler. @@ -26,6 +27,7 @@ func NewAdmissionServer(port string) *http.Server { mux.Handle("/healthz", healthz()) mux.Handle("/mutate/pod", ah.Serve(podsMutation)) mux.Handle("/mutate/flux-gitrepository", ah.Serve(gitRepositoryMutation)) + mux.Handle("/metrics", promhttp.Handler()) return &http.Server{ Addr: fmt.Sprintf(":%s", port), @@ -40,6 +42,7 @@ func NewProxyServer(port string) *http.Server { mux := http.NewServeMux() mux.Handle("/healthz", healthz()) mux.Handle("/", ProxyHandler()) + mux.Handle("/metrics", promhttp.Handler()) return &http.Server{ Addr: fmt.Sprintf(":%s", port), diff --git a/src/test/e2e/21_connect_test.go b/src/test/e2e/21_connect_test.go index 052eaf7760..20b0a77627 100644 --- a/src/test/e2e/21_connect_test.go +++ b/src/test/e2e/21_connect_test.go @@ -5,6 +5,8 @@ package test import ( + "crypto/tls" + "io/ioutil" "net/http" "strings" "testing" @@ -58,3 +60,40 @@ func TestConnect(t *testing.T) { stdOut, stdErr, err = e2e.Zarf("package", "remove", "init", "--components=logging", "--confirm") require.NoError(t, err, stdOut, stdErr) } + +func TestMetrics(t *testing.T) { + t.Log("E2E: Emits metrics") + e2e.SetupWithCluster(t) + + tunnel, err := cluster.NewTunnel("zarf", "svc", "agent-hook", 8888, 8443) + + require.NoError(t, err) + err = tunnel.Connect("", false) + require.NoError(t, err) + defer tunnel.Close() + + // Get untrusted https endpoint + tr := &http.Transport{ + TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, + } + + client := &http.Client{Transport: tr} + https_endpoint := strings.ReplaceAll(tunnel.HTTPEndpoint(), "http", "https") + resp, err := client.Get(https_endpoint + "/metrics") + if err != nil { + t.Fatal(err) + } + defer resp.Body.Close() + + // Read the response body + body, err := ioutil.ReadAll(resp.Body) + if err != nil { + t.Fatal(err) + } + + desiredString := "go_gc_duration_seconds_count" + require.Equal(t, true, strings.Contains(string(body), desiredString)) + require.NoError(t, err, resp) + require.Equal(t, 200, resp.StatusCode) + +} diff --git a/src/test/e2e/26_simple_packages_test.go b/src/test/e2e/26_simple_packages_test.go index e47e2981f2..9325192681 100644 --- a/src/test/e2e/26_simple_packages_test.go +++ b/src/test/e2e/26_simple_packages_test.go @@ -48,6 +48,19 @@ func TestManifests(t *testing.T) { stdOut, stdErr, err := e2e.Zarf("package", "deploy", path, "--confirm") require.NoError(t, err, stdOut, stdErr) + // Test Named Port + tunnel, err := cluster.NewTunnel("httpd", "svc", "httpd", 8080, 80) + + require.NoError(t, err) + err = tunnel.Connect("", false) + require.NoError(t, err) + defer tunnel.Close() + + // Ensure connection + resp, err := http.Get(tunnel.HTTPEndpoint()) + require.NoError(t, err, resp) + require.Equal(t, 200, resp.StatusCode) + // Remove the package stdOut, stdErr, err = e2e.Zarf("package", "remove", "manifests", "--confirm") require.NoError(t, err, stdOut, stdErr) From 31e82cadb97cd2f5c936d946afddac985c080f21 Mon Sep 17 00:00:00 2001 From: Case Wylie Date: Fri, 21 Jul 2023 18:27:11 -0400 Subject: [PATCH 02/10] [TASK] update kiwix and test Signed-off-by: Case Wylie --- examples/kiwix/manifests/deployment.yaml | 2 +- examples/kiwix/manifests/service.yaml | 2 +- examples/kiwix/zarf.yaml | 2 +- src/test/e2e/23_data_injection_test.go | 15 +++++++++++++++ src/test/e2e/26_simple_packages_test.go | 13 ------------- 5 files changed, 18 insertions(+), 16 deletions(-) diff --git a/examples/kiwix/manifests/deployment.yaml b/examples/kiwix/manifests/deployment.yaml index 95d2f3b2d4..679d7a66d7 100644 --- a/examples/kiwix/manifests/deployment.yaml +++ b/examples/kiwix/manifests/deployment.yaml @@ -37,7 +37,7 @@ spec: name: data containers: - name: kiwix-serve - image: "ghcr.io/kiwix/kiwix-serve:3.5.0" + image: "ghcr.io/kiwix/kiwix-serve:3.5.0-2" command: [ "sh", diff --git a/examples/kiwix/manifests/service.yaml b/examples/kiwix/manifests/service.yaml index 1395536648..4c416fa6cb 100644 --- a/examples/kiwix/manifests/service.yaml +++ b/examples/kiwix/manifests/service.yaml @@ -13,4 +13,4 @@ spec: - name: http port: 8080 protocol: TCP - targetPort: 80 + targetPort: http diff --git a/examples/kiwix/zarf.yaml b/examples/kiwix/zarf.yaml index 73bdb48710..8f3a300312 100644 --- a/examples/kiwix/zarf.yaml +++ b/examples/kiwix/zarf.yaml @@ -17,7 +17,7 @@ components: - manifests/deployment.yaml - manifests/service.yaml images: - - ghcr.io/kiwix/kiwix-serve:3.5.0 + - ghcr.io/kiwix/kiwix-serve:3.5.0-2 - alpine:3.18 # Add new data into the cluster, these will keep trying up until their timeout dataInjections: diff --git a/src/test/e2e/23_data_injection_test.go b/src/test/e2e/23_data_injection_test.go index 9d3281e916..3ba85dbd5b 100644 --- a/src/test/e2e/23_data_injection_test.go +++ b/src/test/e2e/23_data_injection_test.go @@ -7,10 +7,12 @@ package test import ( "context" "fmt" + "net/http" "path/filepath" "testing" "time" + "github.com/defenseunicorns/zarf/src/internal/cluster" "github.com/defenseunicorns/zarf/src/pkg/utils/exec" "github.com/stretchr/testify/require" ) @@ -35,6 +37,19 @@ func TestDataInjection(t *testing.T) { require.Contains(t, stdOut, "devops.stackexchange.com_en_all_2023-05.zim") require.Contains(t, stdOut, ".zarf-injection-") + // Test Named Port + tunnel, err := cluster.NewTunnel("kiwix", "svc", "kiwix", 8080, 80) + + require.NoError(t, err) + err = tunnel.Connect("", false) + require.NoError(t, err) + defer tunnel.Close() + + // Ensure connection + resp, err := http.Get(tunnel.HTTPEndpoint()) + require.NoError(t, err, resp) + require.Equal(t, 200, resp.StatusCode) + // Remove the data injection example stdOut, stdErr, err = e2e.Zarf("package", "remove", path, "--confirm") require.NoError(t, err, stdOut, stdErr) diff --git a/src/test/e2e/26_simple_packages_test.go b/src/test/e2e/26_simple_packages_test.go index 9325192681..e47e2981f2 100644 --- a/src/test/e2e/26_simple_packages_test.go +++ b/src/test/e2e/26_simple_packages_test.go @@ -48,19 +48,6 @@ func TestManifests(t *testing.T) { stdOut, stdErr, err := e2e.Zarf("package", "deploy", path, "--confirm") require.NoError(t, err, stdOut, stdErr) - // Test Named Port - tunnel, err := cluster.NewTunnel("httpd", "svc", "httpd", 8080, 80) - - require.NoError(t, err) - err = tunnel.Connect("", false) - require.NoError(t, err) - defer tunnel.Close() - - // Ensure connection - resp, err := http.Get(tunnel.HTTPEndpoint()) - require.NoError(t, err, resp) - require.Equal(t, 200, resp.StatusCode) - // Remove the package stdOut, stdErr, err = e2e.Zarf("package", "remove", "manifests", "--confirm") require.NoError(t, err, stdOut, stdErr) From 53283052358c26dc47cf90cce0f432597666362c Mon Sep 17 00:00:00 2001 From: Case Wylie Date: Fri, 21 Jul 2023 18:31:39 -0400 Subject: [PATCH 03/10] [TASK] remove manifest changes in maniests example Signed-off-by: Case Wylie --- examples/manifests/httpd-deployment.yaml | 1 - examples/manifests/httpd-service.yaml | 18 ------------------ 2 files changed, 19 deletions(-) delete mode 100644 examples/manifests/httpd-service.yaml diff --git a/examples/manifests/httpd-deployment.yaml b/examples/manifests/httpd-deployment.yaml index 62a1192717..8465e727f3 100644 --- a/examples/manifests/httpd-deployment.yaml +++ b/examples/manifests/httpd-deployment.yaml @@ -17,4 +17,3 @@ spec: image: httpd:alpine3.18 ports: - containerPort: 80 - name: httpd diff --git a/examples/manifests/httpd-service.yaml b/examples/manifests/httpd-service.yaml deleted file mode 100644 index e79acbe44a..0000000000 --- a/examples/manifests/httpd-service.yaml +++ /dev/null @@ -1,18 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - creationTimestamp: null - name: httpd - labels: - # Enables "zarf connect httpd" - zarf.dev/connect-name: httpd -spec: - ports: - - port: 80 - protocol: TCP - targetPort: httpd - selector: - app: httpd -status: - loadBalancer: {} - \ No newline at end of file From fb18180e215d2f95751001c4587e5139fbe1fdd4 Mon Sep 17 00:00:00 2001 From: Case Wylie Date: Fri, 21 Jul 2023 18:54:58 -0400 Subject: [PATCH 04/10] [TASK] update test to search for targetPort on pod Signed-off-by: Case Wylie --- src/test/e2e/23_data_injection_test.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/test/e2e/23_data_injection_test.go b/src/test/e2e/23_data_injection_test.go index 3ba85dbd5b..a9c1b13035 100644 --- a/src/test/e2e/23_data_injection_test.go +++ b/src/test/e2e/23_data_injection_test.go @@ -38,10 +38,12 @@ func TestDataInjection(t *testing.T) { require.Contains(t, stdOut, ".zarf-injection-") // Test Named Port - tunnel, err := cluster.NewTunnel("kiwix", "svc", "kiwix", 8080, 80) + // Set remotePort to 0 so it checks for the targetPort on the pod + tunnel, err := cluster.NewTunnel("kiwix", "svc", "kiwix", 8080, 0) require.NoError(t, err) - err = tunnel.Connect("", false) + // need target equal svc that we are trying to connect to call checkForZarfConnectLabel + err = tunnel.Connect("kiwix", false) require.NoError(t, err) defer tunnel.Close() From ea938766766d604afd63b4d9b9769f30c546d764 Mon Sep 17 00:00:00 2001 From: Case Wylie Date: Mon, 24 Jul 2023 08:44:53 -0400 Subject: [PATCH 05/10] Update examples/manifests/zarf.yaml Remove service, wen't with Kiwix example and now this is not needed and should be removed Co-authored-by: Wayne Starr --- examples/manifests/zarf.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/examples/manifests/zarf.yaml b/examples/manifests/zarf.yaml index 037f70bf28..cb363312c0 100644 --- a/examples/manifests/zarf.yaml +++ b/examples/manifests/zarf.yaml @@ -12,7 +12,6 @@ components: files: # local manifests are specified relative to the `zarf.yaml` that uses them: - httpd-deployment.yaml - - httpd-service.yaml actions: onDeploy: # the following checks were computed by viewing the success state of the package deployment From 6c84775a49190ac7f6f23b0aae958d7f5f8900c2 Mon Sep 17 00:00:00 2001 From: Case Wylie Date: Mon, 24 Jul 2023 09:22:02 -0400 Subject: [PATCH 06/10] [TASK] lint and comments Signed-off-by: Case Wylie --- src/test/e2e/21_connect_test.go | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/test/e2e/21_connect_test.go b/src/test/e2e/21_connect_test.go index 20b0a77627..320c687afc 100644 --- a/src/test/e2e/21_connect_test.go +++ b/src/test/e2e/21_connect_test.go @@ -72,14 +72,15 @@ func TestMetrics(t *testing.T) { require.NoError(t, err) defer tunnel.Close() - // Get untrusted https endpoint + // Skip certificate verification + // this is an https endpoint being accessed through port-forwarding tr := &http.Transport{ TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, } client := &http.Client{Transport: tr} - https_endpoint := strings.ReplaceAll(tunnel.HTTPEndpoint(), "http", "https") - resp, err := client.Get(https_endpoint + "/metrics") + httpsEndpoint := strings.ReplaceAll(tunnel.HTTPEndpoint(), "http", "https") + resp, err := client.Get(httpsEndpoint + "/metrics") if err != nil { t.Fatal(err) } From 12b54592f32beb142990bf047b97c33bd3c3bf6d Mon Sep 17 00:00:00 2001 From: Case Wylie Date: Thu, 27 Jul 2023 08:32:42 -0400 Subject: [PATCH 07/10] pipeline bb test Signed-off-by: Case Wylie --- .github/workflows/release.yml | 4 ++ .github/workflows/test-bigbang.yml | 51 +++++++++++++++++-- .github/workflows/test-upgrade.yml | 4 ++ src/extensions/bigbang/test/package/zarf.yaml | 6 +++ 4 files changed, 61 insertions(+), 4 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index efd537311a..5d7e5787c1 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -91,6 +91,9 @@ jobs: name: build-artifacts path: build/ + - name: Setup golang + uses: ./.github/actions/golang + - name: Make Zarf executable run: | chmod +x build/zarf @@ -164,3 +167,4 @@ jobs: with: name: cve-report path: build/zarf-known-cves.csv + \ No newline at end of file diff --git a/.github/workflows/test-bigbang.yml b/.github/workflows/test-bigbang.yml index 871f9bfc56..21a2c07d8e 100644 --- a/.github/workflows/test-bigbang.yml +++ b/.github/workflows/test-bigbang.yml @@ -22,7 +22,7 @@ concurrency: cancel-in-progress: true jobs: - validate: + build: runs-on: ubuntu-latest steps: - name: Checkout @@ -40,9 +40,6 @@ jobs: init-package: 'false' build-examples: 'false' - - name: Setup K3d - uses: ./.github/actions/k3d - - name: Login to Iron Bank uses: docker/login-action@465a07811f14bebb1938fbed4728c6a1ff8901fc # v2.2.0 if: ${{ env.IRONBANK_USERNAME != '' }} @@ -56,6 +53,51 @@ jobs: - name: Build a registry1.dso.mil Zarf 'init' package run: make ib-init-package + # Upload the contents of the build directory for later stages to use + - name: Upload build artifacts + uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + with: + name: build-artifacts + path: build/ + retention-days: 1 + + validate: + runs-on: ubuntu-latest + needs: build + steps: + - name: Checkout + uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + + - name: Download build artifacts + uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2 + with: + name: build-artifacts + path: build/ + + - name: Setup golang + uses: ./.github/actions/golang + + - name: Make Zarf executable + run: | + chmod +x build/zarf + + # Before we run the tests we need to aggressively cleanup files to reduce disk pressure + - name: Cleanup files + uses: ./.github/actions/cleanup-files + + - name: Setup K3d + uses: ./.github/actions/k3d + + - name: Login to Iron Bank + uses: docker/login-action@465a07811f14bebb1938fbed4728c6a1ff8901fc # v2.2.0 + if: ${{ env.IRONBANK_USERNAME != '' }} + env: + IRONBANK_USERNAME: ${{ secrets.IRONBANK_USERNAME }} + with: + registry: registry1.dso.mil + username: ${{ secrets.IRONBANK_USERNAME }} + password: ${{ secrets.IRONBANK_PASSWORD }} + - name: Run tests if: ${{ env.IRONBANK_USERNAME != '' }} env: @@ -65,3 +107,4 @@ jobs: - name: Save logs if: always() uses: ./.github/actions/save-logs + \ No newline at end of file diff --git a/.github/workflows/test-upgrade.yml b/.github/workflows/test-upgrade.yml index bf919c7e39..9667381ebc 100644 --- a/.github/workflows/test-upgrade.yml +++ b/.github/workflows/test-upgrade.yml @@ -60,6 +60,9 @@ jobs: name: build-artifacts path: build/ + - name: Setup golang + uses: ./.github/actions/golang + - name: Make Zarf executable run: | chmod +x build/zarf @@ -126,3 +129,4 @@ jobs: - name: Save logs if: always() uses: ./.github/actions/save-logs + \ No newline at end of file diff --git a/src/extensions/bigbang/test/package/zarf.yaml b/src/extensions/bigbang/test/package/zarf.yaml index b2e32395aa..5fbee66c32 100644 --- a/src/extensions/bigbang/test/package/zarf.yaml +++ b/src/extensions/bigbang/test/package/zarf.yaml @@ -24,3 +24,9 @@ components: valuesFiles: - disable-all-bb###ZARF_PKG_TMPL_BB_MAJOR###.yaml - enable-twistlock.yaml + actions: + onDeploy: + onFailure: + - cmd: ./zarf tools kubectl describe nodes + - cmd: ./zarf tools kubectl describe pods -A + \ No newline at end of file From 42475b9a76f10aa35ee9e752719a0606976978b2 Mon Sep 17 00:00:00 2001 From: Case Wylie Date: Thu, 27 Jul 2023 12:16:04 -0400 Subject: [PATCH 08/10] Update .github/workflows/test-bigbang.yml Co-authored-by: Wayne Starr --- .github/workflows/test-bigbang.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/test-bigbang.yml b/.github/workflows/test-bigbang.yml index 21a2c07d8e..c0f314ad68 100644 --- a/.github/workflows/test-bigbang.yml +++ b/.github/workflows/test-bigbang.yml @@ -51,6 +51,7 @@ jobs: password: ${{ secrets.IRONBANK_PASSWORD }} - name: Build a registry1.dso.mil Zarf 'init' package + if: ${{ env.IRONBANK_USERNAME != '' }} run: make ib-init-package # Upload the contents of the build directory for later stages to use From 02fce76c6e3def61fbda867bda5759d049c6081a Mon Sep 17 00:00:00 2001 From: Case Wylie Date: Thu, 27 Jul 2023 12:17:48 -0400 Subject: [PATCH 09/10] newlines - now fixed in editor Signed-off-by: Case Wylie --- .github/workflows/release.yml | 1 - .github/workflows/test-bigbang.yml | 1 - .github/workflows/test-upgrade.yml | 1 - src/extensions/bigbang/test/package/zarf.yaml | 1 - 4 files changed, 4 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 5d7e5787c1..e42c1aa247 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -167,4 +167,3 @@ jobs: with: name: cve-report path: build/zarf-known-cves.csv - \ No newline at end of file diff --git a/.github/workflows/test-bigbang.yml b/.github/workflows/test-bigbang.yml index c0f314ad68..d1a6227c48 100644 --- a/.github/workflows/test-bigbang.yml +++ b/.github/workflows/test-bigbang.yml @@ -108,4 +108,3 @@ jobs: - name: Save logs if: always() uses: ./.github/actions/save-logs - \ No newline at end of file diff --git a/.github/workflows/test-upgrade.yml b/.github/workflows/test-upgrade.yml index 9667381ebc..4f78c99a9f 100644 --- a/.github/workflows/test-upgrade.yml +++ b/.github/workflows/test-upgrade.yml @@ -129,4 +129,3 @@ jobs: - name: Save logs if: always() uses: ./.github/actions/save-logs - \ No newline at end of file diff --git a/src/extensions/bigbang/test/package/zarf.yaml b/src/extensions/bigbang/test/package/zarf.yaml index 5fbee66c32..b90bc9953c 100644 --- a/src/extensions/bigbang/test/package/zarf.yaml +++ b/src/extensions/bigbang/test/package/zarf.yaml @@ -29,4 +29,3 @@ components: onFailure: - cmd: ./zarf tools kubectl describe nodes - cmd: ./zarf tools kubectl describe pods -A - \ No newline at end of file From b0d59c0da955490a2b3fd884ce1d1d83211446b0 Mon Sep 17 00:00:00 2001 From: Case Wylie Date: Thu, 27 Jul 2023 13:55:24 -0400 Subject: [PATCH 10/10] Update .github/workflows/test-bigbang.yml Co-authored-by: Wayne Starr --- .github/workflows/test-bigbang.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/test-bigbang.yml b/.github/workflows/test-bigbang.yml index d1a6227c48..471b27ce5d 100644 --- a/.github/workflows/test-bigbang.yml +++ b/.github/workflows/test-bigbang.yml @@ -52,6 +52,8 @@ jobs: - name: Build a registry1.dso.mil Zarf 'init' package if: ${{ env.IRONBANK_USERNAME != '' }} + env: + IRONBANK_USERNAME: ${{ secrets.IRONBANK_USERNAME }} run: make ib-init-package # Upload the contents of the build directory for later stages to use