mirror of
https://git.ryujinx.app/ryubing/ryujinx.git
synced 2026-01-11 20:10:30 +00:00
Some checks failed
Canary CI / Release for linux-arm64 (push) Has been cancelled
Canary CI / Release for linux-x64 (push) Has been cancelled
Canary CI / Release for win-x64 (push) Has been cancelled
Canary CI / Release MacOS universal (push) Has been cancelled
Canary CI / Create GitLab Release (push) Has been cancelled
(I'm tired of the GitLab randomly HTTP 500ing and causing the entire CI to fail)
251 lines
11 KiB
YAML
251 lines
11 KiB
YAML
name: Canary CI
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
inputs: {}
|
|
push:
|
|
branches: [ master ]
|
|
paths-ignore:
|
|
- '.github/**'
|
|
- 'docs/**'
|
|
- 'assets/**'
|
|
- '*.yml'
|
|
- '*.json'
|
|
- '*.config'
|
|
- '*.md'
|
|
|
|
concurrency: release
|
|
|
|
env:
|
|
POWERSHELL_TELEMETRY_OPTOUT: 1
|
|
DOTNET_CLI_TELEMETRY_OPTOUT: 1
|
|
RYUJINX_TARGET_RELEASE_CHANNEL_NAME: "canary"
|
|
RELEASE: 1
|
|
|
|
jobs:
|
|
release:
|
|
name: Release for ${{ matrix.platform.name }}
|
|
runs-on: ${{ matrix.platform.os }}
|
|
strategy:
|
|
matrix:
|
|
platform:
|
|
- { name: win-x64, os: ubuntu-latest, zip_os_name: win_x64 }
|
|
#- { name: win-arm64, os: ubuntu-latest, zip_os_name: win_arm64 }
|
|
- { name: linux-x64, os: ubuntu-latest, zip_os_name: linux_x64 }
|
|
- { name: linux-arm64, os: ubuntu-latest, zip_os_name: linux_arm64 }
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- uses: actions/setup-dotnet@v4
|
|
with:
|
|
global-json-file: global.json
|
|
|
|
- name: Overwrite csc problem matcher
|
|
run: echo "::add-matcher::.github/csc.json"
|
|
|
|
- name: Install 7zip
|
|
run: |
|
|
sudo apt install -y 7zip
|
|
|
|
- name: Install gli
|
|
run: |
|
|
mkdir -p $HOME/.bin
|
|
gh release download -R GreemDev/GLI -O gli -p 'gli-linux-x64'
|
|
chmod +x gli
|
|
mv gli $HOME/.bin/
|
|
echo "$HOME/.bin" >> $GITHUB_PATH
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: Get version info
|
|
id: version_info
|
|
run: |
|
|
echo "build_version=$(gli get-next-version -c Canary -R)" >> $GITHUB_OUTPUT
|
|
echo "prev_build_version=$(gli get-current-version -c Canary -R)" >> $GITHUB_OUTPUT
|
|
echo "git_short_hash=$(git rev-parse --short "${{ github.sha }}")" >> $GITHUB_OUTPUT
|
|
shell: bash
|
|
|
|
- name: Configure for release
|
|
run: |
|
|
sed -r --in-place 's/\%\%RYUJINX_BUILD_VERSION\%\%/${{ steps.version_info.outputs.build_version }}/g;' src/Ryujinx.Common/ReleaseInformation.cs
|
|
sed -r --in-place 's/\%\%RYUJINX_BUILD_GIT_HASH\%\%/${{ steps.version_info.outputs.git_short_hash }}/g;' src/Ryujinx.Common/ReleaseInformation.cs
|
|
sed -r --in-place 's/\%\%RYUJINX_TARGET_RELEASE_CHANNEL_NAME\%\%/${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_NAME }}/g;' src/Ryujinx.Common/ReleaseInformation.cs
|
|
sed -r --in-place 's/\%\%RYUJINX_CONFIG_FILE_NAME\%\%/Config\.json/g;' src/Ryujinx.Common/ReleaseInformation.cs
|
|
sed -r --in-place '/^Name=Ryujinx$/s/Name=Ryujinx/Name=Ryujinx-Canary/' distribution/linux/Ryujinx.desktop
|
|
shell: bash
|
|
|
|
- name: Create output dir
|
|
run: "mkdir release_output"
|
|
|
|
- name: Publish
|
|
run: |
|
|
dotnet publish -c Release -r "${{ matrix.platform.name }}" -o ./publish -p:Version="${{ steps.version_info.outputs.build_version }}" -p:SourceRevisionId="${{ steps.version_info.outputs.git_short_hash }}" -p:DebugType=embedded src/Ryujinx --self-contained
|
|
|
|
- name: Packing Windows builds
|
|
if: contains(matrix.platform.name, 'win')
|
|
run: |
|
|
pushd publish
|
|
rm libarmeilleure-jitsupport.dylib
|
|
7z a ../release_output/ryujinx-canary-${{ steps.version_info.outputs.build_version }}-${{ matrix.platform.zip_os_name }}.zip ../publish
|
|
popd
|
|
|
|
gli upload-generic-package -T ${{ secrets.GITLAB_TOKEN }} -P ryubing/canary -n Ryubing-Canary -v ${{ steps.version_info.outputs.build_version }} -r 5 -p release_output/ryujinx-canary-${{ steps.version_info.outputs.build_version }}-${{ matrix.platform.zip_os_name }}.zip
|
|
shell: bash
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: Packing Linux builds
|
|
if: contains(matrix.platform.name, 'linux')
|
|
run: |
|
|
pushd publish
|
|
rm libarmeilleure-jitsupport.dylib
|
|
chmod +x Ryujinx.sh Ryujinx
|
|
tar -czvf ../release_output/ryujinx-canary-${{ steps.version_info.outputs.build_version }}-${{ matrix.platform.zip_os_name }}.tar.gz ../publish
|
|
popd
|
|
|
|
gli upload-generic-package -T ${{ secrets.GITLAB_TOKEN }} -P ryubing/canary -n Ryubing-Canary -v ${{ steps.version_info.outputs.build_version }} -r 5 -p release_output/ryujinx-canary-${{ steps.version_info.outputs.build_version }}-${{ matrix.platform.zip_os_name }}.tar.gz
|
|
shell: bash
|
|
|
|
- name: Build AppImage (Linux)
|
|
if: contains(matrix.platform.name, 'linux')
|
|
run: |
|
|
BUILD_VERSION="${{ steps.version_info.outputs.build_version }}"
|
|
PLATFORM_NAME="${{ matrix.platform.name }}"
|
|
|
|
sudo apt install -y zsync desktop-file-utils appstream
|
|
|
|
mkdir -p tools
|
|
export PATH="$PATH:$(readlink -f tools)"
|
|
|
|
# Setup appimagetool
|
|
wget -q -O tools/appimagetool "https://github.com/AppImage/appimagetool/releases/download/continuous/appimagetool-x86_64.AppImage"
|
|
chmod +x tools/appimagetool
|
|
chmod +x distribution/linux/appimage/build-appimage.sh
|
|
|
|
# Explicitly set $ARCH for appimagetool ($ARCH_NAME is for the file name)
|
|
if [ "$PLATFORM_NAME" = "linux-x64" ]; then
|
|
ARCH_NAME=x64
|
|
export ARCH=x86_64
|
|
elif [ "$PLATFORM_NAME" = "linux-arm64" ]; then
|
|
ARCH_NAME=arm64
|
|
export ARCH=aarch64
|
|
else
|
|
echo "Unexpected PLATFORM_NAME "$PLATFORM_NAME""
|
|
exit 1
|
|
fi
|
|
|
|
BUILDDIR=publish OUTDIR=publish_appimage distribution/linux/appimage/build-appimage.sh
|
|
|
|
pushd publish_appimage
|
|
mv Ryujinx.AppImage ../release_output/ryujinx-canary-$BUILD_VERSION-$ARCH_NAME.AppImage
|
|
popd
|
|
|
|
gli upload-generic-package -T ${{ secrets.GITLAB_TOKEN }} -P ryubing/canary -n Ryubing-Canary -v ${{ steps.version_info.outputs.build_version }} -r 5 -p release_output/ryujinx-canary-$BUILD_VERSION-$ARCH_NAME.AppImage
|
|
shell: bash
|
|
|
|
macos_release:
|
|
name: Release MacOS universal
|
|
runs-on: ubuntu-24.04
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- uses: actions/setup-dotnet@v4
|
|
with:
|
|
global-json-file: global.json
|
|
|
|
- name: Setup LLVM 17
|
|
run: |
|
|
wget https://apt.llvm.org/llvm.sh
|
|
chmod +x llvm.sh
|
|
sudo ./llvm.sh 17
|
|
|
|
- name: Install gli
|
|
run: |
|
|
mkdir -p $HOME/.bin
|
|
gh release download -R GreemDev/GLI -O gli -p 'gli-linux-x64'
|
|
chmod +x gli
|
|
mv gli $HOME/.bin/
|
|
echo "$HOME/.bin" >> $GITHUB_PATH
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: Install rcodesign
|
|
run: |
|
|
mkdir -p $HOME/.bin
|
|
gh release download -R indygreg/apple-platform-rs -O apple-codesign.tar.gz -p 'apple-codesign-*-x86_64-unknown-linux-musl.tar.gz'
|
|
tar -xzvf apple-codesign.tar.gz --wildcards '*/rcodesign' --strip-components=1
|
|
rm apple-codesign.tar.gz
|
|
mv rcodesign $HOME/.bin/
|
|
echo "$HOME/.bin" >> $GITHUB_PATH
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: Get version info
|
|
id: version_info
|
|
run: |
|
|
echo "build_version=$(gli get-next-version -c Canary -R)" >> $GITHUB_OUTPUT
|
|
echo "prev_build_version=$(gli get-current-version -c Canary -R)" >> $GITHUB_OUTPUT
|
|
echo "git_short_hash=$(git rev-parse --short "${{ github.sha }}")" >> $GITHUB_OUTPUT
|
|
shell: bash
|
|
|
|
- name: Configure for release
|
|
run: |
|
|
sed -r --in-place 's/\%\%RYUJINX_BUILD_VERSION\%\%/${{ steps.version_info.outputs.build_version }}/g;' src/Ryujinx.Common/ReleaseInformation.cs
|
|
sed -r --in-place 's/\%\%RYUJINX_BUILD_GIT_HASH\%\%/${{ steps.version_info.outputs.git_short_hash }}/g;' src/Ryujinx.Common/ReleaseInformation.cs
|
|
sed -r --in-place 's/\%\%RYUJINX_TARGET_RELEASE_CHANNEL_NAME\%\%/${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_NAME }}/g;' src/Ryujinx.Common/ReleaseInformation.cs
|
|
sed -r --in-place 's/\%\%RYUJINX_TARGET_RELEASE_CHANNEL_OWNER\%\%/${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_OWNER }}/g;' src/Ryujinx.Common/ReleaseInformation.cs
|
|
sed -r --in-place 's/\%\%RYUJINX_TARGET_RELEASE_CHANNEL_REPO\%\%/${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_REPO }}/g;' src/Ryujinx.Common/ReleaseInformation.cs
|
|
sed -r --in-place 's/\%\%RYUJINX_CONFIG_FILE_NAME\%\%/Config\.json/g;' src/Ryujinx.Common/ReleaseInformation.cs
|
|
shell: bash
|
|
|
|
- name: Publish macOS Ryujinx
|
|
run: |
|
|
./distribution/macos/create_macos_build_ava.sh . publish_tmp_ava publish_ava ./distribution/macos/entitlements.xml "${{ steps.version_info.outputs.build_version }}" "${{ steps.version_info.outputs.git_short_hash }}" Release 1
|
|
gli upload-generic-package -T ${{ secrets.GITLAB_TOKEN }} -P ryubing/canary -n Ryubing-Canary -v ${{ steps.version_info.outputs.build_version }} -r 5 -p publish_ava/ryujinx-canary-${{ steps.version_info.outputs.build_version }}-macos_universal.app.tar.gz
|
|
|
|
create_gitlab_release:
|
|
name: Create GitLab Release
|
|
runs-on: ubuntu-24.04
|
|
needs:
|
|
- macos_release
|
|
- release
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Install gli
|
|
run: |
|
|
mkdir -p $HOME/.bin
|
|
gh release download -R GreemDev/GLI -O gli -p 'gli-linux-x64'
|
|
chmod +x gli
|
|
mv gli $HOME/.bin/
|
|
echo "$HOME/.bin" >> $GITHUB_PATH
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: Get version info
|
|
id: version_info
|
|
run: |
|
|
echo "build_version=$(gli get-next-version -c Canary -R)" >> $GITHUB_OUTPUT
|
|
echo "prev_build_version=$(gli get-current-version -c Canary -R)" >> $GITHUB_OUTPUT
|
|
echo "git_short_hash=$(git rev-parse --short "${{ github.sha }}")" >> $GITHUB_OUTPUT
|
|
shell: bash
|
|
|
|
- name: Create tag
|
|
run: |
|
|
gli create-tag -T ${{ secrets.GITLAB_TOKEN }} -P ryubing/ryujinx -n Canary-${{ steps.version_info.outputs.build_version }} -r ${{ steps.version_info.outputs.git_short_hash }}
|
|
|
|
- name: Create release
|
|
run: |
|
|
gli create-release-from-generic-package-files -T ${{ secrets.GITLAB_TOKEN }} -P ryubing/canary -n Ryubing-Canary -v ${{ steps.version_info.outputs.build_version }} -r main -t "Canary ${{ steps.version_info.outputs.build_version }}" -b "**Full Changelog:** [${{ steps.version_info.outputs.prev_build_version }}...${{ steps.version_info.outputs.build_version }}](https://git.ryujinx.app/ryubing/ryujinx/-/compare/Canary-${{ steps.version_info.outputs.prev_build_version }}...Canary-${{ steps.version_info.outputs.build_version }})"
|
|
|
|
- name: Send notification webhook
|
|
run: |
|
|
gli send-update-message -T ${{ secrets.GITLAB_TOKEN }} -P ryubing/canary -t ${{ steps.version_info.outputs.build_version }} -c FF4500 -w ${{ secrets.CANARY_DISCORD_WEBHOOK }} -i https://avatars.githubusercontent.com/u/192939710?s=200&v=4
|
|
|
|
- name: Notify update server of new builds
|
|
run: |
|
|
gli refresh-version-cache -T ${{ secrets.UPDATE_SERVER_ADMIN_TOKEN }} -c Canary
|
|
|
|
- name: Advance to the next version
|
|
run: |
|
|
gli increment-version -T ${{ secrets.UPDATE_SERVER_ADMIN_TOKEN }} -c Canary
|