You've already forked AstralRinth
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:
committed by
GitHub
parent
8e0732bf01
commit
6f59f4c110
25
.github/workflows/daedalus-docker.yml
vendored
25
.github/workflows/daedalus-docker.yml
vendored
@@ -21,27 +21,42 @@ jobs:
|
||||
docker:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
- name: 📥 Check out code
|
||||
uses: actions/checkout@v4
|
||||
- name: Set up Docker Buildx
|
||||
|
||||
- name: 🧰 Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v2
|
||||
- name: Fetch docker metadata
|
||||
|
||||
- name: ⚙️ Generate Docker image metadata
|
||||
id: docker_meta
|
||||
uses: docker/metadata-action@v5
|
||||
env:
|
||||
DOCKER_METADATA_ANNOTATIONS_LEVELS: manifest,index
|
||||
with:
|
||||
images: ghcr.io/modrinth/daedalus
|
||||
- name: Login to GitHub Images
|
||||
labels: |
|
||||
org.opencontainers.image.title=daedalus
|
||||
org.opencontainers.image.description=Modrinth game metadata query client
|
||||
org.opencontainers.image.licenses=MIT
|
||||
annotations: |
|
||||
org.opencontainers.image.title=daedalus
|
||||
org.opencontainers.image.description=Modrinth game metadata query client
|
||||
org.opencontainers.image.licenses=MIT
|
||||
|
||||
- name: 🔑 Login to GitHub Packages
|
||||
uses: docker/login-action@v3
|
||||
with:
|
||||
registry: ghcr.io
|
||||
username: ${{ github.actor }}
|
||||
password: ${{ secrets.GITHUB_TOKEN }}
|
||||
- name: Build and push
|
||||
|
||||
- name: 🔨 Build and push
|
||||
uses: docker/build-push-action@v6
|
||||
with:
|
||||
file: ./apps/daedalus_client/Dockerfile
|
||||
push: ${{ github.event_name != 'pull_request' }}
|
||||
tags: ${{ steps.docker_meta.outputs.tags }}
|
||||
labels: ${{ steps.docker_meta.outputs.labels }}
|
||||
annotations: ${{ steps.docker_meta.outputs.annotations }}
|
||||
cache-from: type=registry,ref=ghcr.io/modrinth/daedalus:main
|
||||
cache-to: type=inline
|
||||
|
||||
31
.github/workflows/labrinth-docker.yml
vendored
31
.github/workflows/labrinth-docker.yml
vendored
@@ -19,27 +19,48 @@ jobs:
|
||||
docker:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
- name: 📥 Check out code
|
||||
uses: actions/checkout@v4
|
||||
- name: Set up Docker Buildx
|
||||
|
||||
- name: 🧰 Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v2
|
||||
- name: Fetch docker metadata
|
||||
|
||||
- name: ⚙️ Generate Docker image metadata
|
||||
id: docker_meta
|
||||
uses: docker/metadata-action@v5
|
||||
env:
|
||||
# GitHub Packages requires annotations metadata in at least the index descriptor to show them
|
||||
# up properly in its UI it seems, but it's not clear about it, because the docs refer to the
|
||||
# image manifest only. See:
|
||||
# https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-container-registry#adding-a-description-to-multi-arch-images
|
||||
DOCKER_METADATA_ANNOTATIONS_LEVELS: manifest,index
|
||||
with:
|
||||
images: ghcr.io/modrinth/labrinth
|
||||
- name: Login to GitHub Images
|
||||
labels: |
|
||||
org.opencontainers.image.title=labrinth
|
||||
org.opencontainers.image.description=Modrinth API
|
||||
org.opencontainers.image.licenses=AGPL-3.0-only
|
||||
annotations: |
|
||||
org.opencontainers.image.title=labrinth
|
||||
org.opencontainers.image.description=Modrinth API
|
||||
org.opencontainers.image.licenses=AGPL-3.0-only
|
||||
|
||||
- name: 🔑 Login to GitHub Packages
|
||||
uses: docker/login-action@v3
|
||||
with:
|
||||
registry: ghcr.io
|
||||
username: ${{ github.actor }}
|
||||
password: ${{ secrets.GITHUB_TOKEN }}
|
||||
- name: Build and push
|
||||
|
||||
- name: 🔨 Build and push
|
||||
uses: docker/build-push-action@v6
|
||||
with:
|
||||
file: ./apps/labrinth/Dockerfile
|
||||
push: ${{ github.event_name != 'pull_request' }}
|
||||
tags: ${{ steps.docker_meta.outputs.tags }}
|
||||
labels: ${{ steps.docker_meta.outputs.labels }}
|
||||
annotations: ${{ steps.docker_meta.outputs.annotations }}
|
||||
build-args: |
|
||||
GIT_HASH=${{ fromJSON(steps.docker_meta.outputs.json).labels['org.opencontainers.image.revision'] }}
|
||||
cache-from: type=registry,ref=ghcr.io/modrinth/labrinth:main
|
||||
cache-to: type=inline
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
All packages in this repository are licensed under their respective licenses. For more information, refer to the LICENSE file in each package.
|
||||
|
||||
For detailed information, consult each package's COPYING.md file, if available.
|
||||
For detailed information, consult each package's COPYING.md, LICENSE.txt, or LICENSE file, if available.
|
||||
|
||||
## Modrinth Branding
|
||||
|
||||
|
||||
@@ -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/*
|
||||
|
||||
@@ -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]]
|
||||
|
||||
@@ -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 \
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
|
||||
@@ -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"),
|
||||
}
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user