ci: derive release binary version from tag (#224)
Set the CLI build version from OBSCURA_VERSION, GitHub tag refs, or Cargo.toml fallback. Use that same build version for both --version and the startup banner, and pass the Docker tag version into Docker builds.
This commit is contained in:
1 parent
5e23903063
commit
048d72dc18
4 files changed
+45
-4
No files matched your search
@@ -32,6 +32,8 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
context: .
|
context: .
|
||||||
push: true
|
push: true
|
||||||
|
build-args: |
|
||||||
|
OBSCURA_VERSION=${{ steps.version.outputs.version }}
|
||||||
tags: |
|
tags: |
|
||||||
${{ secrets.DOCKERHUB_USERNAME }}/obscura:${{ steps.version.outputs.version }}
|
${{ secrets.DOCKERHUB_USERNAME }}/obscura:${{ steps.version.outputs.version }}
|
||||||
${{ secrets.DOCKERHUB_USERNAME }}/obscura:latest
|
${{ secrets.DOCKERHUB_USERNAME }}/obscura:latest
|
||||||
|
|||||||
+4
-1
@@ -29,9 +29,12 @@ RUN for crate in obscura-dom obscura-net obscura-browser obscura-cdp obscura-js
|
|||||||
|
|
||||||
RUN cargo build --release --bin obscura --bin obscura-worker 2>/dev/null || true
|
RUN cargo build --release --bin obscura --bin obscura-worker 2>/dev/null || true
|
||||||
|
|
||||||
|
ARG OBSCURA_VERSION
|
||||||
|
|
||||||
# Copy real sources and build
|
# Copy real sources and build
|
||||||
COPY crates/ crates/
|
COPY crates/ crates/
|
||||||
RUN touch crates/*/src/*.rs && cargo build --release --bin obscura --bin obscura-worker
|
RUN echo "Building Obscura version ${OBSCURA_VERSION:-from Cargo.toml}" && \
|
||||||
|
touch crates/*/src/*.rs && cargo build --release --bin obscura --bin obscura-worker
|
||||||
|
|
||||||
# ---
|
# ---
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,36 @@
|
|||||||
|
use std::env;
|
||||||
|
|
||||||
|
fn env_value(name: &str) -> Option<String> {
|
||||||
|
env::var(name)
|
||||||
|
.ok()
|
||||||
|
.map(|value| value.trim().to_string())
|
||||||
|
.filter(|value| !value.is_empty())
|
||||||
|
}
|
||||||
|
|
||||||
|
fn normalize_version(version: String) -> String {
|
||||||
|
version.strip_prefix('v').unwrap_or(&version).to_string()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn github_tag_version() -> Option<String> {
|
||||||
|
if env_value("GITHUB_REF_TYPE").as_deref() == Some("tag") {
|
||||||
|
return env_value("GITHUB_REF_NAME").map(normalize_version);
|
||||||
|
}
|
||||||
|
|
||||||
|
env_value("GITHUB_REF")
|
||||||
|
.and_then(|value| value.strip_prefix("refs/tags/").map(str::to_owned))
|
||||||
|
.map(normalize_version)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
println!("cargo:rerun-if-env-changed=OBSCURA_VERSION");
|
||||||
|
println!("cargo:rerun-if-env-changed=GITHUB_REF_TYPE");
|
||||||
|
println!("cargo:rerun-if-env-changed=GITHUB_REF_NAME");
|
||||||
|
println!("cargo:rerun-if-env-changed=GITHUB_REF");
|
||||||
|
|
||||||
|
let version = env_value("OBSCURA_VERSION")
|
||||||
|
.map(normalize_version)
|
||||||
|
.or_else(github_tag_version)
|
||||||
|
.unwrap_or_else(|| env::var("CARGO_PKG_VERSION").expect("Cargo sets CARGO_PKG_VERSION"));
|
||||||
|
|
||||||
|
println!("cargo:rustc-env=OBSCURA_BUILD_VERSION={version}");
|
||||||
|
}
|
||||||
@@ -10,7 +10,7 @@ use tokio::time::{timeout, Duration};
|
|||||||
#[derive(Parser)]
|
#[derive(Parser)]
|
||||||
#[command(
|
#[command(
|
||||||
name = "obscura",
|
name = "obscura",
|
||||||
version = env!("CARGO_PKG_VERSION"),
|
version = env!("OBSCURA_BUILD_VERSION"),
|
||||||
about = "Obscura - A lightweight headless browser for web scraping and automation",
|
about = "Obscura - A lightweight headless browser for web scraping and automation",
|
||||||
)]
|
)]
|
||||||
struct Args {
|
struct Args {
|
||||||
@@ -189,9 +189,9 @@ fn print_banner(port: u16) {
|
|||||||
| |__| | |_) \__ \ (__| |_| | | | (_| |
|
| |__| | |_) \__ \ (__| |_| | | | (_| |
|
||||||
\____/|_.__/|___/\___|\__,_|_| \__,_|
|
\____/|_.__/|___/\___|\__,_|_| \__,_|
|
||||||
|
|
||||||
Headless Browser v0.1.6
|
Headless Browser v{}
|
||||||
CDP server: ws://127.0.0.1:{}/devtools/browser
|
CDP server: ws://127.0.0.1:{}/devtools/browser
|
||||||
"#, port);
|
"#, env!("OBSCURA_BUILD_VERSION"), port);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn select_log_filter(verbose: bool, quiet: bool) -> &'static str {
|
fn select_log_filter(verbose: bool, quiet: bool) -> &'static str {
|
||||||
|
|||||||
Reference in new issue
Block a user