Update 3rd party rulesets
Some did not build and were removed. This change also makes building much faster, as the build now caches NuGet packages and uses one stage per ruleset, so they can be built in parallel (by passing `--jobs N`).
This commit is contained in:
parent
11957cddba
commit
3ed6442b49
48
Dockerfile
48
Dockerfile
|
@ -1,3 +1,4 @@
|
||||||
|
# Builder for base osu!
|
||||||
FROM mcr.microsoft.com/dotnet/sdk:8.0 as builder
|
FROM mcr.microsoft.com/dotnet/sdk:8.0 as builder
|
||||||
|
|
||||||
ENV DOTNET_CLI_TELEMETRY_OPTOUT 1
|
ENV DOTNET_CLI_TELEMETRY_OPTOUT 1
|
||||||
|
@ -8,7 +9,7 @@ RUN apt-get update \
|
||||||
ARG OSU_VERSION
|
ARG OSU_VERSION
|
||||||
ENV OSU_VERSION=$OSU_VERSION
|
ENV OSU_VERSION=$OSU_VERSION
|
||||||
|
|
||||||
RUN echo "Downloading and building osu! ${OSU_VERSION}" >&2 \
|
RUN --mount=type=cache,target=/root/.nuget/packages --mount=type=cache,target=/root/.local/share/NuGet/http-cache echo "Downloading and building osu! ${OSU_VERSION}" >&2 \
|
||||||
&& git clone --depth=1 --single-branch -b ${OSU_VERSION} https://github.com/ppy/osu \
|
&& git clone --depth=1 --single-branch -b ${OSU_VERSION} https://github.com/ppy/osu \
|
||||||
&& cd osu \
|
&& cd osu \
|
||||||
&& dotnet publish \
|
&& dotnet publish \
|
||||||
|
@ -19,27 +20,25 @@ RUN echo "Downloading and building osu! ${OSU_VERSION}" >&2 \
|
||||||
-p:Version=${OSU_VERSION} \
|
-p:Version=${OSU_VERSION} \
|
||||||
osu.Desktop
|
osu.Desktop
|
||||||
|
|
||||||
RUN for ruleset in \
|
# Generic builder for rulesets (using onbuild and args)
|
||||||
"Bosu|https://github.com/EVAST9919/bosu" \
|
FROM mcr.microsoft.com/dotnet/sdk:8.0 as builder-ruleset-generic
|
||||||
"Hitokori|https://github.com/Flutterish/Hitokori" \
|
|
||||||
"Karaoke|https://github.com/karaoke-dev/karaoke" \
|
COPY ./build-ruleset.sh /usr/local/bin/build-ruleset
|
||||||
"Mvis|https://github.com/EVAST9919/lazer-m-vis" \
|
|
||||||
"Rush|https://github.com/swoolcock/rush" \
|
FROM builder-ruleset-generic as builder-swing
|
||||||
"Sentakki|https://github.com/LumpBloom7/sentakki" \
|
RUN --mount=type=cache,target=/root/.nuget/packages --mount=type=cache,target=/root/.local/share/NuGet/http-cache build-ruleset https://github.com/EVAST9919/lazer-swing
|
||||||
"Swing|https://github.com/EVAST9919/lazer-swing" \
|
|
||||||
"Tau|https://github.com/Altenhh/tau" \
|
FROM builder-ruleset-generic as builder-tau
|
||||||
; do \
|
RUN --mount=type=cache,target=/root/.nuget/packages --mount=type=cache,target=/root/.local/share/NuGet/http-cache build-ruleset https://github.com/Altenhh/tau
|
||||||
repo_url="$(echo $ruleset | cut -d'|' -f2)" \
|
|
||||||
&& assembly_name="osu.Game.Rulesets.$(echo $ruleset | cut -d'|' -f1)" \
|
FROM builder-ruleset-generic as builder-bosu
|
||||||
&& git clone --depth=1 "$repo_url" ruleset \
|
RUN --mount=type=cache,target=/root/.nuget/packages --mount=type=cache,target=/root/.local/share/NuGet/http-cache build-ruleset https://github.com/EVAST9919/bosu
|
||||||
&& cd ruleset \
|
|
||||||
&& dotnet build \
|
FROM builder-ruleset-generic as builder-rush
|
||||||
-c Release \
|
RUN --mount=type=cache,target=/root/.nuget/packages --mount=type=cache,target=/root/.local/share/NuGet/http-cache build-ruleset https://github.com/swoolcock/rush
|
||||||
"$assembly_name" \
|
|
||||||
&& cp "${assembly_name}"/bin/Release/net*/"${assembly_name}".dll /opt/osu/ \
|
FROM builder-ruleset-generic as builder-sentakki
|
||||||
&& cd .. \
|
RUN --mount=type=cache,target=/root/.nuget/packages --mount=type=cache,target=/root/.local/share/NuGet/http-cache build-ruleset https://github.com/LumpBloom7/sentakki
|
||||||
&& rm -rf ruleset \
|
|
||||||
; done
|
|
||||||
|
|
||||||
FROM mcr.microsoft.com/dotnet/runtime:8.0
|
FROM mcr.microsoft.com/dotnet/runtime:8.0
|
||||||
|
|
||||||
|
@ -53,6 +52,11 @@ RUN apt-get update \
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
COPY --from=builder /opt/osu/ /opt/osu/
|
COPY --from=builder /opt/osu/ /opt/osu/
|
||||||
|
COPY --from=builder-swing /dlls/*.dll /opt/osu/
|
||||||
|
COPY --from=builder-tau /dlls/*.dll /opt/osu/
|
||||||
|
COPY --from=builder-bosu /dlls/*.dll /opt/osu/
|
||||||
|
COPY --from=builder-rush /dlls/*.dll /opt/osu/
|
||||||
|
COPY --from=builder-sentakki /dlls/*.dll /opt/osu/
|
||||||
|
|
||||||
RUN adduser --disabled-password --gecos '' osu
|
RUN adduser --disabled-password --gecos '' osu
|
||||||
USER osu
|
USER osu
|
||||||
|
|
|
@ -6,9 +6,11 @@
|
||||||
|
|
||||||
Using podman/buildah:
|
Using podman/buildah:
|
||||||
|
|
||||||
buildah build --format docker --layers -t osu --build-arg OSU_VERSION=2024.412.1
|
buildah build --format docker --layers -t osu --build-arg OSU_VERSION=2024.412.1 --jobs 0
|
||||||
|
|
||||||
Change `2024.412.1` to the newest osu! version.
|
Change `2024.412.1` to the newest osu! version.
|
||||||
|
By changing `--jobs 0` to a positive integer N,
|
||||||
|
at most N build stages will be run in parallel.
|
||||||
|
|
||||||
### Running
|
### Running
|
||||||
|
|
||||||
|
|
18
build-ruleset.sh
Executable file
18
build-ruleset.sh
Executable file
|
@ -0,0 +1,18 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
RULESET_URL="$1"
|
||||||
|
|
||||||
|
git clone --depth=1 "${RULESET_URL}" ruleset
|
||||||
|
pushd ruleset
|
||||||
|
ASSEMBLY_NAME="$(basename "$(find . -iname '*.sln' -printf '%f\n' | head -n1)" .sln)"
|
||||||
|
dotnet build -c Release ${ASSEMBLY_NAME}
|
||||||
|
case "${ASSEMBLY_NAME}" in
|
||||||
|
# special build steps can be put here
|
||||||
|
*)
|
||||||
|
mkdir /dlls
|
||||||
|
mv ${ASSEMBLY_NAME}/bin/Release/net*/${ASSEMBLY_NAME}.dll /dlls/
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
popd
|
||||||
|
rm -rf ruleset
|
Loading…
Reference in a new issue