biliup-biliup
SUCCESS
53m 24s
History Source
SummaryIterations1Transcript11Dockerfile
01Iteration 1
WRITEWriteFile· step #1
1s
Dockerfile2695 bytes written
text130 lines · 2695 chars
# Build biliup's web-ui
FROM node:lts AS webui-builder
ARG repo_url=https://github.com/biliup/biliup
ARG branch_name=master

COPY . /biliup

RUN set -eux; \
	if [ ! -f /biliup/biliup.spec ]; then \
	rm -rf /biliup; \
	git clone --depth 1 --branch "$branch_name" "$repo_url" /biliup; \
	fi;

WORKDIR /biliup

RUN set -eux; \
	npm install; \
	npm run build;


# Build biliup's python wheel
FROM rust:latest AS wheel-builder
ARG repo_url=https://github.com/biliup/biliup
ARG branch_name=master

COPY . /biliup

RUN set -eux; \
	apt-get update; \
	apt-get install -y --no-install-recommends python3-pip g++; \
	pip3 install maturin --break-system-packages; \
	if [ ! -f /biliup/biliup.spec ]; then \
	rm -rf /biliup; \
	git clone --depth 1 --branch "$branch_name" "$repo_url" /biliup; \
	fi;

COPY --from=webui-builder /biliup/out /biliup/out

WORKDIR /biliup

RUN set -eux; \
	maturin build --release;


# Deploy Biliup
FROM python:3.13-slim AS biliup

ENV TZ="Asia/Shanghai"
ENV LANG="C.UTF-8"
ENV LANGUAGE="C.UTF-8"
ENV LC_ALL="C.UTF-8"
EXPOSE 19159/tcp
VOLUME /opt

