fix: tag Labrinth and Daedalus Docker builds with the right metadata (#4147)

* fix: tag Labrinth and Daedalus Docker builds with the right metadata

* chore: make it clear that Labrinth license is AGPL-3.0-only
This commit is contained in:
Alejandro González
2025-08-16 17:47:11 +02:00
committed by GitHub
parent 8e0732bf01
commit 6f59f4c110
8 changed files with 70 additions and 46 deletions

View File

@@ -17,6 +17,11 @@ RUN --mount=type=cache,target=/usr/src/daedalus/target \
FROM debian:bookworm-slim
LABEL org.opencontainers.image.source=https://github.com/modrinth/code
LABEL org.opencontainers.image.title=daedalus
LABEL org.opencontainers.image.description="Modrinth game metadata query client"
LABEL org.opencontainers.image.licenses=MIT
RUN apt-get update \
&& apt-get install -y --no-install-recommends ca-certificates openssl \
&& rm -rf /var/lib/apt/lists/*

View File

@@ -3,7 +3,7 @@ name = "labrinth"
version = "2.7.0"
authors = ["geometrically <jai@modrinth.com>"]
edition.workspace = true
license = "AGPL-3.0"
license = "AGPL-3.0-only"
# This seems redundant, but it's necessary for Docker to work
[[bin]]

View File

@@ -4,6 +4,7 @@ FROM rust:1.89.0 AS build
WORKDIR /usr/src/labrinth
COPY . .
ARG GIT_HASH
RUN --mount=type=cache,target=/usr/src/labrinth/target \
--mount=type=cache,target=/usr/local/cargo/git/db \
--mount=type=cache,target=/usr/local/cargo/registry \
@@ -20,8 +21,9 @@ RUN --mount=type=cache,target=/usr/src/labrinth/target \
FROM debian:bookworm-slim
LABEL org.opencontainers.image.source=https://github.com/modrinth/code
LABEL org.opencontainers.image.title=labrinth
LABEL org.opencontainers.image.description="Modrinth API"
LABEL org.opencontainers.image.licenses=AGPL-3.0
LABEL org.opencontainers.image.licenses=AGPL-3.0-only
RUN apt-get update \
&& apt-get install -y --no-install-recommends ca-certificates dumb-init curl \

View File

@@ -1,40 +1,23 @@
use std::path::Path;
use std::process::Command;
use chrono::Local;
use dotenv_build::Config;
fn main() {
let output = Command::new("git")
.arg("rev-parse")
.arg("HEAD")
.output()
.expect("`git` invocation to succeed");
println!("cargo:rerun-if-changed=migrations");
let git_hash = String::from_utf8(output.stdout)
.expect("valid UTF-8 output from `git` invocation");
println!("cargo::rerun-if-changed=../../.git/HEAD");
println!("cargo::rustc-env=GIT_HASH={}", git_hash.trim());
let timedate_fmt = Local::now().format("%F @ %I:%M %p");
let timezone_fmt = iana_time_zone::get_timezone()
.map(|tz| format!(" ({tz})"))
.unwrap_or_default();
let comptime = timedate_fmt.to_string() + timezone_fmt.as_str();
println!("cargo::rustc-env=COMPILATION_DATE={comptime}");
// trick to get compilation profile
let profile = std::env::var("OUT_DIR")
.expect("OUT_DIR to be set")
.split(std::path::MAIN_SEPARATOR)
.nth_back(3)
.unwrap_or("unknown")
.to_string();
println!("cargo::rustc-env=COMPILATION_PROFILE={profile}");
println!(
"cargo::rustc-env=COMPILATION_DATE={}",
format_args!(
"{date} ({tz})",
date = Local::now().format("%F @ %I:%M %p"),
tz = iana_time_zone::get_timezone().unwrap_or_default()
)
);
println!(
"cargo::rustc-env=COMPILATION_PROFILE={}",
std::env::var("PROFILE").as_deref().unwrap_or("unknown")
);
dotenv_build::output(Config {
filename: Path::new(".build.env"),
@@ -42,6 +25,4 @@ fn main() {
fail_if_missing_dotenv: false,
})
.unwrap();
println!("cargo:rerun-if-changed=migrations");
}

View File

@@ -11,7 +11,7 @@ pub async fn index_get() -> HttpResponse {
"build_info": {
"comp_date": env!("COMPILATION_DATE"),
"git_hash": env!("GIT_HASH", "unknown"),
"git_hash": option_env!("GIT_HASH").unwrap_or("unknown"),
"profile": env!("COMPILATION_PROFILE"),
}
});