From 744c41937b3f69eb1b284875366459d26b7c4c44 Mon Sep 17 00:00:00 2001 From: GreemDev Date: Sat, 11 Apr 2026 18:10:31 -0500 Subject: [PATCH] feature: Forgejo Actions --- {.github => .forgejo}/csc.json | 0 {.github => .forgejo}/labeler.yml | 2 +- {.github => .forgejo}/reviewers.yml | 0 .forgejo/workflows/build.yml | 197 ++++++++++++++++++ {.github => .forgejo}/workflows/canary.yml | 152 +++++++------- {.github => .forgejo}/workflows/pr_triage.yml | 7 +- {.github => .forgejo}/workflows/release.yml | 138 ++++++------ .../workflows/unused}/nightly_pr_comment.yml | 0 .github/ISSUE_TEMPLATE/bug_report.yml | 86 -------- .github/ISSUE_TEMPLATE/config.yml | 5 - .github/ISSUE_TEMPLATE/feature_request.yml | 31 --- .../missing_cpu_instruction.yml | 26 --- .../ISSUE_TEMPLATE/missing_service_call.yml | 25 --- .../missing_shader_instruction.yml | 19 -- .github/workflows/build.yml | 168 --------------- .github/workflows/checks.yml | 25 --- 16 files changed, 338 insertions(+), 543 deletions(-) rename {.github => .forgejo}/csc.json (100%) rename {.github => .forgejo}/labeler.yml (90%) rename {.github => .forgejo}/reviewers.yml (100%) create mode 100644 .forgejo/workflows/build.yml rename {.github => .forgejo}/workflows/canary.yml (59%) rename {.github => .forgejo}/workflows/pr_triage.yml (83%) rename {.github => .forgejo}/workflows/release.yml (61%) rename {.github/workflows => .forgejo/workflows/unused}/nightly_pr_comment.yml (100%) delete mode 100644 .github/ISSUE_TEMPLATE/bug_report.yml delete mode 100644 .github/ISSUE_TEMPLATE/config.yml delete mode 100644 .github/ISSUE_TEMPLATE/feature_request.yml delete mode 100644 .github/ISSUE_TEMPLATE/missing_cpu_instruction.yml delete mode 100644 .github/ISSUE_TEMPLATE/missing_service_call.yml delete mode 100644 .github/ISSUE_TEMPLATE/missing_shader_instruction.yml delete mode 100644 .github/workflows/build.yml delete mode 100644 .github/workflows/checks.yml diff --git a/.github/csc.json b/.forgejo/csc.json similarity index 100% rename from .github/csc.json rename to .forgejo/csc.json diff --git a/.github/labeler.yml b/.forgejo/labeler.yml similarity index 90% rename from .github/labeler.yml rename to .forgejo/labeler.yml index b80dbb1fb..3fe991a18 100644 --- a/.github/labeler.yml +++ b/.forgejo/labeler.yml @@ -36,7 +36,7 @@ kernel: infra: - changed-files: - - any-glob-to-any-file: ['.github/**', 'distribution/**', 'Directory.Packages.props', 'src/Ryujinx.BuildValidationTasks/**'] + - any-glob-to-any-file: ['.forgejo/**', 'distribution/**', 'Directory.Packages.props', 'src/Ryujinx.BuildValidationTasks/**'] documentation: - changed-files: diff --git a/.github/reviewers.yml b/.forgejo/reviewers.yml similarity index 100% rename from .github/reviewers.yml rename to .forgejo/reviewers.yml diff --git a/.forgejo/workflows/build.yml b/.forgejo/workflows/build.yml new file mode 100644 index 000000000..3a23f2ae8 --- /dev/null +++ b/.forgejo/workflows/build.yml @@ -0,0 +1,197 @@ +name: Build PR + +on: + pull_request: + branches: [ master ] + paths: + - '**' + - '!.forgejo/**' + - '!*.yml' + - '!*.config' + - '!*.md' + - '.forgejo/workflows/*.yml' + +env: + POWERSHELL_TELEMETRY_OPTOUT: 1 + DOTNET_CLI_TELEMETRY_OPTOUT: 1 + RELEASE: 0 + +jobs: + build: + name: ${{ matrix.platform.name }} (${{ matrix.configuration }}) + runs-on: docker + container: + image: ghcr.io/catthehacker/ubuntu:act-latest + timeout-minutes: 45 + strategy: + matrix: + configuration: [Release] + platform: + - { name: win-x64, zip_os_name: win_x64 } + #- { name: win-arm64, zip_os_name: win_arm64 } + - { name: linux-x64, zip_os_name: linux_x64 } + - { name: linux-arm64, zip_os_name: linux_arm64 } + #- { name: osx-x64, zip_os_name: osx_x64 } + + fail-fast: false + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-dotnet@v4 + with: + global-json-file: global.json + + - name: Install GLI + uses: actions/setup-gli@v1 + with: + token: ${{ secrets.SETUP_GLI_TOKEN }} + + - name: Overwrite csc problem matcher + run: echo "::add-matcher::.forgejo/csc.json" + + - name: Get version info + id: version_info + run: | + echo "result=$(gli get-next-version -c Stable -R)" >> $FORGEJO_OUTPUT + echo "git_short_hash=$(git rev-parse --short "${{ forgejo.sha }}")" >> $FORGEJO_OUTPUT + shell: bash + + - name: Change config filename + run: sed -r --in-place 's/\%\%RYUJINX_CONFIG_FILE_NAME\%\%/PRConfig\.json/g;' src/Ryujinx.Common/ReleaseInformation.cs + shell: bash + if: forgejo.event_name == 'pull_request' + + - name: 'Cache: ~/.nuget/packages' + uses: actions/cache@v5 + with: + path: | + ~/.nuget/packages + key: ${{ runner.os }}-${{ hashFiles('**/global.json', '**/*.csproj', '**/Directory.Packages.props') }} + + - name: Build + run: dotnet build -c "${{ matrix.configuration }}" -p:Version="${{ steps.version_info.outputs.result }}" -p:SourceRevisionId="${{ steps.version_info.outputs.git_short_hash }}" -p:ExtraDefineConstants=DISABLE_UPDATER + + - name: Test + uses: actions/unstable-commands@v1 + with: + commands: dotnet test --no-build -c "${{ matrix.configuration }}" + timeout-minutes: 10 + retry-codes: 139 + if: matrix.platform.name != 'linux-arm64' + + - name: Publish Ryujinx + run: dotnet publish -c "${{ matrix.configuration }}" -r "${{ matrix.platform.name }}" -o ./publish -p:Version="${{ steps.version_info.outputs.result }}" -p:DebugType=embedded -p:SourceRevisionId="${{ steps.version_info.outputs.git_short_hash }}" -p:ExtraDefineConstants=DISABLE_UPDATER src/Ryujinx --self-contained + if: forgejo.event_name == 'pull_request' + + - name: Set executable bit + run: | + chmod +x ./publish/Ryujinx ./publish/Ryujinx.sh + if: forgejo.event_name == 'pull_request' && contains(matrix.platform.name, 'linux') + + - name: Build AppImage + if: forgejo.event_name == 'pull_request' && contains(matrix.platform.name, 'linux') + run: | + PLATFORM_NAME="${{ matrix.platform.name }}" + + sudo apt update && sudo apt install -y zsync desktop-file-utils appstream libfuse2t64 + + 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 + shell: bash + + - name: Upload Ryujinx artifact + uses: actions/upload-artifact@v4 + with: + name: ryujinx-${{ matrix.configuration }}-${{ steps.version_info.outputs.result }}+${{ steps.version_info.outputs.git_short_hash }}-${{ matrix.platform.zip_os_name }} + path: publish + if: forgejo.event_name == 'pull_request' + + - name: Upload Ryujinx (AppImage) artifact + uses: actions/upload-artifact@v4 + if: forgejo.event_name == 'pull_request' && contains(matrix.platform.name, 'linux') + with: + name: ryujinx-${{ matrix.configuration }}-${{ steps.version_info.outputs.result }}+${{ steps.version_info.outputs.git_short_hash }}-${{ matrix.platform.zip_os_name }}-AppImage + path: publish_appimage + + build_macos: + name: macOS Universal (${{ matrix.configuration }}) + runs-on: ubuntu-latest + timeout-minutes: 45 + strategy: + matrix: + configuration: [ Release ] + + 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 + uses: actions/setup-gli@v1 + with: + token: ${{ secrets.SETUP_GLI_TOKEN }} + + - name: Install rcodesign + run: | + gli ghr -R indygreg/apple-platform-rs -p apple-codesign-*-x86_64-unknown-linux-musl.tar.gz -O apple-codesign.tar.gz + tar -xzvf apple-codesign.tar.gz --wildcards '*/rcodesign' --strip-components=1 + rm apple-codesign.tar.gz + sudo mv rcodesign /usr/bin/rcodesign + + - name: Get version info + id: version_info + run: | + echo "result=$(gli get-next-version -c Stable -R)" >> $FORGEJO_OUTPUT + echo "git_short_hash=$(git rev-parse --short "${{ forgejo.sha }}")" >> $FORGEJO_OUTPUT + shell: bash + + - name: Change config filename + run: sed -r --in-place 's/\%\%RYUJINX_CONFIG_FILE_NAME\%\%/PRConfig\.json/g;' src/Ryujinx.Common/ReleaseInformation.cs + shell: bash + if: forgejo.event_name == 'pull_request' + + - name: 'Cache: ~/.nuget/packages' + uses: actions/cache@v5 + with: + path: | + ~/.nuget/packages + key: ${{ runner.os }}-${{ hashFiles('**/global.json', '**/*.csproj', '**/Directory.Packages.props') }} + + - name: Publish macOS Ryujinx + run: | + bash distribution/macos/create_macos_pr_build_ava.sh . publish_tmp publish ./distribution/macos/entitlements.xml "${{ steps.version_info.outputs.result }}" "${{ steps.version_info.outputs.git_short_hash }}" "${{ matrix.configuration }}" "-p:ExtraDefineConstants=DISABLE_UPDATER" + shell: bash + + - name: Upload Ryujinx artifact + uses: actions/upload-artifact@v4 + with: + name: ryujinx-${{ matrix.configuration }}-${{ steps.version_info.outputs.result }}+${{ steps.version_info.outputs.git_short_hash }}-macos_universal + path: "publish/*.tar.gz" + if: forgejo.event_name == 'pull_request' diff --git a/.github/workflows/canary.yml b/.forgejo/workflows/canary.yml similarity index 59% rename from .github/workflows/canary.yml rename to .forgejo/workflows/canary.yml index b631b48a2..f602696a3 100644 --- a/.github/workflows/canary.yml +++ b/.forgejo/workflows/canary.yml @@ -6,7 +6,7 @@ on: push: branches: [ master ] paths-ignore: - - '.github/**' + - '.forgejo/**' - 'docs/**' - 'assets/**' - '*.yml' @@ -25,45 +25,42 @@ env: jobs: release: name: Release for ${{ matrix.platform.name }} - runs-on: ${{ matrix.platform.os }} + runs-on: docker + container: + image: ${{ 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 } + - { name: win-x64, os: ghcr.io/catthehacker/ubuntu:act-latest, zip_os_name: win_x64 } + #- { name: win-arm64, os: ghcr.io/catthehacker/ubuntu:act-latest, zip_os_name: win_arm64 } + - { name: linux-x64, os: ghcr.io/catthehacker/ubuntu:act-latest, zip_os_name: linux_x64 } + - { name: linux-arm64, os: ghcr.io/catthehacker/ubuntu:act-latest, zip_os_name: linux_arm64 } steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - - uses: actions/setup-dotnet@v4 + - uses: actions/setup-dotnet@v5 with: global-json-file: global.json - name: Overwrite csc problem matcher - run: echo "::add-matcher::.github/csc.json" + run: echo "::add-matcher::.forgejo/csc.json" + + - name: Install GLI + uses: actions/setup-gli@v1 + with: + token: ${{ secrets.SETUP_GLI_TOKEN }} - 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' 2.0.31 - chmod +x gli - mv gli $HOME/.bin/ - echo "$HOME/.bin" >> $GITHUB_PATH - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + sudo apt update && sudo apt install -y 7zip - 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 + echo "build_version=$(gli get-next-version -c Canary -R)" >> $FORGEJO_OUTPUT + echo "prev_build_version=$(gli get-current-version -c Canary -R)" >> $FORGEJO_OUTPUT + echo "git_short_hash=$(git rev-parse --short "${{ forgejo.sha }}")" >> $FORGEJO_OUTPUT + shell: bash - name: Configure for release run: | @@ -88,11 +85,7 @@ jobs: 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') @@ -102,8 +95,6 @@ jobs: 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) @@ -112,7 +103,7 @@ jobs: BUILD_VERSION="${{ steps.version_info.outputs.build_version }}" PLATFORM_NAME="${{ matrix.platform.name }}" - sudo apt install -y zsync desktop-file-utils appstream + sudo apt update && sudo apt install -y zsync desktop-file-utils appstream libfuse2t64 mkdir -p tools export PATH="$PATH:$(readlink -f tools)" @@ -139,17 +130,27 @@ jobs: 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 + - name: Create release + uses: actions/create-release@v1 + with: + name: "Canary ${{ steps.version_info.outputs.build_version }}" + repository: "Ryubing/canary-test" + token: ${{ secrets.RELEASER_TOKEN }} + tag_name: ${{ steps.version_info.outputs.build_version }} + files: |- + release_output/** + macos_release: name: Release MacOS universal - runs-on: ubuntu-24.04 + runs-on: docker + container: + image: ghcr.io/catthehacker/ubuntu:act-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - - uses: actions/setup-dotnet@v4 + - uses: actions/setup-dotnet@v5 with: global-json-file: global.json @@ -159,33 +160,24 @@ jobs: 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' 2.0.30 - chmod +x gli - mv gli $HOME/.bin/ - echo "$HOME/.bin" >> $GITHUB_PATH - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - name: Install GLI + uses: actions/setup-gli@v1 + with: + token: ${{ secrets.SETUP_GLI_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' + gli ghr -R indygreg/apple-platform-rs -p apple-codesign-*-x86_64-unknown-linux-musl.tar.gz -O apple-codesign.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 }} + mv rcodesign /usr/bin/rcodesign - 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 + echo "build_version=$(gli get-next-version -c Canary -R)" >> $FORGEJO_OUTPUT + echo "prev_build_version=$(gli get-current-version -c Canary -R)" >> $FORGEJO_OUTPUT + echo "git_short_hash=$(git rev-parse --short "${{ forgejo.sha }}")" >> $FORGEJO_OUTPUT shell: bash - name: Configure for release @@ -201,46 +193,52 @@ jobs: - 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 + - name: Create release + uses: actions/create-release@v1 + with: + name: "Canary ${{ steps.version_info.outputs.build_version }}" + repository: "Ryubing/canary-test" + token: ${{ secrets.RELEASER_TOKEN }} + tag_name: ${{ steps.version_info.outputs.build_version }} + files: |- + publish_ava/ryujinx-canary-${{ steps.version_info.outputs.build_version }}-macos_universal.app.tar.gz + + post_ci: + name: Post CI Steps + runs-on: docker + container: + image: ghcr.io/catthehacker/ubuntu:act-latest 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' 2.0.30 - chmod +x gli - mv gli $HOME/.bin/ - echo "$HOME/.bin" >> $GITHUB_PATH - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - name: Install GLI + uses: actions/setup-gli@v1 + with: + token: ${{ secrets.SETUP_GLI_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 + echo "build_version=$(gli get-next-version -c Canary -R)" >> $FORGEJO_OUTPUT + echo "prev_build_version=$(gli get-current-version -c Canary -R)" >> $FORGEJO_OUTPUT + echo "git_short_hash=$(git rev-parse --short "${{ forgejo.sha }}")" >> $FORGEJO_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 }})" + gli create-tag -T ${{ secrets.RELEASER_TOKEN }} -P projects/Ryubing -n Canary-${{ steps.version_info.outputs.build_version }} -r ${{ steps.version_info.outputs.git_short_hash }} + - name: Link to actual source archives for Canary + run: | + gli canary-release -T ${{ secrets.RELEASER_TOKEN }} -P Ryubing/Canary -r ${{ 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 + gli send-update-message -T ${{ secrets.RELEASER_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: | @@ -248,4 +246,4 @@ jobs: - name: Advance to the next version run: | - gli increment-version -T ${{ secrets.UPDATE_SERVER_ADMIN_TOKEN }} -c Canary + gli increment-version -T ${{ secrets.UPDATE_SERVER_ADMIN_TOKEN }} -c Canary \ No newline at end of file diff --git a/.github/workflows/pr_triage.yml b/.forgejo/workflows/pr_triage.yml similarity index 83% rename from .github/workflows/pr_triage.yml rename to .forgejo/workflows/pr_triage.yml index 2c4936159..954615d68 100644 --- a/.github/workflows/pr_triage.yml +++ b/.forgejo/workflows/pr_triage.yml @@ -5,10 +5,6 @@ on: jobs: triage: - permissions: - contents: read - pull-requests: write - runs-on: ubuntu-latest steps: @@ -18,11 +14,12 @@ jobs: with: # Ensure we pin the source origin as pull_request_target run under forks. fetch-depth: 0 - repository: GreemDev/Ryujinx + repository: projects/Ryubing ref: master - name: Update labels based on changes uses: actions/labeler@v5 with: + configuration-path: .forgejo/labeler.yml sync-labels: true dot: true diff --git a/.github/workflows/release.yml b/.forgejo/workflows/release.yml similarity index 61% rename from .github/workflows/release.yml rename to .forgejo/workflows/release.yml index 7ebbdbe98..ed9171f3d 100644 --- a/.github/workflows/release.yml +++ b/.forgejo/workflows/release.yml @@ -19,18 +19,20 @@ env: jobs: release: name: Release for ${{ matrix.platform.name }} - runs-on: ${{ matrix.platform.os }} + runs-on: docker + container: + image: ${{ 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 } + - { name: win-x64, os: ghcr.io/catthehacker/ubuntu:act-latest, zip_os_name: win_x64 } + #- { name: win-arm64, os: ghcr.io/catthehacker/ubuntu:act-latest, zip_os_name: win_arm64 } + - { name: linux-x64, os: ghcr.io/catthehacker/ubuntu:act-latest, zip_os_name: linux_x64 } + - { name: linux-arm64, os: ghcr.io/catthehacker/ubuntu:act-latest, zip_os_name: linux_arm64 } steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - - uses: actions/setup-dotnet@v4 + - uses: actions/setup-dotnet@v5 with: global-json-file: global.json @@ -41,26 +43,21 @@ jobs: 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' 2.0.31 - chmod +x gli - mv gli $HOME/.bin/ - echo "$HOME/.bin" >> $GITHUB_PATH - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - name: Install GLI + uses: actions/setup-gli@v1 + with: + token: ${{ secrets.SETUP_GLI_TOKEN }} - name: Get version info id: version_info run: | if [ '${{ inputs.is_bugfix_release }}' == 'false' ]; then - echo "build_version=$(gli get-next-version -m -c Stable -R)" >> $GITHUB_OUTPUT + echo "build_version=$(gli get-next-version -m -c Stable -R)" >> $FORGEJO_OUTPUT else - echo "build_version=$(gli get-next-version -c Stable -R)" >> $GITHUB_OUTPUT + echo "build_version=$(gli get-next-version -c Stable -R)" >> $FORGEJO_OUTPUT fi - echo "prev_build_version=$(gli get-current-version -c Stable -R)" >> $GITHUB_OUTPUT - echo "git_short_hash=$(git rev-parse --short "${{ github.sha }}")" >> $GITHUB_OUTPUT + echo "prev_build_version=$(gli get-current-version -c Stable -R)" >> $FORGEJO_OUTPUT + echo "git_short_hash=$(git rev-parse --short "${{ forgejo.sha }}")" >> $FORGEJO_OUTPUT shell: bash - name: Configure for release @@ -85,11 +82,7 @@ jobs: rm libarmeilleure-jitsupport.dylib 7z a ../release_output/ryujinx-${{ steps.version_info.outputs.build_version }}-${{ matrix.platform.zip_os_name }}.zip ../publish popd - - gli upload-generic-package -T ${{ secrets.GITLAB_TOKEN }} -P ryubing/ryujinx -n Ryubing -v ${{ steps.version_info.outputs.build_version }} -r 5 -p release_output/ryujinx-${{ 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') @@ -99,11 +92,7 @@ jobs: chmod +x Ryujinx.sh Ryujinx tar -czvf ../release_output/ryujinx-${{ 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/ryujinx -n Ryubing -v ${{ steps.version_info.outputs.build_version }} -r 5 -p release_output/ryujinx-${{ steps.version_info.outputs.build_version }}-${{ matrix.platform.zip_os_name }}.tar.gz shell: bash - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Build AppImage (Linux) if: contains(matrix.platform.name, 'linux') @@ -138,17 +127,27 @@ jobs: pushd publish_appimage mv Ryujinx.AppImage ../release_output/ryujinx-$BUILD_VERSION-$ARCH_NAME.AppImage popd - - gli upload-generic-package -T ${{ secrets.GITLAB_TOKEN }} -P ryubing/ryujinx -n Ryubing -v ${{ steps.version_info.outputs.build_version }} -r 5 -p release_output/ryujinx-$BUILD_VERSION-$ARCH_NAME.AppImage shell: bash + - name: Create release + uses: actions/create-release@v1 + with: + name: "${{ steps.version_info.outputs.build_version }}" + repository: "projects/Ryubing" + token: ${{ secrets.RELEASER_TOKEN }} + tag_name: ${{ steps.version_info.outputs.build_version }} + files: |- + release_output/** + macos_release: name: Release MacOS universal - runs-on: ubuntu-24.04 + runs-on: docker + container: + image: ghcr.io/catthehacker/ubuntu:act-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - - uses: actions/setup-dotnet@v4 + - uses: actions/setup-dotnet@v5 with: global-json-file: global.json @@ -158,37 +157,28 @@ jobs: 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' 2.0.30 - chmod +x gli - mv gli $HOME/.bin/ - echo "$HOME/.bin" >> $GITHUB_PATH - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - name: Install GLI + uses: actions/setup-gli@v1 + with: + token: ${{ secrets.SETUP_GLI_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' + gli ghr -R indygreg/apple-platform-rs -p apple-codesign-*-x86_64-unknown-linux-musl.tar.gz -O apple-codesign.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 }} + mv rcodesign /usr/bin/rcodesign - name: Get version info id: version_info run: | if [ '${{ inputs.is_bugfix_release }}' == 'false' ]; then - echo "build_version=$(gli get-next-version -m -c Stable -R)" >> $GITHUB_OUTPUT + echo "build_version=$(gli get-next-version -m -c Stable -R)" >> $FORGEJO_OUTPUT else - echo "build_version=$(gli get-next-version -c Stable -R)" >> $GITHUB_OUTPUT + echo "build_version=$(gli get-next-version -c Stable -R)" >> $FORGEJO_OUTPUT fi - echo "prev_build_version=$(gli get-current-version -c Stable -R)" >> $GITHUB_OUTPUT - echo "git_short_hash=$(git rev-parse --short "${{ github.sha }}")" >> $GITHUB_OUTPUT + echo "prev_build_version=$(gli get-current-version -c Stable -R)" >> $FORGEJO_OUTPUT + echo "git_short_hash=$(git rev-parse --short "${{ forgejo.sha }}")" >> $FORGEJO_OUTPUT shell: bash - name: Configure for release @@ -201,10 +191,18 @@ jobs: - name: Publish macOS Ryujinx run: | - ./distribution/macos/create_macos_build_ava.sh . publish_tmp_ava publish ./distribution/macos/entitlements.xml "${{ steps.version_info.outputs.build_version }}" "${{ steps.version_info.outputs.git_short_hash }}" Release 0 - - gli upload-generic-package -T ${{ secrets.GITLAB_TOKEN }} -P ryubing/ryujinx -n Ryubing -v ${{ steps.version_info.outputs.build_version }} -r 5 -p publish/ryujinx-${{ steps.version_info.outputs.build_version }}-macos_universal.app.tar.gz - + bash distribution/macos/create_macos_build_ava.sh . publish_tmp_ava publish ./distribution/macos/entitlements.xml "${{ steps.version_info.outputs.build_version }}" "${{ steps.version_info.outputs.git_short_hash }}" Release 0 + + - name: Create release + uses: actions/create-release@v1 + with: + name: "${{ steps.version_info.outputs.build_version }}" + repository: "projects/Ryubing" + token: ${{ secrets.RELEASER_TOKEN }} + tag_name: ${{ steps.version_info.outputs.build_version }} + files: |- + 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 @@ -214,36 +212,26 @@ jobs: 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' 2.0.30 - chmod +x gli - mv gli $HOME/.bin/ - echo "$HOME/.bin" >> $GITHUB_PATH - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - name: Install GLI + uses: actions/setup-gli@v1 + with: + token: ${{ secrets.SETUP_GLI_TOKEN }} - name: Get version info id: version_info run: | if [ '${{ inputs.is_bugfix_release }}' == 'false' ]; then - echo "build_version=$(gli get-next-version -m -c Stable -R)" >> $GITHUB_OUTPUT + echo "build_version=$(gli get-next-version -m -c Stable -R)" >> $FORGEJO_OUTPUT else - echo "build_version=$(gli get-next-version -c Stable -R)" >> $GITHUB_OUTPUT + echo "build_version=$(gli get-next-version -c Stable -R)" >> $FORGEJO_OUTPUT fi - echo "prev_build_version=$(gli get-current-version -c Stable -R)" >> $GITHUB_OUTPUT - echo "git_short_hash=$(git rev-parse --short "${{ github.sha }}")" >> $GITHUB_OUTPUT - echo "commit_message=$(git log -1 --pretty=%B)" >> $GITHUB_OUTPUT + echo "prev_build_version=$(gli get-current-version -c Stable -R)" >> $FORGEJO_OUTPUT + echo "git_short_hash=$(git rev-parse --short "${{ forgejo.sha }}")" >> $FORGEJO_OUTPUT shell: bash - - name: Create release - run: | - gli create-release-from-generic-package-files -T ${{ secrets.GITLAB_TOKEN }} -P ryubing/ryujinx -n Ryubing -v ${{ steps.version_info.outputs.build_version }} -r ${{ steps.version_info.outputs.git_short_hash }} -t "${{ steps.version_info.outputs.build_version }}" -b "msd:${{ steps.version_info.outputs.build_version }}" - - name: Send notification webhook run: | - gli send-update-message -T ${{ secrets.GITLAB_TOKEN }} -P ryubing/ryujinx -t ${{ steps.version_info.outputs.build_version }} -c 32cd32 -w ${{ secrets.STABLE_DISCORD_WEBHOOK }} -i https://avatars.githubusercontent.com/u/192939710?s=200&v=4 + gli send-update-message -T ${{ secrets.RELEASER_TOKEN }} -P projects/Ryubing -t ${{ steps.version_info.outputs.build_version }} -c 32cd32 -w ${{ secrets.STABLE_DISCORD_WEBHOOK }} -i https://avatars.githubusercontent.com/u/192939710?s=200&v=4 - name: Notify update server of new builds run: | diff --git a/.github/workflows/nightly_pr_comment.yml b/.forgejo/workflows/unused/nightly_pr_comment.yml similarity index 100% rename from .github/workflows/nightly_pr_comment.yml rename to .forgejo/workflows/unused/nightly_pr_comment.yml diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml deleted file mode 100644 index 45f233dff..000000000 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ /dev/null @@ -1,86 +0,0 @@ -name: Bug Report -description: File a bug report -title: "[Bug]" -labels: bug -body: - - type: textarea - id: issue - attributes: - label: Description of the issue - description: What's the issue you encountered? - validations: - required: true - - type: textarea - id: repro - attributes: - label: Reproduction steps - description: How can the issue be reproduced? - placeholder: Describe each step as precisely as possible - validations: - required: true - - type: textarea - id: log - attributes: - label: Log file - description: "A log file will help our developers to better diagnose and fix the issue. UPLOAD THE FILE. DO NOT COPY AND PASTE THE FILE'S CONTENT." - placeholder: Logs files can be found under "Logs" folder in Ryujinx program folder. They can also be accessed by opening Ryujinx, then going to File > Open Logs Folder. You can drag and drop the log on to the text area (do not copy paste). - validations: - required: true - - type: input - id: os - attributes: - label: OS - placeholder: "e.g. Windows 10" - validations: - required: true - - type: input - id: ryujinx-version - attributes: - label: Ryujinx version - placeholder: "e.g. 1.0.470" - validations: - required: true - - type: input - id: game-version - attributes: - label: Game version - placeholder: "e.g. 1.1.1" - validations: - required: false - - type: input - id: cpu - attributes: - label: CPU - placeholder: "e.g. i7-6700" - validations: - required: false - - type: input - id: gpu - attributes: - label: GPU - placeholder: "e.g. NVIDIA RTX 2070" - validations: - required: false - - type: input - id: ram - attributes: - label: RAM - placeholder: "e.g. 16GB" - validations: - required: false - - type: textarea - id: mods - attributes: - label: List of applied mods - placeholder: You can list applied mods here. - validations: - required: false - - type: textarea - id: additional-context - attributes: - label: Additional context? - description: | - - Additional info about your environment: - - Any other information relevant to your issue. - validations: - required: false diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml deleted file mode 100644 index abad80a3e..000000000 --- a/.github/ISSUE_TEMPLATE/config.yml +++ /dev/null @@ -1,5 +0,0 @@ -blank_issues_enabled: false -contact_links: - - name: Ryujinx Discord - url: https://discord.gg/N2FmfVc - about: This is for development related issues. For support and technical issues, please come to our Discord server. diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml deleted file mode 100644 index 399aa039c..000000000 --- a/.github/ISSUE_TEMPLATE/feature_request.yml +++ /dev/null @@ -1,31 +0,0 @@ -name: Feature Request -description: Suggest a new feature for Ryujinx. -title: "[Feature Request]" -labels: enhancement -body: - - type: textarea - id: overview - attributes: - label: Overview - description: Include the basic, high-level concepts for this feature here. - validations: - required: true - - type: textarea - id: details - attributes: - label: Smaller details - description: These may include specific methods of implementation etc. - validations: - required: true - - type: textarea - id: request - attributes: - label: Nature of request - validations: - required: true - - type: textarea - id: feature - attributes: - label: Why would this feature be useful? - validations: - required: true diff --git a/.github/ISSUE_TEMPLATE/missing_cpu_instruction.yml b/.github/ISSUE_TEMPLATE/missing_cpu_instruction.yml deleted file mode 100644 index d815ddfd9..000000000 --- a/.github/ISSUE_TEMPLATE/missing_cpu_instruction.yml +++ /dev/null @@ -1,26 +0,0 @@ -name: Missing CPU Instruction -description: CPU Instruction is missing in Ryujinx. -title: "[CPU]" -labels: [cpu, not-implemented] -body: - - type: textarea - id: instruction - attributes: - label: CPU instruction - description: What CPU instruction is missing? - validations: - required: true - - type: textarea - id: name - attributes: - label: Instruction name - description: Include the name from [armconverter.com](https://armconverter.com/?disasm) or [shell-storm.org](http://shell-storm.org/online/Online-Assembler-and-Disassembler/?arch=arm64&endianness=big&dis_with_raw=True&dis_with_ins=True) in the above code block - validations: - required: true - - type: textarea - id: required - attributes: - label: Required by - description: Add links to the [compatibility list page(s)](https://github.com/Ryujinx/Ryujinx-Games-List/issues) of the game(s) that require this instruction. - validations: - required: true diff --git a/.github/ISSUE_TEMPLATE/missing_service_call.yml b/.github/ISSUE_TEMPLATE/missing_service_call.yml deleted file mode 100644 index 80aae533b..000000000 --- a/.github/ISSUE_TEMPLATE/missing_service_call.yml +++ /dev/null @@ -1,25 +0,0 @@ -name: Missing Service Call -description: Service call is missing in Ryujinx. -labels: not-implemented -body: - - type: textarea - id: instruction - attributes: - label: Service call - description: What service call is missing? - validations: - required: true - - type: textarea - id: name - attributes: - label: Service description - description: Include the description/explanation from [Switchbrew](https://switchbrew.org/w/index.php?title=Services_API) and/or [SwIPC](https://reswitched.github.io/SwIPC/) in the above code block - validations: - required: true - - type: textarea - id: required - attributes: - label: Required by - description: Add links to the [compatibility list page(s)](https://github.com/Ryujinx/Ryujinx-Games-List/issues) of the game(s) that require this service. - validations: - required: true \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/missing_shader_instruction.yml b/.github/ISSUE_TEMPLATE/missing_shader_instruction.yml deleted file mode 100644 index df37859a5..000000000 --- a/.github/ISSUE_TEMPLATE/missing_shader_instruction.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: Missing Shader Instruction -description: Shader Instruction is missing in Ryujinx. -title: "[GPU]" -labels: [gpu, not-implemented] -body: - - type: textarea - id: instruction - attributes: - label: Shader instruction - description: What shader instruction is missing? - validations: - required: true - - type: textarea - id: required - attributes: - label: Required by - description: Add links to the [compatibility list page(s)](https://github.com/Ryujinx/Ryujinx-Games-List/issues) of the game(s) that require this instruction. - validations: - required: true diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml deleted file mode 100644 index a70dcc6f8..000000000 --- a/.github/workflows/build.yml +++ /dev/null @@ -1,168 +0,0 @@ -name: Build job - -on: - workflow_call: - -env: - POWERSHELL_TELEMETRY_OPTOUT: 1 - DOTNET_CLI_TELEMETRY_OPTOUT: 1 - RYUJINX_BASE_VERSION: "1.2.0" - RELEASE: 0 - -jobs: - build: - name: ${{ matrix.platform.name }} (${{ matrix.configuration }}) - runs-on: ${{ matrix.platform.os }} - timeout-minutes: 45 - strategy: - matrix: - configuration: [Debug, Release] - platform: - - { name: win-x64, os: windows-latest, zip_os_name: win_x64 } - - { name: win-arm64, os: windows-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 } - - { name: osx-x64, os: macos-13, zip_os_name: osx_x64 } - - fail-fast: false - 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 git short hash - id: git_short_hash - run: echo "result=$(git rev-parse --short "${{ github.sha }}")" >> $GITHUB_OUTPUT - shell: bash - - - name: Change config filename - run: sed -r --in-place 's/\%\%RYUJINX_CONFIG_FILE_NAME\%\%/PRConfig\.json/g;' src/Ryujinx.Common/ReleaseInformation.cs - shell: bash - if: github.event_name == 'pull_request' && matrix.platform.os != 'macos-13' - - - name: Change config filename for macOS - run: sed -r -i '' 's/\%\%RYUJINX_CONFIG_FILE_NAME\%\%/PRConfig\.json/g;' src/Ryujinx.Common/ReleaseInformation.cs - shell: bash - if: github.event_name == 'pull_request' && matrix.platform.os == 'macos-13' - - - name: Build - run: dotnet build -c "${{ matrix.configuration }}" -p:Version="${{ env.RYUJINX_BASE_VERSION }}" -p:SourceRevisionId="${{ steps.git_short_hash.outputs.result }}" -p:ExtraDefineConstants=DISABLE_UPDATER - - - name: Test - uses: TSRBerry/unstable-commands@v1 - with: - commands: dotnet test --no-build -c "${{ matrix.configuration }}" - timeout-minutes: 10 - retry-codes: 139 - if: matrix.platform.name != 'linux-arm64' - - - name: Publish Ryujinx - run: dotnet publish -c "${{ matrix.configuration }}" -r "${{ matrix.platform.name }}" -o ./publish -p:Version="${{ env.RYUJINX_BASE_VERSION }}" -p:DebugType=embedded -p:SourceRevisionId="${{ steps.git_short_hash.outputs.result }}" -p:ExtraDefineConstants=DISABLE_UPDATER src/Ryujinx --self-contained - if: github.event_name == 'pull_request' && matrix.platform.os != 'macos-13' - - - name: Set executable bit - run: | - chmod +x ./publish/Ryujinx ./publish/Ryujinx.sh - if: github.event_name == 'pull_request' && matrix.platform.os == 'ubuntu-latest' - - - name: Build AppImage - if: github.event_name == 'pull_request' && matrix.platform.os == 'ubuntu-latest' - run: | - 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 - - export UFLAG="gh-releases-zsync|${{ github.repository_owner }}|${{ github.event.repository.name }}|latest|*-$ARCH_NAME.AppImage.zsync" - BUILDDIR=publish OUTDIR=publish_appimage distribution/linux/appimage/build-appimage.sh - shell: bash - - - name: Upload Ryujinx artifact - uses: actions/upload-artifact@v4 - with: - name: ryujinx-${{ matrix.configuration }}-${{ env.RYUJINX_BASE_VERSION }}+${{ steps.git_short_hash.outputs.result }}-${{ matrix.platform.zip_os_name }} - path: publish - if: github.event_name == 'pull_request' && matrix.platform.os != 'macos-13' - - - name: Upload Ryujinx (AppImage) artifact - uses: actions/upload-artifact@v4 - if: github.event_name == 'pull_request' && matrix.platform.os == 'ubuntu-latest' - with: - name: ryujinx-${{ matrix.configuration }}-${{ env.RYUJINX_BASE_VERSION }}+${{ steps.git_short_hash.outputs.result }}-${{ matrix.platform.zip_os_name }}-AppImage - path: publish_appimage - - build_macos: - name: macOS Universal (${{ matrix.configuration }}) - runs-on: ubuntu-latest - timeout-minutes: 45 - strategy: - matrix: - configuration: [ Debug, Release ] - - 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 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 git short hash - id: git_short_hash - run: echo "result=$(git rev-parse --short "${{ github.sha }}")" >> $GITHUB_OUTPUT - - - name: Change config filename - run: sed -r --in-place 's/\%\%RYUJINX_CONFIG_FILE_NAME\%\%/PRConfig\.json/g;' src/Ryujinx.Common/ReleaseInformation.cs - shell: bash - if: github.event_name == 'pull_request' - - - name: Publish macOS Ryujinx - run: | - ./distribution/macos/create_macos_build_ava.sh . publish_tmp publish ./distribution/macos/entitlements.xml "${{ env.RYUJINX_BASE_VERSION }}" "${{ steps.git_short_hash.outputs.result }}" "${{ matrix.configuration }}" "-p:ExtraDefineConstants=DISABLE_UPDATER" - - - name: Upload Ryujinx artifact - uses: actions/upload-artifact@v4 - with: - name: ryujinx-${{ matrix.configuration }}-${{ env.RYUJINX_BASE_VERSION }}+${{ steps.git_short_hash.outputs.result }}-macos_universal - path: "publish/*.tar.gz" - if: github.event_name == 'pull_request' diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml deleted file mode 100644 index 43c5f227a..000000000 --- a/.github/workflows/checks.yml +++ /dev/null @@ -1,25 +0,0 @@ -name: Build PR - -on: - pull_request: - branches: [ master ] - paths: - - '**' - - '!.github/**' - - '!*.yml' - - '!*.config' - - '!*.md' - - '.github/workflows/*.yml' - -permissions: - pull-requests: write - checks: write - -concurrency: - group: pr-checks-${{ github.event.number }} - cancel-in-progress: true - -jobs: - pr_build: - uses: ./.github/workflows/build.yml - secrets: inherit