Saradomin-Launcher/.gitlab-ci.yml

159 lines
6.2 KiB
YAML

variables:
COMMON_FLAGS: -p:PublishTrimmed=false -p:PublishReadyToRun=true -p:PublishSingleFile=true -p:IncludeNativeLibrariesForSelfExtract=true
PUBLISH_DIR_WIN64: bin/Release/net6.0/win-x64/publish
PUBLISH_DIR_LINUXARM64: bin/Release/net6.0/linux-arm64/publish
PUBLISH_DIR_LINUX64: bin/Release/net6.0/linux-x64/publish
PUBLISH_DIR_OSX: bin/Release/net6.0/osx-x64/publish
ARTIFACT_DIR: Saradomin
GIT_SUBMODULE_STRATEGY: recursive
OUTPUT_FILE_PREFIX: 2009scape-launcher
stages:
- build_all
- pack_linux_no_rt
- pack_linux_sc
- pack_linux_arm_no_rt
- pack_linux_arm_sc
- pack_windows_no_rt
- pack_windows_sc
- pack_macos_sc
build_all:
image: mcr.microsoft.com/dotnet/sdk:6.0
stage: build_all
script:
- dotnet restore
- cd Saradomin
- pwd
- dotnet publish --runtime linux-x64 --no-self-contained -c Release $COMMON_FLAGS
- mv -v $PUBLISH_DIR_LINUX64/Saradomin ./$OUTPUT_FILE_PREFIX-no_rt
- dotnet publish --runtime linux-x64 --self-contained -c Release $COMMON_FLAGS
- mv -v $PUBLISH_DIR_LINUX64/Saradomin ./$OUTPUT_FILE_PREFIX-sc
- dotnet publish --runtime linux-arm64 --no-self-contained -c Release $COMMON_FLAGS
- mv -v $PUBLISH_DIR_LINUXARM64/Saradomin ./$OUTPUT_FILE_PREFIX-arm-no_rt
- dotnet publish --runtime linux-arm64 --self-contained -c Release $COMMON_FLAGS
- mv -v $PUBLISH_DIR_LINUXARM64/Saradomin ./$OUTPUT_FILE_PREFIX-arm-sc
- dotnet publish --runtime win-x64 --no-self-contained -c Release $COMMON_FLAGS
- mv -v $PUBLISH_DIR_WIN64/Saradomin.exe ./$OUTPUT_FILE_PREFIX-no_rt.exe
- dotnet publish --runtime win-x64 --self-contained -c Release $COMMON_FLAGS
- mv -v $PUBLISH_DIR_WIN64/Saradomin.exe ./$OUTPUT_FILE_PREFIX-sc.exe
- dotnet publish --runtime osx-x64 --self-contained -c Release -p:IncludeAllContentForSelfExtract=true $COMMON_FLAGS
- mv -v $PUBLISH_DIR_OSX/Saradomin ./$OUTPUT_FILE_PREFIX-osx-sc
artifacts:
name: "Combined artifacts"
untracked: true
paths:
- $ARTIFACT_DIR/$OUTPUT_FILE_PREFIX-no_rt
- $ARTIFACT_DIR/$OUTPUT_FILE_PREFIX-sc
- $ARTIFACT_DIR/$OUTPUT_FILE_PREFIX-arm-no_rt
- $ARTIFACT_DIR/$OUTPUT_FILE_PREFIX-arm-sc
- $ARTIFACT_DIR/$OUTPUT_FILE_PREFIX-no_rt.exe
- $ARTIFACT_DIR/$OUTPUT_FILE_PREFIX-sc.exe
- $ARTIFACT_DIR/$OUTPUT_FILE_PREFIX-osx-sc
expire_in: 1 week
pack_linux_no_rt:
stage: pack_linux_no_rt
dependencies:
- build_all
script:
- echo "Packing no-runtime build for Linux x64..."
artifacts:
name: "Linux x64 (no embedded runtime)"
paths:
- $ARTIFACT_DIR/$OUTPUT_FILE_PREFIX-no_rt
expire_in: 1 week
pack_linux_sc:
stage: pack_linux_sc
dependencies:
- build_all
script:
- echo "Packing self-contained build for Linux x64..."
artifacts:
name: "Linux x64 (self-contained)"
paths:
- $ARTIFACT_DIR/$OUTPUT_FILE_PREFIX-sc
expire_in: 1 week
pack_linux_arm_no_rt:
stage: pack_linux_arm_no_rt
dependencies:
- build_all
script:
- echo "Packing no-runtime build for Linux arm64..."
artifacts:
name: "Linux arm64 (no embedded runtime)"
paths:
- $ARTIFACT_DIR/$OUTPUT_FILE_PREFIX-arm-no_rt
expire_in: 1 week
pack_linux_arm_sc:
stage: pack_linux_arm_sc
dependencies:
- build_all
script:
- echo "Packing self-contained build for Linux arm64..."
artifacts:
name: "Linux arm64 (self-contained)"
paths:
- $ARTIFACT_DIR/$OUTPUT_FILE_PREFIX-arm-sc
expire_in: 1 week
pack_macos_sc:
stage: pack_macos_sc
dependencies:
- build_all
script:
- echo "Packing self-contained build for macOS x64..."
- mkdir -p $OUTPUT_FILE_PREFIX-osx-sc.app/Contents/MacOS
- mkdir -p $OUTPUT_FILE_PREFIX-osx-sc.app/Contents/Resources
- cp Saradomin/Resources/Icons/saradomin.icns $OUTPUT_FILE_PREFIX-osx-sc.app/Contents/Resources/
- cp $ARTIFACT_DIR/$OUTPUT_FILE_PREFIX-osx-sc $OUTPUT_FILE_PREFIX-osx-sc.app/Contents/MacOS/
- chmod +x $OUTPUT_FILE_PREFIX-osx-sc.app/Contents/MacOS/$OUTPUT_FILE_PREFIX-osx-sc
# Create the Info.plist file
- echo '<?xml version="1.0" encoding="UTF-8"?>' > $OUTPUT_FILE_PREFIX-osx-sc.app/Contents/Info.plist
- echo '<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">' >> $OUTPUT_FILE_PREFIX-osx-sc.app/Contents/Info.plist
- echo '<plist version="1.0">' >> $OUTPUT_FILE_PREFIX-osx-sc.app/Contents/Info.plist
- echo '<dict>' >> $OUTPUT_FILE_PREFIX-osx-sc.app/Contents/Info.plist
- echo ' <key>CFBundleExecutable</key>' >> $OUTPUT_FILE_PREFIX-osx-sc.app/Contents/Info.plist
- echo " <string>$OUTPUT_FILE_PREFIX-osx-sc</string>" >> $OUTPUT_FILE_PREFIX-osx-sc.app/Contents/Info.plist
- echo ' <key>CFBundleIconFile</key>' >> $OUTPUT_FILE_PREFIX-osx-sc.app/Contents/Info.plist
- echo ' <string>saradomin.icns</string>' >> $OUTPUT_FILE_PREFIX-osx-sc.app/Contents/Info.plist
# Add other keys and values as needed
- echo '</dict>' >> $OUTPUT_FILE_PREFIX-osx-sc.app/Contents/Info.plist
- echo '</plist>' >> $OUTPUT_FILE_PREFIX-osx-sc.app/Contents/Info.plist
artifacts:
name: "macOS x64 (self-contained)"
paths:
- $OUTPUT_FILE_PREFIX-osx-sc.app
expire_in: 1 week
pack_windows_no_rt:
stage: pack_windows_no_rt
dependencies:
- build_all
script:
- echo "Packing no-runtime build for Windows x64..."
artifacts:
name: "Windows x64 (no embedded runtime)"
paths:
- $ARTIFACT_DIR/$OUTPUT_FILE_PREFIX-no_rt.exe
expire_in: 1 week
pack_windows_sc:
stage: pack_windows_sc
dependencies:
- build_all
script:
- echo "Packing self-contained build for Windows x64..."
artifacts:
name: "Windows x64 (self-contained)"
paths:
- $ARTIFACT_DIR/$OUTPUT_FILE_PREFIX-sc.exe
expire_in: 1 week