mirror of
https://github.com/ryujinx-mirror/ryujinx.git
synced 2024-12-18 11:05:53 +01:00
448666fd06
* Also updated this behavior in the updater module.. WHY wasn't this done before? No clue. This was setup very interestingly.
218 lines
9.3 KiB
YAML
218 lines
9.3 KiB
YAML
name: Release job
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
inputs: {}
|
|
#push:
|
|
# branches: [ mirror/release ]
|
|
# paths-ignore:
|
|
# - '.github/**'
|
|
# - '*.yml'
|
|
# - '*.json'
|
|
# - '*.config'
|
|
# - '*.md'
|
|
|
|
concurrency: release
|
|
|
|
env:
|
|
POWERSHELL_TELEMETRY_OPTOUT: 1
|
|
DOTNET_CLI_TELEMETRY_OPTOUT: 1
|
|
#RYUJINX_BASE_VERSION: "1.1" # NOTE: For now, releases for the fork will be named after Git revision hashes, this is ignored
|
|
|
|
# Should be unnecessary for us, we're releasing in-repo
|
|
#RYUJINX_TARGET_RELEASE_CHANNEL_OWNER: "ryujinx-mirror"
|
|
#RYUJINX_TARGET_RELEASE_CHANNEL_REPO: "ryujinx"
|
|
#RYUJINX_TARGET_RELEASE_CHANNEL_NAME: "mirror/master"
|
|
|
|
jobs:
|
|
tag:
|
|
name: Create tag
|
|
runs-on: ubuntu-20.04
|
|
steps:
|
|
- name: Get version info
|
|
id: version_info
|
|
run: |
|
|
echo "build_version=r.`echo ${{ github.sha }} | cut -c1-7`" >> $GITHUB_OUTPUT
|
|
shell: bash
|
|
|
|
- name: Create tag
|
|
uses: actions/github-script@v6
|
|
with:
|
|
script: |
|
|
github.rest.git.createRef({
|
|
owner: context.repo.owner,
|
|
repo: context.repo.repo,
|
|
ref: 'refs/tags/${{ steps.version_info.outputs.build_version }}',
|
|
sha: context.sha
|
|
})
|
|
|
|
- name: Create release
|
|
uses: ncipollo/release-action@v1
|
|
with:
|
|
name: ${{ steps.version_info.outputs.build_version }}
|
|
tag: ${{ steps.version_info.outputs.build_version }}
|
|
draft: "true"
|
|
omitBody: true
|
|
omitBodyDuringUpdate: true
|
|
#owner: ${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_OWNER }}
|
|
#repo: ${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_REPO }}
|
|
token: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
release:
|
|
name: Release for ${{ matrix.platform.name }}
|
|
runs-on: ${{ matrix.platform.os }}
|
|
timeout-minutes: 60
|
|
strategy:
|
|
matrix:
|
|
platform:
|
|
- { name: win-x64, os: windows-latest, zip_os_name: win_x64 }
|
|
- { 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: Get version info
|
|
id: version_info
|
|
run: |
|
|
echo "build_version=r.`echo ${{ github.sha }} | cut -c1-7`" >> $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_OWNER\%\%&${{ github.repository_owner }}&g;' src/Ryujinx.Common/ReleaseInformation.cs
|
|
sed -r --in-place 's&\%\%RYUJINX_TARGET_RELEASE_CHANNEL_REPO\%\%&${{ github.event.repository.name }}&g;' src/Ryujinx.Common/ReleaseInformation.cs
|
|
sed -r --in-place 's&\%\%RYUJINX_TARGET_RELEASE_CHANNEL_NAME\%\%&${{ github.ref_name }}&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: Create output dir
|
|
run: "mkdir release_output"
|
|
|
|
- name: Publish
|
|
run: |
|
|
dotnet publish -c Release -r "${{ matrix.platform.name }}" -o ./publish_ava -p:SourceRevisionId="${{ steps.version_info.outputs.git_short_hash }}" -p:DebugType=embedded src/Ryujinx --self-contained true
|
|
dotnet publish -c Release -r "${{ matrix.platform.name }}" -o ./publish_sdl2_headless -p:SourceRevisionId="${{ steps.version_info.outputs.git_short_hash }}" -p:DebugType=embedded src/Ryujinx.Headless.SDL2 --self-contained true
|
|
|
|
- name: Packing Windows builds
|
|
if: matrix.platform.os == 'windows-latest'
|
|
run: |
|
|
pushd publish_ava
|
|
cp Ryujinx.exe Ryujinx.Ava.exe
|
|
7z a ../release_output/ryujinx-${{ steps.version_info.outputs.build_version }}-${{ matrix.platform.zip_os_name }}.zip *
|
|
7z a ../release_output/test-ava-ryujinx-${{ steps.version_info.outputs.build_version }}-${{ matrix.platform.zip_os_name }}.zip *
|
|
popd
|
|
|
|
pushd publish_sdl2_headless
|
|
7z a ../release_output/sdl2-ryujinx-headless-${{ steps.version_info.outputs.build_version }}-${{ matrix.platform.zip_os_name }}.zip *
|
|
popd
|
|
shell: bash
|
|
|
|
- name: Packing Linux builds
|
|
if: matrix.platform.os == 'ubuntu-latest'
|
|
run: |
|
|
pushd publish_ava
|
|
cp Ryujinx Ryujinx.Ava
|
|
chmod +x Ryujinx.sh Ryujinx Ryujinx.Ava
|
|
tar -czvf ../release_output/ryujinx-${{ steps.version_info.outputs.build_version }}-${{ matrix.platform.zip_os_name }}.tar.gz *
|
|
tar -czvf ../release_output/test-ava-ryujinx-${{ steps.version_info.outputs.build_version }}-${{ matrix.platform.zip_os_name }}.tar.gz *
|
|
popd
|
|
|
|
pushd publish_sdl2_headless
|
|
chmod +x Ryujinx.sh Ryujinx.Headless.SDL2
|
|
tar -czvf ../release_output/sdl2-ryujinx-headless-${{ steps.version_info.outputs.build_version }}-${{ matrix.platform.zip_os_name }}.tar.gz *
|
|
popd
|
|
shell: bash
|
|
|
|
- name: Pushing new release
|
|
uses: ncipollo/release-action@v1
|
|
with:
|
|
name: ${{ steps.version_info.outputs.build_version }}
|
|
artifacts: "release_output/*.tar.gz,release_output/*.zip"
|
|
tag: ${{ steps.version_info.outputs.build_version }}
|
|
draft: "true"
|
|
omitBody: true
|
|
omitBodyDuringUpdate: true
|
|
allowUpdates: true
|
|
replacesArtifacts: true
|
|
#owner: ${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_OWNER }}
|
|
#repo: ${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_REPO }}
|
|
token: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
macos_release:
|
|
name: Release MacOS universal
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 60
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- uses: actions/setup-dotnet@v4
|
|
with:
|
|
global-json-file: global.json
|
|
|
|
- name: Setup LLVM 15
|
|
run: |
|
|
wget https://apt.llvm.org/llvm.sh
|
|
chmod +x llvm.sh
|
|
sudo ./llvm.sh 15
|
|
|
|
- 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=r.`echo ${{ github.sha }} | cut -c1-7`" >> $GITHUB_OUTPUT
|
|
echo "git_short_hash=$(git rev-parse --short "${{ github.sha }}")" >> $GITHUB_OUTPUT
|
|
|
|
- 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_OWNER\%\%&${{ github.repository_owner }}&g;' src/Ryujinx.Common/ReleaseInformation.cs
|
|
sed -r --in-place 's&\%\%RYUJINX_TARGET_RELEASE_CHANNEL_REPO\%\%&${{ github.event.repository.name }}&g;' src/Ryujinx.Common/ReleaseInformation.cs
|
|
sed -r --in-place 's&\%\%RYUJINX_TARGET_RELEASE_CHANNEL_NAME\%\%&${{ github.ref_name }}&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
|
|
|
|
- name: Publish macOS Ryujinx.Headless.SDL2
|
|
run: |
|
|
./distribution/macos/create_macos_build_headless.sh . publish_tmp_headless publish_headless ./distribution/macos/entitlements.xml "${{ steps.version_info.outputs.build_version }}" "${{ steps.version_info.outputs.git_short_hash }}" Release
|
|
|
|
- name: Pushing new release
|
|
uses: ncipollo/release-action@v1
|
|
with:
|
|
name: ${{ steps.version_info.outputs.build_version }}
|
|
artifacts: "publish_ava/*.tar.gz, publish_headless/*.tar.gz"
|
|
tag: ${{ steps.version_info.outputs.build_version }}
|
|
draft: "false"
|
|
makeLatest: "true"
|
|
omitBody: true
|
|
omitBodyDuringUpdate: true
|
|
allowUpdates: true
|
|
replacesArtifacts: true
|
|
#owner: ${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_OWNER }}
|
|
#repo: ${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_REPO }}
|
|
token: ${{ secrets.GITHUB_TOKEN }}
|