Fixed docker CI
All checks were successful
Publish Server Image / build-and-push-image (push) Successful in 2m12s

This commit is contained in:
Ultradesu
2026-03-17 19:03:48 +00:00
parent bfc0675f5a
commit 85b3cb6852
6 changed files with 27 additions and 16 deletions

View File

@@ -2,6 +2,8 @@ name: Publish Server Image
on: on:
push: push:
branches:
- '**'
tags: tags:
- 'v*.*.*' - 'v*.*.*'
@@ -29,22 +31,29 @@ jobs:
username: ${{ secrets.DOCKERHUB_USERNAME }} username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }} password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Extract metadata (tags, labels) for Docker - name: Determine version and tags
id: meta id: info
uses: docker/metadata-action@v5 run: |
with: IMAGE="${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}"
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} SHORT_SHA="$(echo '${{ github.sha }}' | cut -c1-7)"
tags: |
type=semver,pattern={{version}} if [[ "${{ github.ref }}" == refs/tags/v* ]]; then
type=semver,pattern={{major}}.{{minor}} TAG="${{ github.ref_name }}"
type=sha,format=short VERSION="${TAG#v}"
echo "tags=${IMAGE}:${VERSION},${IMAGE}:latest" >> "$GITHUB_OUTPUT"
echo "version=${VERSION}" >> "$GITHUB_OUTPUT"
else
echo "tags=${IMAGE}:trunk,${IMAGE}:${SHORT_SHA}" >> "$GITHUB_OUTPUT"
echo "version=${SHORT_SHA}" >> "$GITHUB_OUTPUT"
fi
- name: Build and push Docker image - name: Build and push Docker image
uses: docker/build-push-action@v5 uses: docker/build-push-action@v5
with: with:
context: . context: .
push: true push: true
tags: ${{ steps.meta.outputs.tags }} tags: ${{ steps.info.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }} build-args: |
FURUMI_VERSION=${{ steps.info.outputs.version }}
cache-from: type=gha cache-from: type=gha
cache-to: type=gha,mode=max cache-to: type=gha,mode=max

View File

@@ -14,8 +14,10 @@ WORKDIR /usr/src/app
# Option: Copy in root workspace files and source crates # Option: Copy in root workspace files and source crates
COPY . . COPY . .
ARG FURUMI_VERSION=dev
# Build only the server for release # Build only the server for release
RUN cargo build --release --bin furumi-server RUN FURUMI_VERSION=${FURUMI_VERSION} cargo build --release --bin furumi-server
# Stage 2: Create the minimal runtime image # Stage 2: Create the minimal runtime image
FROM debian:bookworm-slim FROM debian:bookworm-slim

View File

@@ -75,7 +75,7 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
MountOption::NoExec, // Better security for media mount MountOption::NoExec, // Better security for media mount
]; ];
println!("Mounting Furumi-ng v{} to {:?}", env!("CARGO_PKG_VERSION"), args.mount); println!("Mounting Furumi-ng v{} to {:?}", option_env!("FURUMI_VERSION").unwrap_or(env!("CARGO_PKG_VERSION")), args.mount);
// Use Session + BackgroundSession for graceful unmount on exit // Use Session + BackgroundSession for graceful unmount on exit
let session = Session::new(fuse_fs, &args.mount, &options)?; let session = Session::new(fuse_fs, &args.mount, &options)?;

View File

@@ -108,7 +108,7 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
std::process::exit(1); std::process::exit(1);
} }
println!("Mounted Furumi-ng v{} to {:?}", env!("CARGO_PKG_VERSION"), mount_path); println!("Mounted Furumi-ng v{} to {:?}", option_env!("FURUMI_VERSION").unwrap_or(env!("CARGO_PKG_VERSION")), mount_path);
// Wait for shutdown signal // Wait for shutdown signal
while running.load(Ordering::SeqCst) { while running.load(Ordering::SeqCst) {

View File

@@ -108,7 +108,7 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
let svc = RemoteFileSystemServer::with_interceptor(remote_fs, auth.clone()); let svc = RemoteFileSystemServer::with_interceptor(remote_fs, auth.clone());
// Print startup info // Print startup info
println!("Furumi-ng Server v{} listening on {}", env!("CARGO_PKG_VERSION"), addr); println!("Furumi-ng Server v{} listening on {}", option_env!("FURUMI_VERSION").unwrap_or(env!("CARGO_PKG_VERSION")), addr);
if args.no_tls { if args.no_tls {
println!("WARNING: TLS is DISABLED — traffic is unencrypted"); println!("WARNING: TLS is DISABLED — traffic is unencrypted");
} else { } else {

View File

@@ -61,6 +61,6 @@ async fn player_html(
) -> axum::response::Html<String> { ) -> axum::response::Html<String> {
let html = include_str!("player.html") let html = include_str!("player.html")
.replace("<!-- USERNAME_PLACEHOLDER -->", &user_info.0) .replace("<!-- USERNAME_PLACEHOLDER -->", &user_info.0)
.replace("<!-- VERSION_PLACEHOLDER -->", env!("CARGO_PKG_VERSION")); .replace("<!-- VERSION_PLACEHOLDER -->", option_env!("FURUMI_VERSION").unwrap_or(env!("CARGO_PKG_VERSION")));
axum::response::Html(html) axum::response::Html(html)
} }