fix: properly inject version into Docker image builds
The agent version was always showing 0.1.0 because build.rs tried to run 'git describe' inside the Docker build, but .git directory wasn't copied into the image. Changes: - Add VERSION build arg to Dockerfile - Pass VERSION as env var to cargo build commands - Update GitLab CI to pass --build-arg VERSION - Modify build.rs to prefer BUILD_VERSION env var over git commands This ensures the version displayed by the agent matches the Docker image tag it was built with.
This commit is contained in:
parent
da3088f87f
commit
c0fe57cd44
4 changed files with 14 additions and 84 deletions
|
|
@ -77,6 +77,7 @@ build:main:
|
|||
- |
|
||||
docker buildx build \
|
||||
--platform linux/amd64 \
|
||||
--build-arg VERSION=$VERSION \
|
||||
--cache-from type=registry,ref=$REGISTRY/$IMAGE_NAME:buildcache \
|
||||
--cache-to type=registry,ref=$REGISTRY/$IMAGE_NAME:buildcache,mode=max \
|
||||
--tag $REGISTRY/$IMAGE_NAME:latest \
|
||||
|
|
@ -116,6 +117,7 @@ release:multiarch:
|
|||
|
||||
docker buildx build \
|
||||
--platform linux/amd64,linux/arm64 \
|
||||
--build-arg VERSION=$VERSION \
|
||||
--cache-from type=registry,ref=$REGISTRY/$IMAGE_NAME:buildcache \
|
||||
--cache-to type=registry,ref=$REGISTRY/$IMAGE_NAME:buildcache,mode=max \
|
||||
--tag $REGISTRY/$IMAGE_NAME:$VERSION \
|
||||
|
|
|
|||
82
Cargo.lock
generated
82
Cargo.lock
generated
|
|
@ -8,18 +8,6 @@ version = "2.0.1"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa"
|
||||
|
||||
[[package]]
|
||||
name = "ahash"
|
||||
version = "0.8.12"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"once_cell",
|
||||
"version_check",
|
||||
"zerocopy",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "aho-corasick"
|
||||
version = "1.1.4"
|
||||
|
|
@ -315,18 +303,6 @@ dependencies = [
|
|||
"windows-sys 0.61.2",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "fallible-iterator"
|
||||
version = "0.3.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2acce4a10f12dc2fb14a218589d4f1f62ef011b2d0cc4b3cb1bba8e94da14649"
|
||||
|
||||
[[package]]
|
||||
name = "fallible-streaming-iterator"
|
||||
version = "0.1.9"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7360491ce676a36bf9bb3c56c1aa791658183a54d2744120f27285738d90465a"
|
||||
|
||||
[[package]]
|
||||
name = "fastrand"
|
||||
version = "2.3.0"
|
||||
|
|
@ -486,30 +462,12 @@ dependencies = [
|
|||
"wasip2",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "hashbrown"
|
||||
version = "0.14.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1"
|
||||
dependencies = [
|
||||
"ahash",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "hashbrown"
|
||||
version = "0.16.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100"
|
||||
|
||||
[[package]]
|
||||
name = "hashlink"
|
||||
version = "0.9.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6ba4ff7128dee98c7dc9794b6a411377e1404dba1c97deb8d1a55297bd25d8af"
|
||||
dependencies = [
|
||||
"hashbrown 0.14.5",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "heck"
|
||||
version = "0.5.0"
|
||||
|
|
@ -682,7 +640,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017"
|
||||
dependencies = [
|
||||
"equivalent",
|
||||
"hashbrown 0.16.1",
|
||||
"hashbrown",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -722,17 +680,6 @@ version = "0.2.180"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "bcc35a38544a891a5f7c865aca548a982ccb3b8650a5b06d0fd33a10283c56fc"
|
||||
|
||||
[[package]]
|
||||
name = "libsqlite3-sys"
|
||||
version = "0.30.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2e99fb7a497b1e3339bc746195567ed8d3e24945ecd636e3619d20b9de9e9149"
|
||||
dependencies = [
|
||||
"cc",
|
||||
"pkg-config",
|
||||
"vcpkg",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "linux-raw-sys"
|
||||
version = "0.11.0"
|
||||
|
|
@ -838,12 +785,6 @@ version = "0.1.0"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
|
||||
|
||||
[[package]]
|
||||
name = "pkg-config"
|
||||
version = "0.3.32"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c"
|
||||
|
||||
[[package]]
|
||||
name = "potential_utf"
|
||||
version = "0.1.4"
|
||||
|
|
@ -1021,20 +962,6 @@ dependencies = [
|
|||
"windows-sys 0.52.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rusqlite"
|
||||
version = "0.32.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7753b721174eb8ff87a9a0e799e2d7bc3749323e773db92e0984debb00019d6e"
|
||||
dependencies = [
|
||||
"bitflags",
|
||||
"fallible-iterator",
|
||||
"fallible-streaming-iterator",
|
||||
"hashlink",
|
||||
"libsqlite3-sys",
|
||||
"smallvec",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rustix"
|
||||
version = "1.1.3"
|
||||
|
|
@ -1375,7 +1302,6 @@ dependencies = [
|
|||
"prost-build",
|
||||
"prost-types",
|
||||
"rand",
|
||||
"rusqlite",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"snmp",
|
||||
|
|
@ -1474,12 +1400,6 @@ version = "0.2.2"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821"
|
||||
|
||||
[[package]]
|
||||
name = "vcpkg"
|
||||
version = "0.2.15"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
|
||||
|
||||
[[package]]
|
||||
name = "version_check"
|
||||
version = "0.9.5"
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ FROM rust:1.83-alpine AS builder
|
|||
|
||||
# Build arguments provided by Docker buildx
|
||||
ARG TARGETPLATFORM
|
||||
ARG VERSION=0.1.0-unknown
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
|
|
@ -27,7 +28,7 @@ RUN mkdir src && echo "fn main() {}" > src/main.rs
|
|||
|
||||
# Build dependencies (cached layer)
|
||||
RUN RUST_TARGET=$(cat /tmp/rust-target) && \
|
||||
cargo build --release --target "$RUST_TARGET"
|
||||
BUILD_VERSION="$VERSION" cargo build --release --target "$RUST_TARGET"
|
||||
|
||||
# Remove dummy src
|
||||
RUN rm -rf src
|
||||
|
|
@ -38,7 +39,7 @@ COPY src ./src
|
|||
# Build the actual application
|
||||
RUN RUST_TARGET=$(cat /tmp/rust-target) && \
|
||||
touch src/main.rs && \
|
||||
cargo build --release --target "$RUST_TARGET" && \
|
||||
BUILD_VERSION="$VERSION" cargo build --release --target "$RUST_TARGET" && \
|
||||
cp "target/$RUST_TARGET/release/towerops-agent" /tmp/towerops-agent
|
||||
|
||||
# Runtime stage
|
||||
|
|
|
|||
9
build.rs
9
build.rs
|
|
@ -11,7 +11,14 @@ fn main() {
|
|||
}
|
||||
|
||||
fn get_version() -> String {
|
||||
// Try git describe first - gives us the most descriptive version
|
||||
// First check if BUILD_VERSION is already set (e.g., from Docker build arg)
|
||||
if let Ok(version) = std::env::var("BUILD_VERSION") {
|
||||
if !version.is_empty() && version != "0.1.0-unknown" {
|
||||
return version;
|
||||
}
|
||||
}
|
||||
|
||||
// Try git describe - gives us the most descriptive version
|
||||
// Examples:
|
||||
// v0.2.0 -> "0.2.0" (exact tag)
|
||||
// v0.2.0-5-g831588e -> "0.2.0.5.831588e" (5 commits after v0.2.0)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue