diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index af560d21..bbbce0a0 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -12,9 +12,9 @@ on: env: VCPKG_ROOT: "${{github.workspace}}/dependencies/vcpkg" - VCPKG_BINARY_SOURCES: 'clear;nuget,GitHub,readwrite' + VCPKG_BINARY_SOURCES: "clear;nuget,GitHub,readwrite" VCPKG_FORCE_DOWNLOADED_BINARIES: true - + jobs: build-ubuntu: continue-on-error: true @@ -26,67 +26,67 @@ jobs: arch: x64 - os: ubuntu-22.04-arm arch: arm - + name: build-ubuntu-${{ matrix.arch }} runs-on: ${{ matrix.os }} steps: - - name: "Checkout repo" - uses: actions/checkout@v4 - with: - submodules: "recursive" - fetch-depth: 0 + - name: "Checkout repo" + uses: actions/checkout@v4 + with: + submodules: "recursive" + fetch-depth: 0 - - name: Setup release mode parameters - run: | - echo "BUILD_MODE=release" >> $GITHUB_ENV - echo "BUILD_FLAGS=" >> $GITHUB_ENV - echo "Build mode is release" + - name: Setup release mode parameters + run: | + echo "BUILD_MODE=release" >> $GITHUB_ENV + echo "BUILD_FLAGS=" >> $GITHUB_ENV + echo "Build mode is release" - - name: Setup build flags for version - if: ${{ inputs.next_version_major != '' }} - run: | - echo "[INFO] Version ${{ inputs.next_version_major }}.${{ inputs.next_version_minor }}" - echo "BUILD_FLAGS=${{ env.BUILD_FLAGS }} -DEMULATOR_VERSION_MAJOR=${{ inputs.next_version_major }} -DEMULATOR_VERSION_MINOR=${{ inputs.next_version_minor }}" >> $GITHUB_ENV + - name: Setup build flags for version + if: ${{ inputs.next_version_major != '' }} + run: | + echo "[INFO] Version ${{ inputs.next_version_major }}.${{ inputs.next_version_minor }}" + echo "BUILD_FLAGS=${{ env.BUILD_FLAGS }} -DEMULATOR_VERSION_MAJOR=${{ inputs.next_version_major }} -DEMULATOR_VERSION_MINOR=${{ inputs.next_version_minor }}" >> $GITHUB_ENV - - name: "Install system dependencies" - run: | - sudo apt update -qq - sudo apt install -y clang-15 cmake freeglut3-dev libgcrypt20-dev libglm-dev libgtk-3-dev libpulse-dev libsecret-1-dev libsystemd-dev libudev-dev nasm ninja-build libbluetooth-dev + - name: "Install system dependencies" + run: | + sudo apt update -qq + sudo apt install -y clang-15 cmake freeglut3-dev libgcrypt20-dev libglm-dev libgtk-3-dev libpulse-dev libsecret-1-dev libsystemd-dev libudev-dev nasm ninja-build libbluetooth-dev - - name: "Bootstrap vcpkg" - run: | - bash ./dependencies/vcpkg/bootstrap-vcpkg.sh + - name: "Bootstrap vcpkg" + run: | + bash ./dependencies/vcpkg/bootstrap-vcpkg.sh - - name: 'Setup NuGet Credentials for vcpkg' - shell: 'bash' - run: | - mono `./dependencies/vcpkg/vcpkg fetch nuget | tail -n 1` \ - sources add \ - -source "https://nuget.pkg.github.com/${{ github.repository_owner }}/index.json" \ - -storepasswordincleartext \ - -name "GitHub" \ - -username "${{ github.repository_owner }}" \ - -password "${{ secrets.GITHUB_TOKEN }}" - mono `./dependencies/vcpkg/vcpkg fetch nuget | tail -n 1` \ - setapikey "${{ secrets.GITHUB_TOKEN }}" \ - -source "https://nuget.pkg.github.com/${{ github.repository_owner }}/index.json" - - - name: "cmake" - run: | - cmake -S . -B build ${{ env.BUILD_FLAGS }} -DCMAKE_BUILD_TYPE=${{ env.BUILD_MODE }} -DCMAKE_C_COMPILER=/usr/bin/clang-15 -DCMAKE_CXX_COMPILER=/usr/bin/clang++-15 -G Ninja -DCMAKE_MAKE_PROGRAM=/usr/bin/ninja + - name: "Setup NuGet Credentials for vcpkg" + shell: "bash" + run: | + mono `./dependencies/vcpkg/vcpkg fetch nuget | tail -n 1` \ + sources add \ + -source "https://nuget.pkg.github.com/${{ github.repository_owner }}/index.json" \ + -storepasswordincleartext \ + -name "GitHub" \ + -username "${{ github.repository_owner }}" \ + -password "${{ secrets.GITHUB_TOKEN }}" + mono `./dependencies/vcpkg/vcpkg fetch nuget | tail -n 1` \ + setapikey "${{ secrets.GITHUB_TOKEN }}" \ + -source "https://nuget.pkg.github.com/${{ github.repository_owner }}/index.json" - - name: "Build Cemu" - run: | - cmake --build build + - name: "cmake" + run: | + cmake -S . -B build ${{ env.BUILD_FLAGS }} -DCMAKE_BUILD_TYPE=${{ env.BUILD_MODE }} -DCMAKE_C_COMPILER=/usr/bin/clang-15 -DCMAKE_CXX_COMPILER=/usr/bin/clang++-15 -G Ninja -DCMAKE_MAKE_PROGRAM=/usr/bin/ninja - - name: Prepare artifact - run: mv bin/Cemu_release bin/Cemu + - name: "Build Cemu" + run: | + cmake --build build - - name: Upload artifact - uses: actions/upload-artifact@v4 - with: - name: cemu-bin-linux-${{ matrix.arch }} - path: ./bin/Cemu + - name: Prepare artifact + run: mv bin/Cemu_release bin/Cemu + + - name: Upload artifact + uses: actions/upload-artifact@v4 + with: + name: cemu-bin-linux-${{ matrix.arch }} + path: ./bin/Cemu build-appimage: strategy: @@ -97,112 +97,112 @@ jobs: arch: x64 - os: ubuntu-22.04-arm arch: arm - + name: build-appimage-${{ matrix.arch }} runs-on: ${{ matrix.os }} needs: build-ubuntu steps: - - name: Checkout Upstream Repo - uses: actions/checkout@v4 + - name: Checkout Upstream Repo + uses: actions/checkout@v4 - - uses: actions/download-artifact@v4 - with: - name: cemu-bin-linux-${{ matrix.arch }} - path: bin + - uses: actions/download-artifact@v8 + with: + name: cemu-bin-linux-${{ matrix.arch }} + path: bin - - name: "Install system dependencies" - run: | - sudo apt update -qq - sudo apt install -y clang-15 cmake freeglut3-dev libgcrypt20-dev libglm-dev libgtk-3-dev libpulse-dev libsecret-1-dev libsystemd-dev nasm ninja-build appstream libbluetooth-dev + - name: "Install system dependencies" + run: | + sudo apt update -qq + sudo apt install -y clang-15 cmake freeglut3-dev libgcrypt20-dev libglm-dev libgtk-3-dev libpulse-dev libsecret-1-dev libsystemd-dev nasm ninja-build appstream libbluetooth-dev - - name: "Build AppImage" - run: | - export LD_LIBRARY_PATH="/usr/local/lib:$LD_LIBRARY_PATH" - export DEPLOY_GTK_VERSION=3 - dist/linux/appimage.sh ${{ runner.arch }} + - name: "Build AppImage" + run: | + export LD_LIBRARY_PATH="/usr/local/lib:$LD_LIBRARY_PATH" + export DEPLOY_GTK_VERSION=3 + dist/linux/appimage.sh ${{ runner.arch }} - - name: Upload artifact - uses: actions/upload-artifact@v4 - with: - name: cemu-appimage-${{ matrix.arch }} - path: artifacts + - name: Upload artifact + uses: actions/upload-artifact@v4 + with: + name: cemu-appimage-${{ matrix.arch }} + path: artifacts build-windows: runs-on: windows-2022 steps: - - name: "Checkout repo" - uses: actions/checkout@v4 - with: - submodules: "recursive" + - name: "Checkout repo" + uses: actions/checkout@v4 + with: + submodules: "recursive" - - name: Setup release mode parameters - run: | - echo "BUILD_MODE=release" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append - echo "BUILD_FLAGS=" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append - echo "Build mode is release" + - name: Setup release mode parameters + run: | + echo "BUILD_MODE=release" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append + echo "BUILD_FLAGS=" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append + echo "Build mode is release" - - name: Setup build flags for version - if: ${{ inputs.next_version_major != '' }} - run: | - echo "[INFO] Version ${{ inputs.next_version_major }}.${{ inputs.next_version_minor }}" - echo "BUILD_FLAGS=${{ env.BUILD_FLAGS }} -DEMULATOR_VERSION_MAJOR=${{ inputs.next_version_major }} -DEMULATOR_VERSION_MINOR=${{ inputs.next_version_minor }}" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append + - name: Setup build flags for version + if: ${{ inputs.next_version_major != '' }} + run: | + echo "[INFO] Version ${{ inputs.next_version_major }}.${{ inputs.next_version_minor }}" + echo "BUILD_FLAGS=${{ env.BUILD_FLAGS }} -DEMULATOR_VERSION_MAJOR=${{ inputs.next_version_major }} -DEMULATOR_VERSION_MINOR=${{ inputs.next_version_minor }}" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append - - name: "Setup cmake" - uses: jwlawson/actions-setup-cmake@v2 - with: - cmake-version: '3.29.0' + - name: "Setup cmake" + uses: jwlawson/actions-setup-cmake@v2 + with: + cmake-version: "3.29.0" - - name: "Bootstrap vcpkg" - run: | - ./dependencies/vcpkg/bootstrap-vcpkg.bat + - name: "Bootstrap vcpkg" + run: | + ./dependencies/vcpkg/bootstrap-vcpkg.bat - - name: 'Setup NuGet Credentials for vcpkg' - shell: 'bash' - run: | - `./dependencies/vcpkg/vcpkg.exe fetch nuget | tail -n 1` \ - sources add \ - -source "https://nuget.pkg.github.com/${{ github.repository_owner }}/index.json" \ - -storepasswordincleartext \ - -name "GitHub" \ - -username "${{ github.repository_owner }}" \ - -password "${{ secrets.GITHUB_TOKEN }}" - `./dependencies/vcpkg/vcpkg.exe fetch nuget | tail -n 1` \ - setapikey "${{ secrets.GITHUB_TOKEN }}" \ - -source "https://nuget.pkg.github.com/${{ github.repository_owner }}/index.json" + - name: "Setup NuGet Credentials for vcpkg" + shell: "bash" + run: | + `./dependencies/vcpkg/vcpkg.exe fetch nuget | tail -n 1` \ + sources add \ + -source "https://nuget.pkg.github.com/${{ github.repository_owner }}/index.json" \ + -storepasswordincleartext \ + -name "GitHub" \ + -username "${{ github.repository_owner }}" \ + -password "${{ secrets.GITHUB_TOKEN }}" + `./dependencies/vcpkg/vcpkg.exe fetch nuget | tail -n 1` \ + setapikey "${{ secrets.GITHUB_TOKEN }}" \ + -source "https://nuget.pkg.github.com/${{ github.repository_owner }}/index.json" - - name: "cmake" - run: | - mkdir -p build - cd build - echo "[INFO] BUILD_FLAGS: ${{ env.BUILD_FLAGS }}" - echo "[INFO] BUILD_MODE: ${{ env.BUILD_MODE }}" - cmake .. ${{ env.BUILD_FLAGS }} -DCMAKE_BUILD_TYPE=${{ env.BUILD_MODE }} -DVCPKG_INSTALL_OPTIONS="--clean-after-build" + - name: "cmake" + run: | + mkdir -p build + cd build + echo "[INFO] BUILD_FLAGS: ${{ env.BUILD_FLAGS }}" + echo "[INFO] BUILD_MODE: ${{ env.BUILD_MODE }}" + cmake .. ${{ env.BUILD_FLAGS }} -DCMAKE_BUILD_TYPE=${{ env.BUILD_MODE }} -DVCPKG_INSTALL_OPTIONS="--clean-after-build" - - name: "Build Cemu" - run: | - cd build - cmake --build . --config ${{ env.BUILD_MODE }} + - name: "Build Cemu" + run: | + cd build + cmake --build . --config ${{ env.BUILD_MODE }} - - name: Prepare artifact - run: Rename-Item bin/Cemu_release.exe Cemu.exe + - name: Prepare artifact + run: Rename-Item bin/Cemu_release.exe Cemu.exe - - name: Build NSIS Installer - shell: cmd - run: | - cd src\resource - makensis /DPRODUCT_VERSION=${{ inputs.next_version_major }}.${{ inputs.next_version_minor }} installer.nsi + - name: Build NSIS Installer + shell: cmd + run: | + cd src\resource + makensis /DPRODUCT_VERSION=${{ inputs.next_version_major }}.${{ inputs.next_version_minor }} installer.nsi - - name: Upload artifact - uses: actions/upload-artifact@v4 - with: - name: cemu-bin-windows-x64 - path: ./bin/Cemu.exe + - name: Upload artifact + uses: actions/upload-artifact@v4 + with: + name: cemu-bin-windows-x64 + path: ./bin/Cemu.exe - - name: Upload NSIS Installer - uses: actions/upload-artifact@v4 - with: - name: cemu-installer-windows-x64 - path: ./src/resource/cemu-${{ inputs.next_version_major }}.${{ inputs.next_version_minor }}-windows-x64-installer.exe + - name: Upload NSIS Installer + uses: actions/upload-artifact@v4 + with: + name: cemu-installer-windows-x64 + path: ./src/resource/cemu-${{ inputs.next_version_major }}.${{ inputs.next_version_minor }}-windows-x64-installer.exe build-macos: runs-on: macos-14 @@ -210,86 +210,86 @@ jobs: matrix: arch: [x86_64, arm64] steps: - - name: "Checkout repo" - uses: actions/checkout@v4 - with: - submodules: "recursive" + - name: "Checkout repo" + uses: actions/checkout@v4 + with: + submodules: "recursive" - - name: Setup release mode parameters - run: | - echo "BUILD_MODE=release" >> $GITHUB_ENV - echo "BUILD_FLAGS=" >> $GITHUB_ENV - echo "Build mode is release" + - name: Setup release mode parameters + run: | + echo "BUILD_MODE=release" >> $GITHUB_ENV + echo "BUILD_FLAGS=" >> $GITHUB_ENV + echo "Build mode is release" - - name: Setup build flags for version - if: ${{ inputs.next_version_major != '' }} - run: | - echo "[INFO] Version ${{ inputs.next_version_major }}.${{ inputs.next_version_minor }}" - echo "BUILD_FLAGS=${{ env.BUILD_FLAGS }} -DEMULATOR_VERSION_MAJOR=${{ inputs.next_version_major }} -DEMULATOR_VERSION_MINOR=${{ inputs.next_version_minor }}" >> $GITHUB_ENV + - name: Setup build flags for version + if: ${{ inputs.next_version_major != '' }} + run: | + echo "[INFO] Version ${{ inputs.next_version_major }}.${{ inputs.next_version_minor }}" + echo "BUILD_FLAGS=${{ env.BUILD_FLAGS }} -DEMULATOR_VERSION_MAJOR=${{ inputs.next_version_major }} -DEMULATOR_VERSION_MINOR=${{ inputs.next_version_minor }}" >> $GITHUB_ENV - - name: "Install system dependencies" - run: | - brew update - brew install ninja nasm automake libtool + - name: "Install system dependencies" + run: | + brew update + brew install ninja nasm automake libtool - - name: "Install molten-vk" - run: | - curl -L -O https://github.com/KhronosGroup/MoltenVK/releases/download/v1.4.1/MoltenVK-macos-privateapi.tar - tar xf MoltenVK-macos-privateapi.tar - sudo mkdir -p /usr/local/lib - sudo cp MoltenVK/MoltenVK/dynamic/dylib/macOS/libMoltenVK.dylib /usr/local/lib + - name: "Install molten-vk" + run: | + curl -L -O https://github.com/KhronosGroup/MoltenVK/releases/download/v1.4.1/MoltenVK-macos-privateapi.tar + tar xf MoltenVK-macos-privateapi.tar + sudo mkdir -p /usr/local/lib + sudo cp MoltenVK/MoltenVK/dynamic/dylib/macOS/libMoltenVK.dylib /usr/local/lib - - name: "Setup cmake" - uses: jwlawson/actions-setup-cmake@v2 - with: - cmake-version: '3.29.0' + - name: "Setup cmake" + uses: jwlawson/actions-setup-cmake@v2 + with: + cmake-version: "3.29.0" - - name: "Bootstrap vcpkg" - run: | - bash ./dependencies/vcpkg/bootstrap-vcpkg.sh + - name: "Bootstrap vcpkg" + run: | + bash ./dependencies/vcpkg/bootstrap-vcpkg.sh - - name: 'Setup NuGet Credentials for vcpkg' - shell: 'bash' - run: | - mono `./dependencies/vcpkg/vcpkg fetch nuget | tail -n 1` \ - sources add \ - -source "https://nuget.pkg.github.com/${{ github.repository_owner }}/index.json" \ - -storepasswordincleartext \ - -name "GitHub" \ - -username "${{ github.repository_owner }}" \ - -password "${{ secrets.GITHUB_TOKEN }}" - mono `./dependencies/vcpkg/vcpkg fetch nuget | tail -n 1` \ - setapikey "${{ secrets.GITHUB_TOKEN }}" \ - -source "https://nuget.pkg.github.com/${{ github.repository_owner }}/index.json" + - name: "Setup NuGet Credentials for vcpkg" + shell: "bash" + run: | + mono `./dependencies/vcpkg/vcpkg fetch nuget | tail -n 1` \ + sources add \ + -source "https://nuget.pkg.github.com/${{ github.repository_owner }}/index.json" \ + -storepasswordincleartext \ + -name "GitHub" \ + -username "${{ github.repository_owner }}" \ + -password "${{ secrets.GITHUB_TOKEN }}" + mono `./dependencies/vcpkg/vcpkg fetch nuget | tail -n 1` \ + setapikey "${{ secrets.GITHUB_TOKEN }}" \ + -source "https://nuget.pkg.github.com/${{ github.repository_owner }}/index.json" - - name: "cmake" - run: | - mkdir build - cd build - cmake .. ${{ env.BUILD_FLAGS }} \ - -DCMAKE_BUILD_TYPE=${{ env.BUILD_MODE }} \ - -DCMAKE_OSX_ARCHITECTURES=${{ matrix.arch }} \ - -DMACOS_BUNDLE=ON \ - -G Ninja + - name: "cmake" + run: | + mkdir build + cd build + cmake .. ${{ env.BUILD_FLAGS }} \ + -DCMAKE_BUILD_TYPE=${{ env.BUILD_MODE }} \ + -DCMAKE_OSX_ARCHITECTURES=${{ matrix.arch }} \ + -DMACOS_BUNDLE=ON \ + -G Ninja - - name: "Build Cemu" - run: | - cmake --build build + - name: "Build Cemu" + run: | + cmake --build build - - name: Prepare artifact - run: | - mkdir bin/Cemu_app - mv bin/Cemu_release.app bin/Cemu_app/Cemu.app - mv bin/Cemu_app/Cemu.app/Contents/MacOS/Cemu_release bin/Cemu_app/Cemu.app/Contents/MacOS/Cemu - sed -i '' 's/Cemu_release/Cemu/g' bin/Cemu_app/Cemu.app/Contents/Info.plist - chmod a+x bin/Cemu_app/Cemu.app/Contents/MacOS/{Cemu,update.sh} - ln -s /Applications bin/Cemu_app/Applications - hdiutil create ./bin/tmp.dmg -ov -volname "Cemu" -fs HFS+ -srcfolder "./bin/Cemu_app" - hdiutil convert ./bin/tmp.dmg -format UDZO -o bin/Cemu.dmg - rm bin/tmp.dmg + - name: Prepare artifact + run: | + mkdir bin/Cemu_app + mv bin/Cemu_release.app bin/Cemu_app/Cemu.app + mv bin/Cemu_app/Cemu.app/Contents/MacOS/Cemu_release bin/Cemu_app/Cemu.app/Contents/MacOS/Cemu + sed -i '' 's/Cemu_release/Cemu/g' bin/Cemu_app/Cemu.app/Contents/Info.plist + chmod a+x bin/Cemu_app/Cemu.app/Contents/MacOS/{Cemu,update.sh} + ln -s /Applications bin/Cemu_app/Applications + hdiutil create ./bin/tmp.dmg -ov -volname "Cemu" -fs HFS+ -srcfolder "./bin/Cemu_app" + hdiutil convert ./bin/tmp.dmg -format UDZO -o bin/Cemu.dmg + rm bin/tmp.dmg - - name: Upload artifact - uses: actions/upload-artifact@v4 - with: - name: cemu-bin-macos-${{ matrix.arch }} - path: ./bin/Cemu.dmg + - name: Upload artifact + uses: actions/upload-artifact@v4 + with: + name: cemu-bin-macos-${{ matrix.arch }} + path: ./bin/Cemu.dmg diff --git a/.github/workflows/deploy_release.yml b/.github/workflows/deploy_release.yml index dfcce040..dc08f2af 100644 --- a/.github/workflows/deploy_release.yml +++ b/.github/workflows/deploy_release.yml @@ -1,45 +1,45 @@ name: Deploy release -on: +on: workflow_dispatch: inputs: changelog0: - description: 'Enter the changelog lines for this release. Each line is a feature / bullet point. Do not use dash.' + description: "Enter the changelog lines for this release. Each line is a feature / bullet point. Do not use dash." required: true type: string changelog1: - description: 'Feature 2' + description: "Feature 2" required: false type: string changelog2: - description: 'Feature 3' + description: "Feature 3" required: false type: string changelog3: - description: 'Feature 4' + description: "Feature 4" required: false type: string changelog4: - description: 'Feature 5' + description: "Feature 5" required: false type: string changelog5: - description: 'Feature 6' + description: "Feature 6" required: false type: string changelog6: - description: 'Feature 7' + description: "Feature 7" required: false type: string changelog7: - description: 'Feature 8' + description: "Feature 8" required: false type: string changelog8: - description: 'Feature 9' + description: "Feature 9" required: false type: string changelog9: - description: 'Feature 10' + description: "Feature 10" required: false type: string @@ -78,27 +78,27 @@ jobs: if [ -n "${{ github.event.inputs.changelog9 }}" ]; then CHANGELOG="$CHANGELOG- ${{ github.event.inputs.changelog9 }}\n"; fi echo -e "$CHANGELOG" echo "RELEASE_BODY=$CHANGELOG" >> $GITHUB_ENV - - uses: actions/download-artifact@v4 + - uses: actions/download-artifact@v8 with: name: cemu-bin-linux-x64 path: cemu-bin-linux-x64 - - uses: actions/download-artifact@v4 + - uses: actions/download-artifact@v8 with: name: cemu-appimage-x64 path: cemu-appimage-x64 - - uses: actions/download-artifact@v4 + - uses: actions/download-artifact@v8 with: name: cemu-bin-windows-x64 path: cemu-bin-windows-x64 - - uses: actions/download-artifact@v4 + - uses: actions/download-artifact@v8 with: name: cemu-installer-windows-x64 path: cemu-installer-windows-x64 - - uses: actions/download-artifact@v4 + - uses: actions/download-artifact@v8 with: pattern: cemu-bin-macos* path: cemu-macos @@ -134,7 +134,7 @@ jobs: echo "Cemu Version is $VERSION" ls cemu-appimage-x64 mv cemu-appimage-x64/Cemu-*-x86_64.AppImage upload/Cemu-$VERSION-x86_64.AppImage - + - name: Create release from linux-bin run: | ls ./ @@ -143,7 +143,7 @@ jobs: mv cemu-bin-linux-x64/Cemu ./${{ env.CEMU_FOLDER_NAME }}/Cemu zip -9 -r upload/cemu-${{ env.CEMU_VERSION }}-ubuntu-22.04-x64.zip ${{ env.CEMU_FOLDER_NAME }} rm -r ./${{ env.CEMU_FOLDER_NAME }} - + - name: Create release from macos-bin run: | cd cemu-macos @@ -157,7 +157,7 @@ jobs: wget -O ghr.tar.gz https://github.com/tcnksm/ghr/releases/download/v0.15.0/ghr_v0.15.0_linux_amd64.tar.gz tar xvzf ghr.tar.gz; rm ghr.tar.gz echo "[INFO] Release tag: v${{ env.CEMU_VERSION }}" - CHANGELOG_UNESCAPED=$(printf "%s\n" "${{ env.RELEASE_BODY }}" | sed 's/\\n/\n/g') + CHANGELOG_UNESCAPED=$(printf "%s\n" "${{ env.RELEASE_BODY }}" | sed 's/\\n/\n/g') RELEASE_BODY=$(printf "%s\n%s" \ "**Changelog:**" \ "$CHANGELOG_UNESCAPED")