# 需要遵守 wheel 文件名规范
COPY --from=wheel-builder /biliup/target/wheels/* /tmp/

RUN set -eux; \
	\
	whl=$(ls /tmp/biliup*.whl); \
	pip3 install --no-cache-dir "$whl"; \
	# pip3 install --no-cache-dir "$whl[quickjs]"; \
	pip3 cache purge; \
	rm -rf /tmp/*;

RUN set -eux; \
	\
	savedAptMark="$(apt-mark showmanual)"; \
	useApt=false; \
	apt-get update; \
	apt-get install -y --no-install-recommends \
		wget \
		curl \
		xz-utils \
		g++ \
	; \
	apt-mark auto '.*' > /dev/null; \
	apt-mark manual curl wget; \
	\
	arch="$(dpkg --print-architecture)"; arch="${arch##*-}"; \
	url='https://github.com/BtbN/FFmpeg-Builds/releases/download/latest/ffmpeg-n8.0-latest-'; \
	case "$arch" in \
		'amd64') \
			url="${url}linux64-gpl-8.0.tar.xz"; \
		;; \
		'arm64') \
			url="${url}linuxarm64-gpl-8.0.tar.xz"; \
		;; \
		*) \
			useApt=true; \
		;; \
	esac; \
	\
	if [ "$useApt" = true ] ; then \
		apt-get install -y --no-install-recommends \
			ffmpeg \
		; \
	else \
		wget -O ffmpeg.tar.xz "$url" --progress=dot:giga; \
		tar -xJf ffmpeg.tar.xz -C /usr/local --strip-components=1; \
		rm -rf \
			/usr/local/doc \
			/usr/local/man; \
		rm -rf \
			/usr/local/bin/ffprobe \
			/usr/local/bin/ffplay; \
		rm -rf \
			ffmpeg*; \
		chmod a+x /usr/local/* ; \
	fi; \
	\
	# 安装 quickjs 需要 g++
	pip3 install --no-cache-dir quickjs; \
	\
	# Clean up \
	[ -z "$savedAptMark" ] || apt-mark manual $savedAptMark; \
	apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \
	rm -rf \
		/tmp/* \
		/usr/share/doc/* \
		/var/cache/* \
		/var/lib/apt/lists/* \
		/var/tmp/* \
		/var/log/* \
	;

WORKDIR /opt

ENTRYPOINT ["biliup"]
WRITEWriteFile· step #2
0s
.dockerignore73 bytes written
dockerignore9 lines · 73 chars
node_modules
build
dist
.babelcache
.git
.github
.dockerignore
.DS_Store
VERIFYVerifyBuild· step #3
11m 40s
VerifyBuildbuild_failed
Build error
Summary (under 1500 chars):

- Exact error message and exit code
  - 404 Not Found (from wget)
  - Exit code: 8
  - Context: The log shows “ERROR 404: Not Found.” and later the build step reports exit code 8 for the failing command.

- Failing command/step
  - Failing step: [biliup 4/5] RUN set -eux; savedAptMark="$(apt-mark showmanual)"; useApt=false; apt-get update; apt-get install -y --no-install-recommends wget curl xz-utils g++; ... arch="$(dpkg --print-architecture)"; arch="${arch##*-}"; url='https://github.com/BtbN/FFmpeg-Builds/releases/download/latest/ffmpeg-n8.0-latest-'; case "$arch" in 'amd64') url="${url}linux64-gpl-8.0.tar.xz";; 'arm64') url="${url}linuxarm64-gpl-8.0.tar.xz";; *) useApt=true; esac; ... if [ "$useApt" = true ] ; then apt-get install -y --no-install-recommends ffmpeg ; else wget -O ffmpeg.tar.xz "$url" --progress=dot:giga; tar -xJf ffmpeg.tar.xz -C /usr/local --strip-components=1; ...; fi; ...;
  - The wget invocation that failed (from the log) is:
    wget -O ffmpeg.tar.xz "$url" --progress=dot:giga

- Missing packages or files mentioned
  - The missing file is the FFmpeg tarball at the URL:
    https://github.com/BtbN/FFmpeg-Builds/releases/download/latest/ffmpeg-n8.0-latest-linux64-gpl-8.0.tar.xz
  - HTTP 404 indicates that specific file/version is not found on the server.

- Version mismatch info
  - The script is trying to download ffmpeg-n8.0-latest-linux64-gpl-8.0.tar.xz (FFmpeg 8.0 for amd64). The 404 suggests this exact release/build is not available (mismatch between requested version and what exists at that URL, or the “latest” tag no longer hosts that file for amd64).
WRITEWriteFile· step #4
1s
Dockerfile2883 bytes written
text135 lines · 2883 chars
# Build biliup's web-ui
FROM node:lts AS webui-builder
ARG repo_url=https://github.com/biliup/biliup
ARG branch_name=master

COPY . /biliup

RUN set -eux; \
	if [ ! -f /biliup/biliup.spec ]; then \
	rm -rf /biliup; \
	git clone --depth 1 --branch "$branch_name" "$repo_url" /biliup; \
	fi;

WORKDIR /biliup

RUN set -eux; \
	npm install; \
	npm run build;


# Build biliup's python wheel
FROM rust:latest AS wheel-builder
ARG repo_url=https://github.com/biliup/biliup
ARG branch_name=master

COPY . /biliup

RUN set -eux; \
	apt-get update; \
	apt-get install -y --no-install-recommends python3-pip g++; \
	pip3 install maturin --break-system-packages; \
	if [ ! -f /biliup/biliup.spec ]; then \
	rm -rf /biliup; \
	git clone --depth 1 --branch "$branch_name" "$repo_url" /biliup; \
	fi;

COPY --from=webui-builder /biliup/out /biliup/out

WORKDIR /biliup

RUN set -eux; \
	maturin build --release;


# Deploy Biliup
FROM python:3.13-slim AS biliup

ENV TZ="Asia/Shanghai"
ENV LANG="C.UTF-8"
ENV LANGUAGE="C.UTF-8"
ENV LC_ALL="C.UTF-8"
EXPOSE 19159/tcp
VOLUME /opt

# 需要遵守 wheel 文件名规范
COPY --from=wheel-builder /biliup/target/wheels/* /tmp/

RUN set -eux; \
	\
	whl=$(ls /tmp/biliup*.whl); \
	pip3 install --no-cache-dir "$whl"; \
	# pip3 install --no-cache-dir "$whl[quickjs]"; \
	pip3 cache purge; \
	rm -rf /tmp/*;

RUN set -eux; \
	\
	savedAptMark="$(apt-mark showmanual)"; \
	useApt=false; \
	apt-get update; \
	apt-get install -y --no-install-recommends \
		wget \
		curl \
		xz-utils \
		g++ \
	; \
	apt-mark auto '.*' > /dev/null; \
	apt-mark manual curl wget; \
	\
	arch="$(dpkg --print-architecture)"; arch="${arch##*-}"; \
	url='https://github.com/BtbN/FFmpeg-Builds/releases/download/latest/ffmpeg-n8.0-latest-'; \
	case "$arch" in \
		'amd64') \
			url="${url}linux64-gpl-8.0.tar.xz"; \
		;; \
		'arm64') \
			url="${url}linuxarm64-gpl-8.0.tar.xz"; \
		;; \
		*) \
			useApt=true; \
		;; \
	esac; \
	\
	if [ "$useApt" = true ] ; then \
		apt-get install -y --no-install-recommends \
			ffmpeg \
		; \
	else \
		if wget -O ffmpeg.tar.xz "$url" --progress=dot:giga; then \
			# downloaded successfully
			tar -xJf ffmpeg.tar.xz -C /usr/local --strip-components=1; \
		else \
			echo "FFmpeg tarball not found at $url, falling back to system ffmpeg"; \
			apt-get install -y --no-install-recommends ffmpeg; \
		fi; \
		rm -rf \
			/usr/local/doc \
			/usr/local/man; \
		rm -rf \
			/usr/local/bin/ffprobe \
			/usr/local/bin/ffplay; \
		rm -rf \
			ffmpeg*; \
		chmod a+x /usr/local/* ; \
	fi; \
	\
	# 安装 quickjs 需要 g++
	pip3 install --no-cache-dir quickjs; \
	\
	# Clean up \
	[ -z "$savedAptMark" ] || apt-mark manual $savedAptMark; \
	apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \
	rm -rf \
		/tmp/* \
		/usr/share/doc/* \
		/var/cache/* \
		/var/lib/apt/lists/* \
		/var/tmp/* \
		/var/log/* \
	;

WORKDIR /opt

ENTRYPOINT ["biliup"]
VERIFYVerifyBuild· step #5
10m 50s
VerifyBuildbuild_failed
Build error
Build timed out after 600s
WRITEWriteFile· step #6
1s
Dockerfile1896 bytes written
text89 lines · 1896 chars
# Build biliup's web-ui
FROM node:lts AS webui-builder
ARG repo_url=https://github.com/biliup/biliup
ARG branch_name=master

COPY . /biliup

RUN set -eux; \
	if [ ! -f /biliup/biliup.spec ]; then \
	rm -rf /biliup; \
	git clone --depth 1 --branch "$branch_name" "$repo_url" /biliup; \
	fi;

WORKDIR /biliup

RUN set -eux; \
	npm install; \
	npm run build;


# Build biliup's python wheel
FROM rust:latest AS wheel-builder
ARG repo_url=https://github.com/biliup/biliup
ARG branch_name=master

COPY . /biliup

RUN set -eux; \
	apt-get update; \
	apt-get install -y --no-install-recommends python3-pip g++; \
	pip3 install maturin --break-system-packages; \
	if [ ! -f /biliup/biliup.spec ]; then \
	rm -rf /biliup; \
	git clone --depth 1 --branch "$branch_name" "$repo_url" /biliup; \
	fi;

COPY --from=webui-builder /biliup/out /biliup/out

WORKDIR /biliup

RUN set -eux; \
	maturin build --release;


# Deploy Biliup
FROM python:3.13-slim AS biliup

ENV TZ="Asia/Shanghai"
ENV LANG="C.UTF-8"
ENV LANGUAGE="C.UTF-8"
ENV LC_ALL="C.UTF-8"
EXPOSE 19159/tcp
VOLUME /opt

# 需要遵守 wheel 文件名规范
COPY --from=wheel-builder /biliup/target/wheels/* /tmp/

RUN set -eux; \
	\
	whl=$(ls /tmp/biliup*.whl); \
	pip3 install --no-cache-dir "$whl"; \
	# pip3 install --no-cache-dir "$whl[quickjs]"; \
	pip3 cache purge; \
	rm -rf /tmp/*;

RUN set -eux; \
	\
	# Simplified FFmpeg installation to speed up build and avoid 404s
	savedAptMark="$(apt-mark showmanual)"; \
	apt-get update; \
	apt-get install -y --no-install-recommends ffmpeg; \
	# Install quickjs as before
	pip3 install --no-cache-dir quickjs; \
	# Clean up
	[ -z "$savedAptMark" ] || apt-mark manual $savedAptMark; \
	apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \
	rm -rf \
		/tmp/* \
		/usr/share/doc/* \
		/var/cache/* \
		/var/lib/apt/lists/* \
		/var/tmp/* \
		/var/log/* \
	;

WORKDIR /opt

ENTRYPOINT ["biliup"]
VERIFYVerifyBuild· step #7
9m 60s
VerifyBuildbuild_failed
Build error
Summary of Docker build error

- Exact error message and exit code
  - error: command 'gcc' failed: No such file or directory
  - exit code: 1

- Failing command/step
  - Stage: biliup 4/5
  - Command: RUN set -eux; \
      savedAptMark="$(apt-mark showmanual)"; \
      apt-get update; \
      apt-get install -y --no-install-recommends ffmpeg; \
      pip3 install --no-cache-dir quickjs; \
      [ -z "$savedAptMark" ] || apt-mark manual $savedAptMark; \
      apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \
      rm -rf /tmp/* /usr/share/doc/* /var/cache/* /var/lib/apt/lists/* /var/tmp/* /var/log/*;

- Missing packages or files mentioned
  - GCC (the C compiler) is missing: "No such file or directory" for gcc
  - Implication: need a C toolchain (e.g., build-essential with gcc/g++, make) installed before pip install quickjs

- Version mismatch information
  - No explicit version mismatch reported. The image uses Node LTS, Python 3.13-slim, and Rust: latest in various stages, but the failure is due to a missing compiler, not a version mismatch.
WRITEWriteFile· step #8
1s
Dockerfile2235 bytes written
text104 lines · 2235 chars
# Build biliup's web-ui
FROM node:lts AS webui-builder
ARG repo_url=https://github.com/biliup/biliup
ARG branch_name=master

WORKDIR /biliup

# Use repository content if biliup.spec exists, otherwise clone the repo
COPY . /biliup

RUN set -eux; \
	if [ -f /biliup/biliup.spec ]; then \
		true; \
	else \
		rm -rf /biliup; \
		git clone --depth 1 --branch "$branch_name" "$repo_url" /biliup; \
	fi;

RUN set -eux; \
	cd /biliup; \
	npm install; \
	npm run build;


# Build biliup's python wheel
FROM rust:latest AS wheel-builder
ARG repo_url=https://github.com/biliup/biliup
ARG branch_name=master

WORKDIR /biliup

# Copy source; if biliup.spec exists, we reuse as-is, otherwise clone the repo
COPY . /biliup

RUN set -eux; \
	apt-get update; \
	apt-get install -y --no-install-recommends python3-pip build-essential git ca-certificates pkg-config libssl-dev libffi-dev; \
	pip3 install maturin --break-system-packages; \
	if [ -f /biliup/biliup.spec ]; then \
		true; \
	else \
		rm -rf /biliup; \
		git clone --depth 1 --branch "$branch_name" "$repo_url" /biliup; \
	fi;

COPY --from=webui-builder /biliup/out /biliup/out

WORKDIR /biliup

RUN set -eux; \
	maturin build --release;


# Deploy Biliup
FROM python:3.13-slim AS biliup

ENV TZ="Asia/Shanghai"
ENV LANG="C.UTF-8"
ENV LANGUAGE="C.UTF-8"
ENV LC_ALL="C.UTF-8"
EXPOSE 19159/tcp
VOLUME /opt

# 需要遵守 wheel 文件名规范
COPY --from=wheel-builder /biliup/target/wheels/* /tmp/

RUN set -eux; \
	
	whl=$(ls /tmp/biliup*.whl); \
	pip3 install --no-cache-dir "$whl"; \
	# pip3 install --no-cache-dir "$whl[quickjs]"; \
	pip3 cache purge; \
	rm -rf /tmp/*;

RUN set -eux; \
	 savedAptMark="$(apt-mark showmanual)"; \
	apt-get update; \
	apt-get install -y --no-install-recommends \
		ffmpeg \
		wget \
		curl \
		xz-utils \
		g++ \
	; \
	apt-mark auto '.*' > /dev/null; \
	apt-mark manual curl wget; \
	# Install quickjs for Python bindings
	pip3 install --no-cache-dir quickjs; \
	# Clean up \
	[ -z "$savedAptMark" ] || apt-mark manual $savedAptMark; \
	apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \
	rm -rf \
		/tmp/* \
		/usr/share/doc/* \
		/var/cache/* \
		/var/lib/apt/lists/* \
		/var/tmp/* \
		/var/log/* \
	;

WORKDIR /opt

ENTRYPOINT ["biliup"]
VERIFYVerifyBuild· step #9
12m 20s
VerifyBuildbuild_failed
Build error
Build timed out after 600s
WRITEWriteFile· step #10
1s
Dockerfile2235 bytes written
text104 lines · 2235 chars
# Build biliup's web-ui
FROM node:lts AS webui-builder
ARG repo_url=https://github.com/biliup/biliup
ARG branch_name=master

WORKDIR /biliup

# Use repository content if biliup.spec exists, otherwise clone the repo
COPY . /biliup

RUN set -eux; \
	if [ -f /biliup/biliup.spec ]; then \
		true; \
	else \
		rm -rf /biliup; \
		git clone --depth 1 --branch "$branch_name" "$repo_url" /biliup; \
	fi;

RUN set -eux; \
	cd /biliup; \
	npm install; \
	npm run build;


# Build biliup's python wheel
FROM rust:latest AS wheel-builder
ARG repo_url=https://github.com/biliup/biliup
ARG branch_name=master

WORKDIR /biliup

# Copy source; if biliup.spec exists, we reuse as-is, otherwise clone the repo
COPY . /biliup

RUN set -eux; \
	apt-get update; \
	apt-get install -y --no-install-recommends python3-pip build-essential git ca-certificates pkg-config libssl-dev libffi-dev; \
	pip3 install maturin --break-system-packages; \
	if [ -f /biliup/biliup.spec ]; then \
		true; \
	else \
		rm -rf /biliup; \
		git clone --depth 1 --branch "$branch_name" "$repo_url" /biliup; \
	fi;

COPY --from=webui-builder /biliup/out /biliup/out

WORKDIR /biliup

RUN set -eux; \
	maturin build --release;


# Deploy Biliup
FROM python:3.13-slim AS biliup

ENV TZ="Asia/Shanghai"
ENV LANG="C.UTF-8"
ENV LANGUAGE="C.UTF-8"
ENV LC_ALL="C.UTF-8"
EXPOSE 19159/tcp
VOLUME /opt

# 需要遵守 wheel 文件名规范
COPY --from=wheel-builder /biliup/target/wheels/* /tmp/

RUN set -eux; \
	
	whl=$(ls /tmp/biliup*.whl); \
	pip3 install --no-cache-dir "$whl"; \
	# pip3 install --no-cache-dir "$whl[quickjs]"; \
	pip3 cache purge; \
	rm -rf /tmp/*;

RUN set -eux; \
	 savedAptMark="$(apt-mark showmanual)"; \
	apt-get update; \
	apt-get install -y --no-install-recommends \
		ffmpeg \
		wget \
		curl \
		xz-utils \
		g++ \
	; \
	apt-mark auto '.*' > /dev/null; \
	apt-mark manual curl wget; \
	# Install quickjs for Python bindings
	pip3 install --no-cache-dir quickjs; \
	# Clean up \
	[ -z "$savedAptMark" ] || apt-mark manual $savedAptMark; \
	apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \
	rm -rf \
		/tmp/* \
		/usr/share/doc/* \
		/var/cache/* \
		/var/lib/apt/lists/* \
		/var/tmp/* \
		/var/log/* \
	;

WORKDIR /opt

ENTRYPOINT ["biliup"]
VERIFYVerifyBuild· step #11
4m 44s
VerifyBuildaccepted
Concerns: Potential availability of the python:3.13-slim tag at build time; consider pinning to a concrete, stable minor version to ensure reproducibility., wheel-builder uses rust:latest which can lead to non-deterministic builds; consider pinning a specific Rust version for reproducible builds.
Smoke [PASS]: command -v biliup
Smoke [PASS]: biliup --help