You've already forked AstralRinth
forked from xxxOFFxxx/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:
|
docker:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: 📥 Check out code
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
- name: Set up Docker Buildx
|
|
||||||
|
- name: 🧰 Set up Docker Buildx
|
||||||
uses: docker/setup-buildx-action@v2
|
uses: docker/setup-buildx-action@v2
|
||||||
- name: Fetch docker metadata
|
|
||||||
|
- name: ⚙️ Generate Docker image metadata
|
||||||
id: docker_meta
|
id: docker_meta
|
||||||
uses: docker/metadata-action@v5
|
uses: docker/metadata-action@v5
|
||||||
|
env:
|
||||||
|
DOCKER_METADATA_ANNOTATIONS_LEVELS: manifest,index
|
||||||
with:
|
with:
|
||||||
images: ghcr.io/modrinth/daedalus
|
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
|
uses: docker/login-action@v3
|
||||||
with:
|
with:
|
||||||
registry: ghcr.io
|
registry: ghcr.io
|
||||||
username: ${{ github.actor }}
|
username: ${{ github.actor }}
|
||||||
password: ${{ secrets.GITHUB_TOKEN }}
|
password: ${{ secrets.GITHUB_TOKEN }}
|
||||||
- name: Build and push
|
|
||||||
|
- name: 🔨 Build and push
|
||||||
uses: docker/build-push-action@v6
|
uses: docker/build-push-action@v6
|
||||||
with:
|
with:
|
||||||
file: ./apps/daedalus_client/Dockerfile
|
file: ./apps/daedalus_client/Dockerfile
|
||||||
push: ${{ github.event_name != 'pull_request' }}
|
push: ${{ github.event_name != 'pull_request' }}
|
||||||
tags: ${{ steps.docker_meta.outputs.tags }}
|
tags: ${{ steps.docker_meta.outputs.tags }}
|
||||||
labels: ${{ steps.docker_meta.outputs.labels }}
|
labels: ${{ steps.docker_meta.outputs.labels }}
|
||||||
|
annotations: ${{ steps.docker_meta.outputs.annotations }}
|
||||||
cache-from: type=registry,ref=ghcr.io/modrinth/daedalus:main
|
cache-from: type=registry,ref=ghcr.io/modrinth/daedalus:main
|
||||||
cache-to: type=inline
|
cache-to: type=inline
|
||||||
|
|||||||
31
.github/workflows/labrinth-docker.yml
vendored
31
.github/workflows/labrinth-docker.yml
vendored
@@ -19,27 +19,48 @@ jobs:
|
|||||||
docker:
|
docker:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: 📥 Check out code
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
- name: Set up Docker Buildx
|
|
||||||
|
- name: 🧰 Set up Docker Buildx
|
||||||
uses: docker/setup-buildx-action@v2
|
uses: docker/setup-buildx-action@v2
|
||||||
- name: Fetch docker metadata
|
|
||||||
|
- name: ⚙️ Generate Docker image metadata
|
||||||
id: docker_meta
|
id: docker_meta
|
||||||
uses: docker/metadata-action@v5
|
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:
|
with:
|
||||||
images: ghcr.io/modrinth/labrinth
|
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
|
uses: docker/login-action@v3
|
||||||
with:
|
with:
|
||||||
registry: ghcr.io
|
registry: ghcr.io
|
||||||
username: ${{ github.actor }}
|
username: ${{ github.actor }}
|
||||||
password: ${{ secrets.GITHUB_TOKEN }}
|
password: ${{ secrets.GITHUB_TOKEN }}
|
||||||
- name: Build and push
|
|
||||||
|
- name: 🔨 Build and push
|
||||||
uses: docker/build-push-action@v6
|
uses: docker/build-push-action@v6
|
||||||
with:
|
with:
|
||||||
file: ./apps/labrinth/Dockerfile
|
file: ./apps/labrinth/Dockerfile
|
||||||
push: ${{ github.event_name != 'pull_request' }}
|
push: ${{ github.event_name != 'pull_request' }}
|
||||||
tags: ${{ steps.docker_meta.outputs.tags }}
|
tags: ${{ steps.docker_meta.outputs.tags }}
|
||||||
labels: ${{ steps.docker_meta.outputs.labels }}
|
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-from: type=registry,ref=ghcr.io/modrinth/labrinth:main
|
||||||
cache-to: type=inline
|
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.
|
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
|
## Modrinth Branding
|
||||||
|
|
||||||
|
|||||||
@@ -17,6 +17,11 @@ RUN --mount=type=cache,target=/usr/src/daedalus/target \
|
|||||||
|
|
||||||
FROM debian:bookworm-slim
|
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 \
|
RUN apt-get update \
|
||||||
&& apt-get install -y --no-install-recommends ca-certificates openssl \
|
&& apt-get install -y --no-install-recommends ca-certificates openssl \
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ name = "labrinth"
|
|||||||
version = "2.7.0"
|
version = "2.7.0"
|
||||||
authors = ["geometrically <jai@modrinth.com>"]
|
authors = ["geometrically <jai@modrinth.com>"]
|
||||||
edition.workspace = true
|
edition.workspace = true
|
||||||
license = "AGPL-3.0"
|
license = "AGPL-3.0-only"
|
||||||
|
|
||||||
# This seems redundant, but it's necessary for Docker to work
|
# This seems redundant, but it's necessary for Docker to work
|
||||||
[[bin]]
|
[[bin]]
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ FROM rust:1.89.0 AS build
|
|||||||
|
|
||||||
WORKDIR /usr/src/labrinth
|
WORKDIR /usr/src/labrinth
|
||||||
COPY . .
|
COPY . .
|
||||||
|
ARG GIT_HASH
|
||||||
RUN --mount=type=cache,target=/usr/src/labrinth/target \
|
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/git/db \
|
||||||
--mount=type=cache,target=/usr/local/cargo/registry \
|
--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
|
FROM debian:bookworm-slim
|
||||||
|
|
||||||
LABEL org.opencontainers.image.source=https://github.com/modrinth/code
|
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.description="Modrinth API"
|
||||||
LABEL org.opencontainers.image.licenses=AGPL-3.0
|
LABEL org.opencontainers.image.licenses=AGPL-3.0-only
|
||||||
|
|
||||||
RUN apt-get update \
|
RUN apt-get update \
|
||||||
&& apt-get install -y --no-install-recommends ca-certificates dumb-init curl \
|
&& apt-get install -y --no-install-recommends ca-certificates dumb-init curl \
|
||||||
|
|||||||
@@ -1,40 +1,23 @@
|
|||||||
use std::path::Path;
|
use std::path::Path;
|
||||||
use std::process::Command;
|
|
||||||
|
|
||||||
use chrono::Local;
|
use chrono::Local;
|
||||||
use dotenv_build::Config;
|
use dotenv_build::Config;
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let output = Command::new("git")
|
println!("cargo:rerun-if-changed=migrations");
|
||||||
.arg("rev-parse")
|
|
||||||
.arg("HEAD")
|
|
||||||
.output()
|
|
||||||
.expect("`git` invocation to succeed");
|
|
||||||
|
|
||||||
let git_hash = String::from_utf8(output.stdout)
|
println!(
|
||||||
.expect("valid UTF-8 output from `git` invocation");
|
"cargo::rustc-env=COMPILATION_DATE={}",
|
||||||
|
format_args!(
|
||||||
println!("cargo::rerun-if-changed=../../.git/HEAD");
|
"{date} ({tz})",
|
||||||
println!("cargo::rustc-env=GIT_HASH={}", git_hash.trim());
|
date = Local::now().format("%F @ %I:%M %p"),
|
||||||
|
tz = iana_time_zone::get_timezone().unwrap_or_default()
|
||||||
let timedate_fmt = Local::now().format("%F @ %I:%M %p");
|
)
|
||||||
let timezone_fmt = iana_time_zone::get_timezone()
|
);
|
||||||
.map(|tz| format!(" ({tz})"))
|
println!(
|
||||||
.unwrap_or_default();
|
"cargo::rustc-env=COMPILATION_PROFILE={}",
|
||||||
|
std::env::var("PROFILE").as_deref().unwrap_or("unknown")
|
||||||
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}");
|
|
||||||
|
|
||||||
dotenv_build::output(Config {
|
dotenv_build::output(Config {
|
||||||
filename: Path::new(".build.env"),
|
filename: Path::new(".build.env"),
|
||||||
@@ -42,6 +25,4 @@ fn main() {
|
|||||||
fail_if_missing_dotenv: false,
|
fail_if_missing_dotenv: false,
|
||||||
})
|
})
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
||||||
println!("cargo:rerun-if-changed=migrations");
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ pub async fn index_get() -> HttpResponse {
|
|||||||
|
|
||||||
"build_info": {
|
"build_info": {
|
||||||
"comp_date": env!("COMPILATION_DATE"),
|
"comp_date": env!("COMPILATION_DATE"),
|
||||||
"git_hash": env!("GIT_HASH", "unknown"),
|
"git_hash": option_env!("GIT_HASH").unwrap_or("unknown"),
|
||||||
"profile": env!("COMPILATION_PROFILE"),
|
"profile": env!("COMPILATION_PROFILE"),
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user