From 845032c03e8f8a0ec02072ad9beaaa5de54d9c33 Mon Sep 17 00:00:00 2001 From: Austin Abro <37223396+AustinAbro321@users.noreply.github.com> Date: Mon, 10 Feb 2025 07:36:13 -0500 Subject: [PATCH] fix: injector build process (#3479) Signed-off-by: Austin Abro --- .github/workflows/build-rust-injector.yml | 2 +- Makefile | 3 -- src/injector/Makefile | 52 +++------------------ src/injector/README.md | 57 +++++++---------------- 4 files changed, 25 insertions(+), 89 deletions(-) diff --git a/.github/workflows/build-rust-injector.yml b/.github/workflows/build-rust-injector.yml index cb32434f18..230dbc7cc5 100644 --- a/.github/workflows/build-rust-injector.yml +++ b/.github/workflows/build-rust-injector.yml @@ -24,7 +24,7 @@ jobs: - name: "Build Rust Binary for x86_64 and arm64" run: | cd src/injector - make build-injector-linux + make injector-linux cd target mkdir -p ../dist cp x86_64-unknown-linux-musl/release/zarf-injector ../dist/zarf-injector-amd64 diff --git a/Makefile b/Makefile index 81ad97bf0f..d3d81c2417 100644 --- a/Makefile +++ b/Makefile @@ -160,9 +160,6 @@ build-examples: ## Build all of the example packages @test -s ./build/zarf-package-yolo-$(ARCH).tar.zst || $(ZARF_BIN) package create examples/yolo -o build -a $(ARCH) --confirm -build-injector-linux: ## Build the Zarf injector for AMD64 and ARM64 - docker run --rm --user "$(id -u)":"$(id -g)" -v $$PWD/src/injector:/usr/src/zarf-injector -w /usr/src/zarf-injector rust:1.71.0-bookworm make build-injector-linux list-sizes - ## NOTE: Requires an existing cluster or the env var APPLIANCE_MODE=true .PHONY: test-e2e test-e2e: test-e2e-without-cluster test-e2e-with-cluster ## Run all of the core Zarf CLI E2E tests (builds any deps that aren't present) diff --git a/src/injector/Makefile b/src/injector/Makefile index 19e47d5869..f27f2e4aa4 100644 --- a/src/injector/Makefile +++ b/src/injector/Makefile @@ -10,59 +10,21 @@ help: ## Display this help information clean: ## Clean the build directory rm -rf target -cross-injector-linux: cross-injector-amd cross-injector-arm - -cross-injector-amd: - rustup target add x86_64-unknown-linux-musl - test -s x86_64-linux-musl-cross || curl https://zarf-public.s3-us-gov-west-1.amazonaws.com/pipelines/x86_64-linux-musl-cross.tgz | tar -xz - export PATH="$$PWD/x86_64-linux-musl-cross/bin:$$PATH" - export CARGO_TARGET_X86_64_UNKNOWN_LINUX_MUSL_LINKER=x86_64-linux-musl-cc - +install-cross: cargo install cross --git https://github.com/cross-rs/cross +injector-linux: cross-injector-amd cross-injector-arm + +cross-injector-amd: + rustup target add x86_64-unknown-linux-musl cross build --target x86_64-unknown-linux-musl --release cross-injector-arm: rustup target add aarch64-unknown-linux-musl - test -s aarch64-linux-musl-cross || curl https://zarf-public.s3-us-gov-west-1.amazonaws.com/pipelines/aarch64-linux-musl-cross.tgz | tar -xz - export PATH="$$PWD/aarch64-linux-musl-cross/bin:$$PATH" - export CARGO_TARGET_AARCH64_UNKNOWN_LINUX_MUSL_LINKER=aarch64-linux-musl-cc - cross build --target aarch64-unknown-linux-musl --release - - -build-injector-linux: build-injector-linux-amd build-injector-linux-arm ## Build the Zarf injector for AMD64 and ARM64 - -build-injector-linux-amd: ## Build the Zarf injector for AMD64 - rustup target add x86_64-unknown-linux-musl - - if [ "$(shell uname -m)" = "arm64" ] || [ "$(shell uname -m)" = "aarch64" ]; then \ - test -s x86_64-linux-musl-cross || curl https://zarf-public.s3-us-gov-west-1.amazonaws.com/pipelines/x86_64-linux-musl-cross.tgz | tar -xz; \ - export PATH="$$PWD/x86_64-linux-musl-cross/bin:$$PATH"; \ - export CARGO_TARGET_X86_64_UNKNOWN_LINUX_MUSL_LINKER=x86_64-linux-musl-cc; \ - cargo build --target x86_64-unknown-linux-musl --release; \ - elif [ "$(shell uname -m)" = "x86_64" ]; then \ - cargo build --target x86_64-unknown-linux-musl --release; \ - fi - -build-injector-linux-arm: ## Build the Zarf injector for ARM64 - rustup target add aarch64-unknown-linux-musl - - if [ "$(shell uname -m)" = "arm64" ] || [ "$(shell uname -m)" = "aarch64" ]; then \ - cargo build --target aarch64-unknown-linux-musl --release; \ - elif [ "$(shell uname -m)" = "x86_64" ]; then \ - test -s aarch64-linux-musl-cross || curl https://zarf-public.s3-us-gov-west-1.amazonaws.com/pipelines/aarch64-linux-musl-cross.tgz | tar -xz; \ - export PATH="$$PWD/aarch64-linux-musl-cross/bin:$$PATH"; \ - export CARGO_TARGET_AARCH64_UNKNOWN_LINUX_MUSL_LINKER=aarch64-linux-musl-cc; \ - cargo build --target aarch64-unknown-linux-musl --release; \ - fi - list-sizes: ## List the sizes of the Zarf injector binaries @echo '\n\033[0;36mSize of Zarf injector binaries:\033[0m\n'; \ - du --si target/x86_64-unknown-linux-musl/release/zarf-injector; \ - du --si target/aarch64-unknown-linux-musl/release/zarf-injector - -build-with-docker: ## Build the Zarf injector using Docker - docker run --rm --user "$(id -u)":"$(id -g)" -v $$PWD:/usr/src/zarf-injector -w /usr/src/zarf-injector rust:1.71.0-bookworm make build-injector-linux + du -k target/x86_64-unknown-linux-musl/release/zarf-injector; \ + du -k target/aarch64-unknown-linux-musl/release/zarf-injector diff --git a/src/injector/README.md b/src/injector/README.md index 56ba9c51f2..b17e2d25a0 100644 --- a/src/injector/README.md +++ b/src/injector/README.md @@ -24,46 +24,33 @@ The `zarf-injector` binary serves 2 purposes during 'init'. This enables a distro-agnostic way to inject real `registry:2` image into a running cluster, thereby enabling air-gapped deployments. -## Building in Docker (recommended) +# pre-req -```bash -make build-with-docker -``` +* Install Rust using https://rustup.rs/ +* Install cross with `make install-cross` +* Install Docker or Podman have it running ## Building on Debian-based Systems -Install [Rust](https://rustup.rs/) and `build-essential`. - +Install build-essential ```bash -make build-injector-linux list-sizes +sudo apt-get update +sudo apt-get install build-essential ``` - -## Building on Debian-based Systems - -Install [Rust](https://rustup.rs/) and `build-essential`. - +Then build ```bash -make build-injector-linux list-sizes +make injector-linux list-sizes ``` -## Building on Apple Silicon - -* Install Cross -* Install Docker & have it running -* Rust must be installed via Rustup (Check `which rustc` if you're unsure) - -``` -cargo install cross --git https://github.com/cross-rs/cross -``` +## Building on Apple Silicon Whichever arch. of `musl` used, add to toolchain ``` rustup toolchain install --force-non-host stable-x86_64-unknown-linux-musl ``` +Then build ``` -cross build --target x86_64-unknown-linux-musl --release - -cross build --target aarch64-unknown-linux-musl --release +make injector-linux list-sizes ``` This will build into `target/*--unknown-linux-musl/release` @@ -79,17 +66,7 @@ make list-sizes ``` ```sh -$ make build-with-docker -... - -Size of Zarf injector binaries: - -840k target/x86_64-unknown-linux-musl/release/zarf-injector -713k target/aarch64-unknown-linux-musl/release/zarf-injector -``` - -```sh -$ make build-with-docker +make injector-linux ... Size of Zarf injector binaries: @@ -102,11 +79,11 @@ Size of Zarf injector binaries: Build your injector by following the steps above, or running one of the following: ``` -make build-injector-linux +make injector-linux -## OR -## works on apple silicon -make cross-injector-linux +## OR +## works on apple silicon +make cross-injector-linux ```