fix(*) #190
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: app-build-action | |
| on: | |
| workflow_dispatch: | |
| inputs: | |
| tag_name: | |
| description: 'Tag name for the release' | |
| required: false | |
| default: 'v1.0.0' | |
| push: | |
| tags: | |
| - "v*" | |
| jobs: | |
| build-android: | |
| runs-on: macos-latest | |
| steps: | |
| - name: 签出代码 | |
| uses: actions/checkout@v4 | |
| with: | |
| ref: ${{ github.event.inputs.tag_name || github.ref }} | |
| - name: 下载Android keystore | |
| id: android_keystore | |
| uses: timheuer/base64-to-file@v1.2 | |
| with: | |
| fileName: key.jks | |
| encodedString: ${{ secrets.KEYSTORE_BASE64 }} | |
| - name: 创建key.properties | |
| run: | | |
| echo "storeFile=${{ steps.android_keystore.outputs.filePath }}" > android/key.properties | |
| echo "storePassword=${{ secrets.STORE_PASSWORD }}" >> android/key.properties | |
| echo "keyPassword=${{ secrets.KEY_PASSWORD }}" >> android/key.properties | |
| echo "keyAlias=${{ secrets.KEY_ALIAS }}" >> android/key.properties | |
| - name: 设置JAVA环境 | |
| uses: actions/setup-java@v4 | |
| with: | |
| distribution: 'zulu' | |
| java-version: "17" | |
| cache: 'gradle' | |
| - name: 设置Flutter环境 | |
| uses: subosito/flutter-action@v2 | |
| with: | |
| channel: stable | |
| cache: true | |
| - name: 更新Flutter的packages | |
| run: flutter pub get | |
| - name: 打包APK | |
| run: flutter build apk --release --split-per-abi | |
| - name: 上传APK至Artifacts | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: android-apks | |
| path: | | |
| build/app/outputs/flutter-apk/app-armeabi-v7a-release.apk | |
| build/app/outputs/flutter-apk/app-arm64-v8a-release.apk | |
| build/app/outputs/flutter-apk/app-x86_6x-release.apk | |
| retention-days: 1 | |
| build-windows: | |
| runs-on: windows-latest | |
| steps: | |
| - name: 签出代码 | |
| uses: actions/checkout@v4 | |
| with: | |
| ref: ${{ github.event.inputs.tag_name || github.ref }} | |
| - name: 设置Flutter环境 | |
| uses: subosito/flutter-action@v2 | |
| with: | |
| channel: stable | |
| cache: true | |
| - name: 启用Flutter桌面支持 | |
| run: flutter config --enable-windows-desktop | |
| - name: 更新Flutter的packages | |
| run: flutter pub get | |
| - name: Install Inno Setup 6 | |
| run: | | |
| $url = "https://jrsoftware.org/download.php/is.exe" | |
| $output = "${{ runner.temp }}\innosetup.exe" | |
| Invoke-WebRequest -Uri $url -OutFile $output | |
| Start-Process -FilePath $output -ArgumentList "/VERYSILENT", "/SUPPRESSMSGBOXES", "/NORESTART" -Wait | |
| echo "C:\Program Files (x86)\Inno Setup 6" >> $env:GITHUB_PATH | |
| - name: Copy Chinese language pack | |
| run: | | |
| $source = "windows\packaging\exe\ChineseSimplified.isl" | |
| $target = "C:\Program Files (x86)\Inno Setup 6\Languages\ChineseSimplified.isl" | |
| if (Test-Path $source) { Copy-Item $source $target -Force } | |
| - name: Install fastforge | |
| run: dart pub global activate fastforge | |
| - name: Get version from pubspec.yaml | |
| id: get_version | |
| shell: pwsh | |
| run: | | |
| $lines = Get-Content pubspec.yaml | |
| foreach ($line in $lines) { | |
| if ($line -match '^\s*version:\s*(\S+)') { | |
| $v = $matches[1] -replace '[`"''`]', '' | |
| "version=$v" | Out-File -FilePath $env:GITHUB_OUTPUT -Encoding utf8 -Append | |
| exit 0 | |
| } | |
| } | |
| Write-Error "Version not found"; exit 1 | |
| - name: Package Windows exe | |
| run: fastforge package --platform windows --targets exe | |
| - name: Rename installer | |
| run: | | |
| $VERSION = "${{ steps.get_version.outputs.version }}" | |
| $SRC = Get-ChildItem "dist\$VERSION" -Filter "*.exe" | Select-Object -First 1 | |
| Copy-Item $SRC.FullName "PureLive-$VERSION-windows-x64-setup.exe" | |
| - name: 上传Windows安装包 | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: windows-installer | |
| path: PureLive-${{ steps.get_version.outputs.version }}-windows-x64-setup.exe | |
| retention-days: 1 | |
| build-macos: | |
| runs-on: macos-latest | |
| steps: | |
| - name: 签出代码 | |
| uses: actions/checkout@v4 | |
| with: | |
| ref: ${{ github.event.inputs.tag_name || github.ref }} | |
| - name: 设置Flutter环境 | |
| uses: subosito/flutter-action@v2 | |
| with: | |
| channel: stable | |
| cache: true | |
| - name: 更新Flutter的packages | |
| run: flutter pub get | |
| - name: Build macOS | |
| run: flutter build macos --release | |
| - name: Get version from pubspec.yaml | |
| id: get_version | |
| run: | | |
| VERSION=$(grep '^version:' pubspec.yaml | sed 's/version: //; s/[`"'"'"']//g') | |
| echo "version=$VERSION" >> $GITHUB_OUTPUT | |
| - name: Install create-dmg | |
| run: brew install create-dmg | |
| - name: Create DMG | |
| run: | | |
| create-dmg \ | |
| --volname "PureLive" \ | |
| --window-pos 200 120 \ | |
| --window-size 800 400 \ | |
| --icon-size 100 \ | |
| --app-drop-link 600 185 \ | |
| "PureLive-${{ steps.get_version.outputs.version }}-macOS.dmg" \ | |
| "build/macos/Build/Products/Release/纯粹直播.app" | |
| - name: 上传DMG | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: macos-dmg | |
| path: PureLive-${{ steps.get_version.outputs.version }}-macOS.dmg | |
| retention-days: 1 | |
| publish-release: | |
| runs-on: ubuntu-latest | |
| needs: [build-android, build-windows, build-macos] | |
| permissions: | |
| contents: write | |
| steps: | |
| - name: 签出代码(用于读取 version.json) | |
| uses: actions/checkout@v4 | |
| with: | |
| ref: ${{ github.event.inputs.tag_name || github.ref }} | |
| - name: 下载所有构建产物 | |
| uses: actions/download-artifact@v4 | |
| with: | |
| path: artifacts | |
| - name: 读取版本描述 | |
| id: version | |
| uses: juliangruber/read-file-action@v1 | |
| with: | |
| path: assets/version.json | |
| - name: 构建 Release Body | |
| id: release_body | |
| run: | | |
| cat << 'EOF' > release_body.txt | |
| # 纯粹直播 ${{ github.ref_name }} | |
| 开源无广告、无病毒,杀毒软件误报可自行斟酌使用。 | |
| ### 📥 快速下载 | |
| |版本|下载地址| | |
| |---|---| | |
| |TV版|[pure_live_TV](https://github.com/liuchuancong/pure_live_TV/releases/latest)| | |
| |Windows/macOS/Android版|[pure_live](https://github.com/liuchuancong/pure_live/releases/latest)| | |
| ### 🖥️ Windows 版 | |
| - 适配:Win10/11 (x64),自动创建桌面快捷方式 | |
| - 功能:多直播源、WebDAV、弹幕显示 | |
| - 快捷键:空格(播放/暂停) \| ESC(全屏切换) \| 上下键(音量) \| R(刷新) | |
| ### 🍎 macOS 版 | |
| 感谢 RebornQ 开发 | 适配:macOS 10.15+ (x64) | 同 Windows 核心功能 | |
| ### 📱 Android 版 | |
| 适配:Android 6.0+ | 功能:WebDAV、多播放器切换、弹幕、应用内更新 | |
| ### 📺 TV 版 | |
| 适配:Android TV 6.0+ | 功能:直播源同步、多播放器、弹幕、应用内更新 | |
| ### 📝 本次更新 | |
| ${{ fromJson(steps.version.outputs.content).version_desc }} | |
| EOF | |
| echo "body_path=$(pwd)/release_body.txt" >> $GITHUB_OUTPUT | |
| - name: 上传至 Release | |
| uses: softprops/action-gh-release@v2.2.1 | |
| with: | |
| name: ${{ github.event.inputs.tag_name || github.ref_name }} | |
| body_path: ${{ steps.release_body.outputs.body_path }} | |
| prerelease: false | |
| token: ${{ secrets.TOKEN }} | |
| files: | | |
| artifacts/android-apks/app-armeabi-v7a-release.apk | |
| artifacts/android-apks/app-arm64-v8a-release.apk | |
| artifacts/android-apks/app-x86_64-release.apk | |
| artifacts/windows-installer/*.exe | |
| artifacts/macos-dmg/*.dmg | |
| - name: 输出状态 | |
| if: always() | |
| run: 'echo "✅ Release published with status: ${{ job.status }}"' |