Update CI workflow for release process and enhance changelog extraction

- Modified the release workflow to output the tag name instead of upload URL and release ID.
- Improved changelog extraction with error handling and default release notes creation if extraction fails.
- Switched to using softprops/action-gh-release for creating releases and uploading assets.
- Added macOS dependency installation step for UI tests and refined CMake configurations for better build control.
- Enhanced packaging steps to include documentation and assets in the release artifacts.
This commit is contained in:
scawful
2025-09-26 22:15:13 -04:00
parent 1057a3f037
commit 75186d97c6

View File

@@ -19,8 +19,7 @@ jobs:
name: Create Release name: Create Release
runs-on: ubuntu-latest runs-on: ubuntu-latest
outputs: outputs:
upload_url: ${{ steps.create_release.outputs.upload_url }} tag_name: ${{ github.ref_name || github.event.inputs.tag }}
release_id: ${{ steps.create_release.outputs.id }}
steps: steps:
- name: Checkout code - name: Checkout code
@@ -36,19 +35,28 @@ jobs:
VERSION_NUM=$(echo "$VERSION" | sed 's/^v//') VERSION_NUM=$(echo "$VERSION" | sed 's/^v//')
# Generate release notes using the dedicated script # Generate release notes using the dedicated script
python3 scripts/extract_changelog.py "$VERSION_NUM" > release_notes.md echo "Extracting changelog for version: $VERSION_NUM"
if python3 scripts/extract_changelog.py "$VERSION_NUM" > release_notes.md; then
echo "Changelog extracted successfully"
echo "Release notes content:"
cat release_notes.md
else
echo "Failed to extract changelog, creating default release notes"
echo "# Yaze $VERSION Release Notes\n\nPlease see the full changelog at docs/C1-changelog.md" > release_notes.md
fi
- name: Create Release - name: Create Release
id: create_release id: create_release
uses: actions/create-release@v1 uses: softprops/action-gh-release@v1
env: env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with: with:
tag_name: ${{ github.ref_name || github.event.inputs.tag }} tag_name: ${{ github.ref_name || github.event.inputs.tag }}
release_name: Yaze ${{ github.ref_name || github.event.inputs.tag }} name: Yaze ${{ github.ref_name || github.event.inputs.tag }}
body_path: release_notes.md body_path: release_notes.md
draft: false draft: false
prerelease: ${{ contains(github.ref_name || github.event.inputs.tag, 'beta') || contains(github.ref_name || github.event.inputs.tag, 'alpha') || contains(github.ref_name || github.event.inputs.tag, 'rc') }} prerelease: ${{ contains(github.ref_name || github.event.inputs.tag, 'beta') || contains(github.ref_name || github.event.inputs.tag, 'alpha') || contains(github.ref_name || github.event.inputs.tag, 'rc') }}
generate_release_notes: true
build-release: build-release:
name: Build Release name: Build Release
@@ -66,7 +74,7 @@ jobs:
package_cmd: | package_cmd: |
mkdir package mkdir package
cp -r build/bin/Release/* package/ cp -r build/bin/Release/* package/
cp assets/yaze.png package/ cp -r assets package/
cp LICENSE package/ cp LICENSE package/
cp README.md package/ cp README.md package/
cd package && 7z a ../yaze-windows-x64.zip * cd package && 7z a ../yaze-windows-x64.zip *
@@ -81,7 +89,7 @@ jobs:
package_cmd: | package_cmd: |
mkdir package mkdir package
cp -r build/bin/Release/* package/ cp -r build/bin/Release/* package/
cp assets/yaze.png package/ cp -r assets package/
cp LICENSE package/ cp LICENSE package/
cp README.md package/ cp README.md package/
cd package && 7z a ../yaze-windows-x86.zip * cd package && 7z a ../yaze-windows-x86.zip *
@@ -96,7 +104,7 @@ jobs:
mkdir -p "Yaze.app/Contents/MacOS" mkdir -p "Yaze.app/Contents/MacOS"
mkdir -p "Yaze.app/Contents/Resources" mkdir -p "Yaze.app/Contents/Resources"
cp build/bin/yaze "Yaze.app/Contents/MacOS/" cp build/bin/yaze "Yaze.app/Contents/MacOS/"
cp assets/yaze.png "Yaze.app/Contents/Resources/" cp -r assets "Yaze.app/Contents/Resources/"
cp cmake/yaze.plist.in "Yaze.app/Contents/Info.plist" cp cmake/yaze.plist.in "Yaze.app/Contents/Info.plist"
# Create DMG # Create DMG
@@ -104,6 +112,7 @@ jobs:
cp -r Yaze.app dmg_staging/ cp -r Yaze.app dmg_staging/
cp LICENSE dmg_staging/ cp LICENSE dmg_staging/
cp README.md dmg_staging/ cp README.md dmg_staging/
cp -r docs dmg_staging/
hdiutil create -srcfolder dmg_staging -format UDZO -volname "Yaze v0.3.0" yaze-macos.dmg hdiutil create -srcfolder dmg_staging -format UDZO -volname "Yaze v0.3.0" yaze-macos.dmg
- name: "Linux x64" - name: "Linux x64"
@@ -114,6 +123,7 @@ jobs:
mkdir package mkdir package
cp build/bin/yaze package/ cp build/bin/yaze package/
cp -r assets package/ cp -r assets package/
cp -r docs package/
cp LICENSE package/ cp LICENSE package/
cp README.md package/ cp README.md package/
tar -czf yaze-linux-x64.tar.gz -C package . tar -czf yaze-linux-x64.tar.gz -C package .
@@ -151,6 +161,12 @@ jobs:
libxinerama-dev \ libxinerama-dev \
libxi-dev libxi-dev
- name: Install macOS dependencies
if: runner.os == 'macOS'
run: |
# Install Homebrew dependencies needed for UI tests and full builds
brew install pkg-config libpng boost abseil ninja
- name: Set up vcpkg (Windows) - name: Set up vcpkg (Windows)
if: runner.os == 'Windows' if: runner.os == 'Windows'
uses: lukka/run-vcpkg@v11 uses: lukka/run-vcpkg@v11
@@ -163,7 +179,12 @@ jobs:
run: | run: |
cmake -B build \ cmake -B build \
-DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} \ -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} \
-DCMAKE_POLICY_VERSION_MINIMUM=3.16 \
-DYAZE_BUILD_TESTS=OFF \ -DYAZE_BUILD_TESTS=OFF \
-DYAZE_BUILD_EMU=OFF \
-DYAZE_ENABLE_UI_TESTS=ON \
-DYAZE_ENABLE_ROM_TESTS=OFF \
-DYAZE_ENABLE_EXPERIMENTAL_TESTS=OFF \
-GNinja -GNinja
- name: Configure CMake (Windows) - name: Configure CMake (Windows)
@@ -171,7 +192,12 @@ jobs:
run: | run: |
cmake -B build ^ cmake -B build ^
-DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} ^ -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} ^
-DCMAKE_POLICY_VERSION_MINIMUM=3.16 ^
-DYAZE_BUILD_TESTS=OFF ^ -DYAZE_BUILD_TESTS=OFF ^
-DYAZE_BUILD_EMU=OFF ^
-DYAZE_ENABLE_UI_TESTS=ON ^
-DYAZE_ENABLE_ROM_TESTS=OFF ^
-DYAZE_ENABLE_EXPERIMENTAL_TESTS=OFF ^
-DCMAKE_TOOLCHAIN_FILE=vcpkg/scripts/buildsystems/vcpkg.cmake ^ -DCMAKE_TOOLCHAIN_FILE=vcpkg/scripts/buildsystems/vcpkg.cmake ^
-DVCPKG_TARGET_TRIPLET=${{ matrix.vcpkg_triplet }} ^ -DVCPKG_TARGET_TRIPLET=${{ matrix.vcpkg_triplet }} ^
-G "${{ matrix.cmake_generator }}" ^ -G "${{ matrix.cmake_generator }}" ^
@@ -188,14 +214,13 @@ jobs:
# Upload to release # Upload to release
- name: Upload Release Asset - name: Upload Release Asset
uses: actions/upload-release-asset@v1 uses: softprops/action-gh-release@v1
env: env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with: with:
upload_url: ${{ needs.create-release.outputs.upload_url }} tag_name: ${{ github.ref_name || github.event.inputs.tag }}
asset_path: ./${{ matrix.artifact_name }}.* files: |
asset_name: ${{ matrix.artifact_name }}.${{ runner.os == 'Windows' && 'zip' || (runner.os == 'macOS' && 'dmg' || 'tar.gz') }} ${{ matrix.artifact_name }}.*
asset_content_type: application/octet-stream
publish-packages: publish-packages:
name: Publish Packages name: Publish Packages
@@ -205,15 +230,9 @@ jobs:
steps: steps:
- name: Update release status - name: Update release status
uses: actions/github-script@v7 run: |
with: echo "Release has been published successfully"
script: | echo "All build artifacts have been uploaded"
github.rest.repos.updateRelease({
owner: context.repo.owner,
repo: context.repo.repo,
release_id: ${{ needs.create-release.outputs.release_id }},
draft: false
});
- name: Announce release - name: Announce release
run: | run: |