diff --git a/.github/workflows/make-release.yml b/.github/workflows/release.yml similarity index 64% rename from .github/workflows/make-release.yml rename to .github/workflows/release.yml index cf2415af..8113c7bf 100644 --- a/.github/workflows/make-release.yml +++ b/.github/workflows/release.yml @@ -10,6 +10,9 @@ on: description: "Is this a prerelease?" required: true type: boolean + custom_message: + description: "Optional pre-changelog message" + required: false jobs: collect-release: @@ -36,7 +39,7 @@ jobs: path: artifacts/windows/executable allow_forks: false - - name: Download macOS Full Build + - name: Download Mac OS Full Build uses: dawidd6/action-download-artifact@v6 with: workflow: macos.yml @@ -44,7 +47,7 @@ jobs: path: artifacts/macos/full_build allow_forks: false - - name: Download macOS Executable + - name: Download Mac OS Executable uses: dawidd6/action-download-artifact@v6 with: workflow: macos.yml @@ -78,7 +81,7 @@ jobs: zip -r ../../../renamed/"Codename Engine-Windows.zip" * cd - - # macOS + # Mac OS mv artifacts/macos/executable/CodenameEngine renamed/update-mac cd artifacts/macos/full_build if [ -f CodenameEngine.tar.gz ]; then @@ -109,7 +112,7 @@ jobs: -L 50 -q '.[] | select(.isPrerelease==false and .isDraft==false) | .tagName' | head -n 1) if [ -z "$BASE" ]; then - echo "No stable release found, resorting to prereleases" + echo "No stable release found, resorting to prereleases." BASE=$(gh release list --repo ${{ github.repository }} --json tagName,isDraft \ -L 1 -q '.[] | select(.isDraft==false) | .tagName') fi @@ -118,24 +121,59 @@ jobs: -L 50 -q '.[] | select(.isPrerelease==false and .isDraft==false) | .tagName' | head -n 1) fi - echo "Base release: $BASE" - echo "base_release=$BASE" >> $GITHUB_OUTPUT + if [ -z "$BASE" ]; then + echo "No older release found; please make sure to have at least one older release containing the 'update-assets.zip' file in order to generate the differences." + exit 1 + else + echo "Base release: $BASE" + echo "base_release=$BASE" >> $GITHUB_OUTPUT + fi - name: Prepare update-assets.zip env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | - mkdir -p update_assets_temp renamed - echo "Downloading assets from release ${{ steps.get_base_release.outputs.base_release }}" - gh release download "${{ steps.get_base_release.outputs.base_release }}" \ - --repo ${{ github.repository }} \ - --pattern "update-assets.zip" \ - -D update_assets_temp + echo "Looking for 'update-assets.zip' from release '${{ steps.get_base_release.outputs.base_release }}'" + ASSETS=$(gh release view "${{ steps.get_base_release.outputs.base_release }}" \ + --repo "${{ github.repository }}" \ + --json assets \ + | jq -r '.assets[].name') - unzip -q update_assets_temp/update-assets.zip -d update_assets_temp - cd update_assets_temp - zip -r ../renamed/update-assets.zip assets - cd .. + if echo "$ASSETS" | grep -xq "update-assets.zip"; then + mkdir -p update_assets_temp renamed + echo "Downloading assets from release '${{ steps.get_base_release.outputs.base_release }}'" + gh release download "${{ steps.get_base_release.outputs.base_release }}" \ + --repo ${{ github.repository }} \ + --pattern "update-assets.zip" \ + -D update_assets_temp + + unzip -q update_assets_temp/update-assets.zip -d update_assets_temp + cd update_assets_temp + zip -r ../renamed/update-assets.zip . -i assets + else + echo "No 'update-assets.zip' file found in release '${{ steps.get_base_release.outputs.base_release }}'; please make sure to have this file in that older release in order to generate the differences." + exit 1 + fi + + - name: Prepare pre-changelog message + id: pre_changelog_message + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + echo "Preparing a pre-changelog message..." + + BODY="If you would like to download the full builds of the engine from this release, please ignore the files starting with 'update-' as they're needed for the engine's internal autoupdater.\n\n" + + if [ -n "${{ github.event.inputs.custom_message }}" ]; then + BODY="${{ github.event.inputs.custom_message }}\n${BODY}" + fi + + { + echo "body<> $GITHUB_OUTPUT + echo -e "Final pre-changelog message:\n\n$BODY" - name: Create GitHub Release with Assets uses: softprops/action-gh-release@v1 @@ -146,13 +184,14 @@ jobs: name: Release ${{ github.event.inputs.tag_name }} draft: true prerelease: ${{ github.event.inputs.prerelease }} + body: ${{ steps.build_body.outputs.body }} generate_release_notes: true files: | renamed/Codename Engine-Windows.zip - renamed/update-windows.exe renamed/Codename Engine-Mac.zip renamed/Codename Engine-Mac.tar.gz - renamed/update-mac renamed/Codename Engine-Linux.zip - renamed/update-linux renamed/update-assets.zip + renamed/update-windows.exe + renamed/update-mac + renamed/update-linux