chore: add Release Note template #4
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Build & Release | |
| on: | |
| push: | |
| tags: | |
| - "v*" | |
| workflow_dispatch: | |
| inputs: | |
| version: | |
| description: 'Release version (e.g., 1.0.0)' | |
| required: true | |
| type: string | |
| permissions: | |
| contents: write | |
| jobs: | |
| create-release: | |
| name: Create Release | |
| runs-on: ubuntu-latest | |
| outputs: | |
| version: ${{ steps.get_version.outputs.version }} | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Get version from tag | |
| id: get_version | |
| run: | | |
| if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then | |
| VERSION="${{ github.event.inputs.version }}" | |
| else | |
| VERSION=${GITHUB_REF_NAME#v} | |
| fi | |
| echo "version=$VERSION" >> $GITHUB_OUTPUT | |
| echo "Version: $VERSION" | |
| - name: Set timestamp | |
| id: timestamp | |
| run: | | |
| echo "TIMESTAMP=$(date +'%Y-%m-%d %H:%M:%S')" >> $GITHUB_OUTPUT | |
| - name: Create Release | |
| id: create_release | |
| uses: softprops/action-gh-release@v2 | |
| with: | |
| tag_name: ${{ github.event_name == 'workflow_dispatch' && format('v{0}', steps.get_version.outputs.version) || github.ref_name }} | |
| name: v${{ steps.get_version.outputs.version }} | |
| body: | | |
| ## Flutter Agent Panel v${{ steps.get_version.outputs.version }} | |
| **🚀 Build Date:** `${{ steps.timestamp.outputs.TIMESTAMP }}` | |
| ### 📥 Download | |
| | Platform | Asset | Description | | |
| | :--- | :--- | :--- | | |
| | **Windows (Setup)** | [EXE](https://github.com/${{ github.repository }}/releases/download/${{ github.event_name == 'workflow_dispatch' && format('v{0}', steps.get_version.outputs.version) || github.ref_name }}/flutter_agent_panel-${{ steps.get_version.outputs.version }}-windows-x86_64-setup.exe) | Standard Windows Installer | | |
| | **Windows (MSIX)** | [MSIX](https://github.com/${{ github.repository }}/releases/download/${{ github.event_name == 'workflow_dispatch' && format('v{0}', steps.get_version.outputs.version) || github.ref_name }}/flutter_agent_panel-${{ steps.get_version.outputs.version }}-windows-x86_64.msix) | Windows Store / Modern Package | | |
| | **macOS** | [DMG](https://github.com/${{ github.repository }}/releases/download/${{ github.event_name == 'workflow_dispatch' && format('v{0}', steps.get_version.outputs.version) || github.ref_name }}/flutter_agent_panel-${{ steps.get_version.outputs.version }}-macos-universal.dmg) | Universal Apple Disk Image | | |
| | **Linux** | [Tarball](https://github.com/${{ github.repository }}/releases/download/${{ github.event_name == 'workflow_dispatch' && format('v{0}', steps.get_version.outputs.version) || github.ref_name }}/flutter_agent_panel-${{ steps.get_version.outputs.version }}-linux-x86_64.tar.gz) | Gzipped Bundle | | |
| ### 📝 Changes | |
| See the auto-generated log below for all changes in this release. | |
| draft: false | |
| prerelease: false | |
| generate_release_notes: true | |
| build-windows: | |
| name: Build Windows | |
| needs: create-release | |
| runs-on: windows-latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Fetch Flutter config | |
| id: fvm | |
| uses: kuhnroyal/flutter-fvm-config-action@v3 | |
| - name: Setup Flutter | |
| uses: subosito/flutter-action@v2 | |
| with: | |
| flutter-version: ${{ steps.fvm.outputs.FLUTTER_VERSION }} | |
| channel: ${{ steps.fvm.outputs.FLUTTER_CHANNEL }} | |
| cache: true | |
| cache-key: "flutter-Windows-${{ steps.fvm.outputs.FLUTTER_VERSION }}" | |
| pub-cache-key: "flutter-pub-Windows-${{ steps.fvm.outputs.FLUTTER_VERSION }}" | |
| - name: Install dependencies | |
| run: flutter pub get | |
| - name: Generate code | |
| run: dart run lean_builder build --delete-conflicting-outputs | |
| - name: Analyze | |
| run: flutter analyze --no-fatal-infos | |
| - name: Build Windows | |
| run: flutter build windows --release | |
| - name: Create Windows Installer | |
| uses: Minionguyjpro/Inno-Setup-Action@v1.2.7 | |
| with: | |
| path: windows/installer.iss | |
| - name: Create MSIX | |
| run: dart run msix:create --build-windows false | |
| - name: Rename output files with version | |
| run: | | |
| $version = "${{ needs.create-release.outputs.version }}" | |
| Rename-Item -Path "build/windows/x64/runner/Release/Output/flutter_agent_panel_setup.exe" -NewName "flutter_agent_panel-$version-windows-x86_64-setup.exe" | |
| Rename-Item -Path "build/windows/x64/runner/Release/flutter_agent_panel.msix" -NewName "flutter_agent_panel-$version-windows-x86_64.msix" | |
| - name: Upload Release Asset (EXE) | |
| uses: softprops/action-gh-release@v2 | |
| with: | |
| tag_name: ${{ github.event_name == 'workflow_dispatch' && format('v{0}', needs.create-release.outputs.version) || github.ref_name }} | |
| files: build/windows/x64/runner/Release/Output/flutter_agent_panel-${{ needs.create-release.outputs.version }}-windows-x86_64-setup.exe | |
| - name: Upload Release Asset (MSIX) | |
| uses: softprops/action-gh-release@v2 | |
| with: | |
| tag_name: ${{ github.event_name == 'workflow_dispatch' && format('v{0}', needs.create-release.outputs.version) || github.ref_name }} | |
| files: build/windows/x64/runner/Release/flutter_agent_panel-${{ needs.create-release.outputs.version }}-windows-x86_64.msix | |
| build-macos: | |
| name: Build macOS | |
| needs: create-release | |
| runs-on: macos-latest | |
| env: | |
| ASSET_NAME: flutter_agent_panel-${{ needs.create-release.outputs.version }}-macos-universal.dmg | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v6 | |
| - name: Install create-dmg | |
| run: brew install create-dmg | |
| - name: Fetch Flutter config | |
| id: fvm | |
| uses: kuhnroyal/flutter-fvm-config-action@v3 | |
| - name: Setup Flutter | |
| uses: subosito/flutter-action@v2 | |
| with: | |
| flutter-version: ${{ steps.fvm.outputs.FLUTTER_VERSION }} | |
| channel: ${{ steps.fvm.outputs.FLUTTER_CHANNEL }} | |
| cache: true | |
| cache-key: "flutter-macOS-${{ steps.fvm.outputs.FLUTTER_VERSION }}" | |
| pub-cache-key: "flutter-pub-macOS-${{ steps.fvm.outputs.FLUTTER_VERSION }}" | |
| - name: Install dependencies | |
| run: flutter pub get | |
| - name: Generate code | |
| run: dart run lean_builder build --delete-conflicting-outputs | |
| - name: Analyze | |
| run: flutter analyze --no-fatal-infos | |
| - name: Build macOS | |
| run: flutter build macos --release | |
| - name: Create macOS DMG | |
| run: | | |
| cd build/macos/Build/Products/Release | |
| i=0 | |
| until [[ -e "${{ env.ASSET_NAME }}" ]]; do | |
| create-dmg \ | |
| --volname "Flutter Agent Panel" \ | |
| --window-pos 200 120 \ | |
| --window-size 800 400 \ | |
| --icon-size 100 \ | |
| --icon "flutter_agent_panel.app" 200 190 \ | |
| --hide-extension "flutter_agent_panel.app" \ | |
| --app-drop-link 600 185 \ | |
| "${{ env.ASSET_NAME }}" \ | |
| "flutter_agent_panel.app" || true | |
| if [[ $i -eq 10 ]]; then | |
| echo "Error: create-dmg did not succeed even after 10 tries." | |
| exit 1 | |
| fi | |
| i=$((i+1)) | |
| done | |
| - name: Upload Release Asset | |
| uses: softprops/action-gh-release@v2 | |
| with: | |
| tag_name: ${{ github.event_name == 'workflow_dispatch' && format('v{0}', needs.create-release.outputs.version) || github.ref_name }} | |
| files: build/macos/Build/Products/Release/${{ env.ASSET_NAME }} | |
| build-linux: | |
| name: Build Linux | |
| needs: create-release | |
| runs-on: ubuntu-latest | |
| env: | |
| ASSET_NAME: flutter_agent_panel-${{ needs.create-release.outputs.version }}-linux-x86_64.tar.gz | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v6 | |
| - name: Install Linux dependencies | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y clang cmake ninja-build pkg-config libgtk-3-dev liblzma-dev libstdc++-12-dev | |
| - name: Fetch Flutter config | |
| id: fvm | |
| uses: kuhnroyal/flutter-fvm-config-action@v3 | |
| - name: Setup Flutter | |
| uses: subosito/flutter-action@v2 | |
| with: | |
| flutter-version: ${{ steps.fvm.outputs.FLUTTER_VERSION }} | |
| channel: ${{ steps.fvm.outputs.FLUTTER_CHANNEL }} | |
| cache: true | |
| cache-key: "flutter-Linux-${{ steps.fvm.outputs.FLUTTER_VERSION }}" | |
| pub-cache-key: "flutter-pub-Linux-${{ steps.fvm.outputs.FLUTTER_VERSION }}" | |
| - name: Install dependencies | |
| run: flutter pub get | |
| - name: Generate code | |
| run: dart run lean_builder build --delete-conflicting-outputs | |
| - name: Analyze | |
| run: flutter analyze --no-fatal-infos | |
| - name: Build Linux | |
| run: flutter build linux --release | |
| - name: Compress Linux Bundle | |
| run: | | |
| cd build/linux/x64/release/bundle | |
| tar -czf "$GITHUB_WORKSPACE/${{ env.ASSET_NAME }}" * | |
| - name: Upload Release Asset | |
| uses: softprops/action-gh-release@v2 | |
| with: | |
| tag_name: ${{ github.event_name == 'workflow_dispatch' && format('v{0}', needs.create-release.outputs.version) || github.ref_name }} | |
| files: ${{ env.ASSET_NAME }} |