From 97ca59a750841d947ce696f61e2c2e8f17546a05 Mon Sep 17 00:00:00 2001 From: Kenneth Bingham Date: Tue, 6 May 2025 14:43:09 -0400 Subject: [PATCH 1/4] local cross-build with accurate version metadata --- docker/images/cross-build/linux-build.sh | 29 ++++++++++++++++++------ 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/docker/images/cross-build/linux-build.sh b/docker/images/cross-build/linux-build.sh index 269ee4a3..7decdc0f 100755 --- a/docker/images/cross-build/linux-build.sh +++ b/docker/images/cross-build/linux-build.sh @@ -40,11 +40,26 @@ fi done ) -for ARCH in "${JOBS[@]}"; do - goreleaser build \ - --clean \ - --snapshot \ - --output "./dist/" \ - --config "./.goreleaser-linux-$(resolveArch "${ARCH}").yml" -done +# Get version information +VERSION=$(git describe --tags --abbrev=0 2>/dev/null || echo "v1.0.x") +STEPS=$(git rev-list --count ${VERSION}..HEAD 2>/dev/null || echo "0") +if [ "$STEPS" -gt "0" ]; then + VERSION="${VERSION}-${STEPS}" +fi +# Check if working copy is dirty +if [ -z "$(git status --porcelain)" ]; then + # Clean working directory + HASH=$(git rev-parse --short HEAD) +else + # Dirty working directory + HASH="developer build" +fi + +for ARCH in "${JOBS[@]}"; do + LDFLAGS="-s -w -X 'github.com/openziti/zrok/build.Version=${VERSION}' -X 'github.com/openziti/zrok/build.Hash=${HASH}'" + GOOS=linux GOARCH=$(resolveArch "${ARCH}") \ + go build -o "./dist/$(resolveArch "${ARCH}")/linux/zrok" \ + -ldflags "${LDFLAGS}" \ + ./cmd/zrok +done From 6d0c795d593c33af43b5a758dc467752157f7851 Mon Sep 17 00:00:00 2001 From: Kenneth Bingham Date: Tue, 6 May 2025 14:46:47 -0400 Subject: [PATCH 2/4] avoid package-managed file revision conflicts --- .goreleaser-linux-amd64.yml | 3 --- .goreleaser-linux-arm64.yml | 3 --- .goreleaser-linux-armel.yml | 3 --- .goreleaser-linux-armhf.yml | 3 --- CHANGELOG.md | 2 ++ nfpm/zrok-share.service | 3 +++ nfpm/zrok-share.service.override.conf | 8 -------- 7 files changed, 5 insertions(+), 20 deletions(-) delete mode 100644 nfpm/zrok-share.service.override.conf diff --git a/.goreleaser-linux-amd64.yml b/.goreleaser-linux-amd64.yml index e93c58c9..6dbc515b 100644 --- a/.goreleaser-linux-amd64.yml +++ b/.goreleaser-linux-amd64.yml @@ -112,9 +112,6 @@ nfpms: - dst: /usr/lib/systemd/user/ src: ./nfpm/zrok-share@.service - - dst: /etc/systemd/system/zrok-share.service.d/override.conf - src: ./nfpm/zrok-share.service.override.conf - - dst: /opt/openziti/etc/zrok type: dir file_info: diff --git a/.goreleaser-linux-arm64.yml b/.goreleaser-linux-arm64.yml index d58955f8..37bdb639 100644 --- a/.goreleaser-linux-arm64.yml +++ b/.goreleaser-linux-arm64.yml @@ -116,9 +116,6 @@ nfpms: - dst: /usr/lib/systemd/user/ src: ./nfpm/zrok-share@.service - - dst: /etc/systemd/system/zrok-share.service.d/override.conf - src: ./nfpm/zrok-share.service.override.conf - - dst: /opt/openziti/etc/zrok type: dir file_info: diff --git a/.goreleaser-linux-armel.yml b/.goreleaser-linux-armel.yml index 52ea8fb8..5ed2aa3e 100644 --- a/.goreleaser-linux-armel.yml +++ b/.goreleaser-linux-armel.yml @@ -120,9 +120,6 @@ nfpms: - dst: /usr/lib/systemd/user/ src: ./nfpm/zrok-share@.service - - dst: /etc/systemd/system/zrok-share.service.d/override.conf - src: ./nfpm/zrok-share.service.override.conf - - dst: /opt/openziti/etc/zrok type: dir file_info: diff --git a/.goreleaser-linux-armhf.yml b/.goreleaser-linux-armhf.yml index 4f71e078..781e980e 100644 --- a/.goreleaser-linux-armhf.yml +++ b/.goreleaser-linux-armhf.yml @@ -118,9 +118,6 @@ nfpms: - dst: /usr/lib/systemd/user/ src: ./nfpm/zrok-share@.service - - dst: /etc/systemd/system/zrok-share.service.d/override.conf - src: ./nfpm/zrok-share.service.override.conf - - dst: /opt/openziti/etc/zrok type: dir file_info: diff --git a/CHANGELOG.md b/CHANGELOG.md index 0ea3d6cf..62110ea6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,8 @@ FIX: `zrok enable` now handles the case where the user ID does not resolve to a username when generating the default environment description (https://github.com/openziti/zrok/issues/959) +FIX: Linux packages were optimized to avoid manage file revision conflicts (https://github.com/openziti/zrok/issues/817) + ## v1.0.4 FIX: `zrok admin bootstrap` and `zrok enable` functionality were broken in `v1.0.3`. A bad combination of dependencies caused issues with marshalling data from the associated controller endpoints diff --git a/nfpm/zrok-share.service b/nfpm/zrok-share.service index fdb528f3..99c20f65 100644 --- a/nfpm/zrok-share.service +++ b/nfpm/zrok-share.service @@ -13,5 +13,8 @@ ExecStart=/opt/openziti/bin/zrok-share.bash Restart=always RestartSec=3 +# allow adding tun device and IP routes and iptables rules; required when ZROK_BACKEND_MODE=vpn +# AmbientCapabilities=CAP_NET_ADMIN + [Install] WantedBy=multi-user.target diff --git a/nfpm/zrok-share.service.override.conf b/nfpm/zrok-share.service.override.conf deleted file mode 100644 index 9cf870a9..00000000 --- a/nfpm/zrok-share.service.override.conf +++ /dev/null @@ -1,8 +0,0 @@ -[Service] - -# -## extra permissions -# - -# allow adding tun device and IP routes and iptables rules; required when ZROK_BACKEND_MODE=vpn -# AmbientCapabilities=CAP_NET_ADMIN From ada5c790b56d03de110ae8467a7cd2564a449dfc Mon Sep 17 00:00:00 2001 From: Kenneth Bingham Date: Tue, 6 May 2025 15:05:39 -0400 Subject: [PATCH 3/4] stop using goreleaser for cross-building --- docker/images/cross-build/Dockerfile | 4 ---- 1 file changed, 4 deletions(-) diff --git a/docker/images/cross-build/Dockerfile b/docker/images/cross-build/Dockerfile index 3356d357..954d7b73 100644 --- a/docker/images/cross-build/Dockerfile +++ b/docker/images/cross-build/Dockerfile @@ -1,5 +1,3 @@ -FROM goreleaser/goreleaser AS goreleaser - FROM golang:1.21 AS golang FROM debian:bookworm-slim @@ -32,8 +30,6 @@ RUN wget -qO- https://deb.nodesource.com/setup_18.x | bash \ COPY --from=golang /usr/local/go /usr/local/go -COPY --from=goreleaser /usr/bin/goreleaser /usr/local/bin/goreleaser - COPY ./linux-build.sh /usr/local/bin/linux-build.sh ENV TARGETARCH=${TARGETARCH} From 4d0bd21298967fab6458b257e6369b8e64f8077a Mon Sep 17 00:00:00 2001 From: Kenneth Bingham Date: Tue, 6 May 2025 15:29:41 -0400 Subject: [PATCH 4/4] use the same versions in local cross-builds --- docker/images/cross-build/Dockerfile | 7 ++----- docker/images/cross-build/linux-build.sh | 3 ++- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/docker/images/cross-build/Dockerfile b/docker/images/cross-build/Dockerfile index 954d7b73..27189fcd 100644 --- a/docker/images/cross-build/Dockerfile +++ b/docker/images/cross-build/Dockerfile @@ -1,4 +1,4 @@ -FROM golang:1.21 AS golang +FROM golang:1.24 AS golang FROM debian:bookworm-slim # @@ -7,7 +7,6 @@ FROM debian:bookworm-slim # ARG TARGETARCH -ARG golang_version=1.21.3 ARG go_path=/usr/share/go ARG go_root=/usr/local/go ARG go_cache=/usr/share/go @@ -21,13 +20,11 @@ RUN apt-get -y update \ git \ build-essential - -RUN wget -qO- https://deb.nodesource.com/setup_18.x | bash \ +RUN wget -qO- https://deb.nodesource.com/setup_20.x | bash \ && apt-get -y update \ && apt-get -y install \ nodejs - COPY --from=golang /usr/local/go /usr/local/go COPY ./linux-build.sh /usr/local/bin/linux-build.sh diff --git a/docker/images/cross-build/linux-build.sh b/docker/images/cross-build/linux-build.sh index 7decdc0f..77a2b4e2 100755 --- a/docker/images/cross-build/linux-build.sh +++ b/docker/images/cross-build/linux-build.sh @@ -30,7 +30,8 @@ fi HOME=/tmp/builder # Navigate to the "ui" directory and run npm commands mkdir -p $HOME - npm config set cache /mnt/.npm + # pwd is probably /mnt mountpoint in the container + npm config set cache $(pwd)/.npm for UI in ./ui ./agent/agentUi do pushd ${UI}