From 4b18d617a9e600aabef451c1ca2af993f2d7b726 Mon Sep 17 00:00:00 2001 From: Anton Bronnikov Date: Wed, 12 Nov 2025 15:15:44 +0100 Subject: [PATCH 1/5] chore: add reproducible build script --- build.sh | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100755 build.sh diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..9f7913b --- /dev/null +++ b/build.sh @@ -0,0 +1,31 @@ +#!/bin/bash + +export CARGO_INCREMENTAL=0 +export CFLAGS="-D__TIME__=\"\" -D__DATE__=\"\"" +export CXXFLAGS="-D__TIME__=\"\" -D__DATE__=\"\"" +export LC_ALL=C +export SOURCE_DATE_EPOCH=$(git log -1 --pretty=%ct) +export TZ=UTC + +TARGET=${TARGET:-x86_64-unknown-linux-gnu} + +export RUSTFLAGS="\ + --cfg tracing_unstable \ + -C metadata=host \ +" + +export CARGO_TARGET_$( echo "${TARGET}" | tr '[:lower:]' '[:upper:]' | tr '-' '_' )_RUSTFLAGS="\ + --cfg tracing_unstable \ + --remap-path-prefix /app=. \ + -C codegen-units=1 \ + -C embed-bitcode=no \ + -C link-arg=-static-libgcc \ + -C link-arg=-Wl,--build-id=none \ + -C metadata=target \ + -C target-feature=+crt-static \ +" + +cargo build --package rproxy \ + --locked \ + --release \ + --target ${TARGET} From 07687b08b9d1fbc2b614d17f0030ab0b300ae7c0 Mon Sep 17 00:00:00 2001 From: Anton Bronnikov Date: Wed, 12 Nov 2025 15:22:02 +0100 Subject: [PATCH 2/5] chore: re-use existing script --- .github/workflows/rproxy_release.yaml | 40 ++------------------------- Dockerfile | 35 ++--------------------- 2 files changed, 4 insertions(+), 71 deletions(-) diff --git a/.github/workflows/rproxy_release.yaml b/.github/workflows/rproxy_release.yaml index 6eb53c6..1f889b1 100644 --- a/.github/workflows/rproxy_release.yaml +++ b/.github/workflows/rproxy_release.yaml @@ -100,44 +100,8 @@ jobs: . $HOME/.cargo/env - export CARGO_INCREMENTAL=0 - export CFLAGS="-D__TIME__=\"\" -D__DATE__=\"\"" - export CXXFLAGS="-D__TIME__=\"\" -D__DATE__=\"\"" - export LC_ALL=C - export SOURCE_DATE_EPOCH=$(git log -1 --pretty=%ct) - export TZ=UTC - - export RUSTFLAGS="\ - --cfg tracing_unstable \ - -C metadata=host \ - " - - export CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_RUSTFLAGS="\ - --cfg tracing_unstable \ - --remap-path-prefix /app=. \ - -C codegen-units=1 \ - -C embed-bitcode=no \ - -C link-arg=-static-libgcc \ - -C link-arg=-Wl,--build-id=none \ - -C metadata=target \ - -C target-feature=+crt-static \ - " - - export CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_RUSTFLAGS="\ - --cfg tracing_unstable \ - --remap-path-prefix /app=. \ - -C codegen-units=1 \ - -C embed-bitcode=no \ - -C link-arg=-static-libgcc \ - -C link-arg=-Wl,--build-id=none \ - -C metadata=target \ - -C target-feature=+crt-static \ - " - - cargo build --package rproxy \ - --locked \ - --release \ - --target ${{ matrix.configs.target }} + TARGET="${{ matrix.configs.target }}" \ + ./build.sh - name: upload the binary artifact uses: actions/upload-artifact@v4 diff --git a/Dockerfile b/Dockerfile index 1bfd4f0..47e504b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -18,39 +18,8 @@ WORKDIR /app COPY . . COPY ./.cargo ./ -ENV CARGO_INCREMENTAL="0" -ENV CFLAGS="-D__TIME__=\"\" -D__DATE__=\"\"" -ENV CXXFLAGS="-D__TIME__=\"\" -D__DATE__=\"\"" -ENV LC_ALL="C" -ENV RUSTFLAGS="--cfg tracing_unstable -C metadata=host" -ENV TZ="UTC" - -ENV CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_RUSTFLAGS="\ - --cfg tracing_unstable \ - --remap-path-prefix /app=. \ - -C codegen-units=1 \ - -C embed-bitcode=no \ - -C link-arg=-static-libgcc \ - -C link-arg=-Wl,--build-id=none \ - -C metadata=target \ - -C target-feature=+crt-static \ - " - -ENV CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_RUSTFLAGS="\ - --cfg tracing_unstable \ - --remap-path-prefix /app=. \ - -C codegen-units=1 \ - -C embed-bitcode=no \ - -C link-arg=-static-libgcc \ - -C link-arg=-Wl,--build-id=none \ - -C metadata=target \ - -C target-feature=+crt-static \ - " - -RUN SOURCE_DATE_EPOCH=$(git log -1 --pretty=%ct) \ - cargo build --package rproxy \ - --release \ - --locked +RUN TARGET=$( rustup target list --installed ) \ + ./build.sh FROM gcr.io/distroless/cc-debian12 AS runtime From 76c40644006ace59bede78bda61aea7e42a20b46 Mon Sep 17 00:00:00 2001 From: Anton Bronnikov Date: Thu, 13 Nov 2025 09:41:42 +0100 Subject: [PATCH 3/5] feat: automatically choose target --- Makefile | 2 +- build.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index ed54621..f535147 100644 --- a/Makefile +++ b/Makefile @@ -2,7 +2,7 @@ SHELL := /bin/bash .PHONY: build build: - @cargo --verbose build + @./build.sh .PHONY: fmt fmt: diff --git a/build.sh b/build.sh index 9f7913b..977ed59 100755 --- a/build.sh +++ b/build.sh @@ -7,7 +7,7 @@ export LC_ALL=C export SOURCE_DATE_EPOCH=$(git log -1 --pretty=%ct) export TZ=UTC -TARGET=${TARGET:-x86_64-unknown-linux-gnu} +TARGET=${TARGET:-$( rustc --print host-tuple )} export RUSTFLAGS="\ --cfg tracing_unstable \ From c802db714917f2b4e5dd9ba4f5baf5ed2c89f764 Mon Sep 17 00:00:00 2001 From: Anton Bronnikov Date: Thu, 13 Nov 2025 09:43:22 +0100 Subject: [PATCH 4/5] chore: bump the version --- Cargo.lock | 2 +- crates/rproxy/Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 041667c..2971df2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3079,7 +3079,7 @@ dependencies = [ [[package]] name = "rproxy" -version = "0.0.5" +version = "0.0.6" dependencies = [ "actix", "actix-http", diff --git a/crates/rproxy/Cargo.toml b/crates/rproxy/Cargo.toml index b9d7d10..41d7572 100644 --- a/crates/rproxy/Cargo.toml +++ b/crates/rproxy/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "rproxy" -version = "0.0.5" +version = "0.0.6" edition = "2024" default-run = "rproxy" From c677cb2c168302159af4d39e4ed1830910b3729e Mon Sep 17 00:00:00 2001 From: Anton Bronnikov Date: Thu, 13 Nov 2025 09:56:07 +0100 Subject: [PATCH 5/5] fix: docker build --- Dockerfile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index 47e504b..2fcfae9 100644 --- a/Dockerfile +++ b/Dockerfile @@ -18,13 +18,13 @@ WORKDIR /app COPY . . COPY ./.cargo ./ -RUN TARGET=$( rustup target list --installed ) \ - ./build.sh +RUN ./build.sh +RUN cp target/$( rustc --print host-tuple )/release/rproxy target/rproxy FROM gcr.io/distroless/cc-debian12 AS runtime WORKDIR /app -COPY --from=builder /app/target/release/rproxy ./ +COPY --from=builder /app/target/rproxy ./ ENTRYPOINT [ "/app/rproxy" ]