diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 8b8e1df..3971a86 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -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 \ diff --git a/Cargo.lock b/Cargo.lock index be044d5..be0b0b1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -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" diff --git a/Dockerfile b/Dockerfile index dd5f92a..aa7e777 100644 --- a/Dockerfile +++ b/Dockerfile @@ -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 diff --git a/build.rs b/build.rs index a6ccb99..3d17602 100644 --- a/build.rs +++ b/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)