release.yml 4.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. name: Release job
  2. on:
  3. workflow_dispatch:
  4. inputs: {}
  5. push:
  6. branches: [ master ]
  7. paths-ignore:
  8. - '.github/*'
  9. - '.github/ISSUE_TEMPLATE/**'
  10. - '*.yml'
  11. - 'README.md'
  12. jobs:
  13. release:
  14. runs-on: windows-latest
  15. env:
  16. POWERSHELL_TELEMETRY_OPTOUT: 1
  17. DOTNET_CLI_TELEMETRY_OPTOUT: 1
  18. RYUJINX_BASE_VERSION: "1.1"
  19. RYUJINX_TARGET_RELEASE_CHANNEL_NAME: "master"
  20. RYUJINX_TARGET_RELEASE_CHANNEL_OWNER: "Ryujinx"
  21. RYUJINX_TARGET_RELEASE_CHANNEL_REPO: "release-channel-master"
  22. steps:
  23. - uses: actions/checkout@v2
  24. - uses: actions/setup-dotnet@v1
  25. with:
  26. dotnet-version: 6.0.x
  27. - name: Ensure NuGet Source
  28. uses: fabriciomurta/ensure-nuget-source@v1
  29. - name: Clear
  30. run: dotnet clean && dotnet nuget locals all --clear
  31. - name: Get version info
  32. id: version_info
  33. run: |
  34. echo "::set-output name=build_version::${{ env.RYUJINX_BASE_VERSION }}.${{ github.run_number }}"
  35. echo "::set-output name=git_short_hash::$(git rev-parse --short "${{ github.sha }}")"
  36. shell: bash
  37. - name: Configure for release
  38. run: |
  39. sed -r --in-place 's/\%\%RYUJINX_BUILD_VERSION\%\%/${{ steps.version_info.outputs.build_version }}/g;' Ryujinx.Common/ReleaseInformations.cs
  40. sed -r --in-place 's/\%\%RYUJINX_BUILD_GIT_HASH\%\%/${{ steps.version_info.outputs.git_short_hash }}/g;' Ryujinx.Common/ReleaseInformations.cs
  41. sed -r --in-place 's/\%\%RYUJINX_TARGET_RELEASE_CHANNEL_NAME\%\%/${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_NAME }}/g;' Ryujinx.Common/ReleaseInformations.cs
  42. sed -r --in-place 's/\%\%RYUJINX_TARGET_RELEASE_CHANNEL_OWNER\%\%/${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_OWNER }}/g;' Ryujinx.Common/ReleaseInformations.cs
  43. sed -r --in-place 's/\%\%RYUJINX_TARGET_RELEASE_CHANNEL_REPO\%\%/${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_REPO }}/g;' Ryujinx.Common/ReleaseInformations.cs
  44. shell: bash
  45. - name: Create output dir
  46. run: "mkdir release_output"
  47. - name: Publish Windows
  48. run: |
  49. dotnet publish -c Release -r win-x64 -o ./publish_windows/publish /p:Version="${{ steps.version_info.outputs.build_version }}" /p:SourceRevisionId="${{ steps.version_info.outputs.git_short_hash }}" /p:DebugType=embedded Ryujinx --self-contained
  50. dotnet publish -c Release -r win-x64 -o ./publish_windows_sdl2_headless/publish /p:Version="${{ steps.version_info.outputs.build_version }}" /p:SourceRevisionId="${{ steps.version_info.outputs.git_short_hash }}" /p:DebugType=embedded Ryujinx.Headless.SDL2 --self-contained
  51. - name: Packing Windows builds
  52. run: |
  53. pushd publish_windows
  54. 7z a ../release_output/ryujinx-${{ steps.version_info.outputs.build_version }}-win_x64.zip publish
  55. popd
  56. pushd publish_windows_sdl2_headless
  57. 7z a ../release_output/ryujinx-headless-sdl2-${{ steps.version_info.outputs.build_version }}-win_x64.zip publish
  58. popd
  59. shell: bash
  60. - name: Publish Linux
  61. run: |
  62. dotnet publish -c Release -r linux-x64 -o ./publish_linux/publish /p:Version="${{ steps.version_info.outputs.build_version }}" /p:SourceRevisionId="${{ steps.version_info.outputs.git_short_hash }}" /p:DebugType=embedded Ryujinx --self-contained
  63. dotnet publish -c Release -r linux-x64 -o ./publish_linux_sdl2_headless/publish /p:Version="${{ steps.version_info.outputs.build_version }}" /p:SourceRevisionId="${{ steps.version_info.outputs.git_short_hash }}" /p:DebugType=embedded Ryujinx.Headless.SDL2 --self-contained
  64. - name: Packing Linux builds
  65. run: |
  66. pushd publish_linux
  67. tar -czvf ../release_output/ryujinx-${{ steps.version_info.outputs.build_version }}-linux_x64.tar.gz publish
  68. popd
  69. pushd publish_linux_sdl2_headless
  70. tar -czvf ../release_output/ryujinx-headless-sdl2-${{ steps.version_info.outputs.build_version }}-linux_x64.tar.gz publish
  71. popd
  72. shell: bash
  73. - name: Pushing new release
  74. uses: ncipollo/release-action@v1
  75. with:
  76. name: ${{ steps.version_info.outputs.build_version }}
  77. artifacts: "release_output/*.tar.gz,release_output/*.zip"
  78. tag: ${{ steps.version_info.outputs.build_version }}
  79. body: "For more informations about this release please check out the official [Changelog](https://github.com/Ryujinx/Ryujinx/wiki/Changelog)."
  80. allowUpdates: true
  81. removeArtifacts: true
  82. replacesArtifacts: true
  83. owner: ${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_OWNER }}
  84. repo: ${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_REPO }}
  85. token: ${{ secrets.RELEASE_TOKEN }}