fix build3 #44
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 and Release by Platform | ||
| on: | ||
| push: | ||
| tags: | ||
| - "v*" # 当推送标签(如 v1.0.0)时触发 | ||
| workflow_dispatch: # 手动触发 | ||
| jobs: | ||
| # 针对 Ubuntu 构建 | ||
| build-linux: | ||
| name: Build for Linux | ||
| runs-on: ubuntu-latest | ||
| steps: | ||
| - name: Checkout Code | ||
| uses: actions/checkout@v4 | ||
| - name: Setup Node.js | ||
| uses: actions/setup-node@v3 | ||
| with: | ||
| node-version: 20.18.0 | ||
| cache: npm | ||
| - name: Install Dependencies | ||
| run: npm install | ||
| - name: Build Linux Package | ||
| run: npm run make | ||
| - name: Debug Output Directory | ||
| run: ls -R out/make | ||
| - name: Find .deb, .rpm and .zip files | ||
| id: find_packages | ||
| run: | | ||
| # 查找文件路径 | ||
| DEB_FILE=$(find out/make -type f -name "*.deb" | head -n 1) | ||
| echo $DEB_FILE | ||
| RPM_FILE=$(find out/make -type f -name "*.rpm" | head -n 1) | ||
| echo $RPM_FILE | ||
| LINUX_ZIP_FILE=$(find out/make -type f -name "*.zip" | head -n 1) | ||
| echo $LINUX_ZIP_FILE | ||
| # 输出路径供后续步骤使用 | ||
| echo "DEB_FILE=$DEB_FILE" >> $GITHUB_ENV | ||
| echo "RPM_FILE=$RPM_FILE" >> $GITHUB_ENV | ||
| echo "LINUX_ZIP_FILE=$LINUX_ZIP_FILE" >> $GITHUB_ENV | ||
| - name: Upload .deb Package | ||
| uses: actions/upload-artifact@v4 | ||
| if: ${{ env.DEB_FILE }} | ||
| with: | ||
| name: linux-deb-package | ||
| path: ${{ env.DEB_FILE }} | ||
| - name: Upload .rpm Package | ||
| uses: actions/upload-artifact@v4 | ||
| if: ${{ env.RPM_FILE }} | ||
| with: | ||
| name: linux-rpm-package | ||
| path: ${{ env.RPM_FILE }} | ||
| - name: Upload .zip Package | ||
| uses: actions/upload-artifact@v4 | ||
| if: ${{ env.LINUX_ZIP_FILE }} | ||
| with: | ||
| name: linux-zip-package | ||
| path: ${{ env.LINUX_ZIP_FILE }} | ||
| # 针对 Windows 构建 | ||
| build-windows: | ||
| name: Build for Windows | ||
| runs-on: windows-2019 | ||
| steps: | ||
| - name: Checkout Code | ||
| uses: actions/checkout@v4 | ||
| - name: Setup Node.js | ||
| uses: actions/setup-node@v3 | ||
| with: | ||
| node-version: 20.18.0 | ||
| cache: npm | ||
| - name: Install Dependencies | ||
| run: npm install | ||
| - name: Build Windows Package | ||
| run: npm run make | ||
| - name: Debug Output Directory | ||
| run: ls -R out/make | ||
| - name: Find exe and zip files | ||
| id: find_packages | ||
| run: | | ||
| # 使用 PowerShell 命令查找 .exe 文件 | ||
| $EXE_FILE = Get-ChildItem -Path "out/make" -Recurse -Filter "*.exe" | Select-Object -First 1 | ||
| echo "EXE_FILE=$($EXE_FILE.FullName)" >> $env:GITHUB_ENV | ||
| $WIN_ZIP_FILE = Get-ChildItem -Path "out/make" -Recurse -Filter "*.zip" | Select-Object -First 1 | ||
| echo "WIN_ZIP_FILE=$($WIN_ZIP_FILE.FullName)" >> $env:GITHUB_ENV | ||
| - name: Upload .exe Package | ||
| uses: actions/upload-artifact@v4 | ||
| if: ${{ env.EXE_FILE }} | ||
| with: | ||
| name: windows-exe-package | ||
| path: ${{ env.EXE_FILE }} | ||
| - name: Upload .zip Package | ||
| uses: actions/upload-artifact@v4 | ||
| if: ${{ env.WIN_ZIP_FILE }} | ||
| with: | ||
| name: windows-zip-package | ||
| path: ${{ env.WIN_ZIP_FILE }} | ||
| # 针对 macOS 构建 | ||
| build-macos: | ||
| name: Build for macOS | ||
| runs-on: macos-latest | ||
| steps: | ||
| - name: Checkout Code | ||
| uses: actions/checkout@v4 | ||
| - name: Setup Node.js | ||
| uses: actions/setup-node@v3 | ||
| with: | ||
| node-version: 20.18.0 | ||
| cache: npm | ||
| - name: Install Dependencies | ||
| run: npm install | ||
| - name: Build macOS Package | ||
| run: npm run make | ||
| - name: Debug Output Directory | ||
| run: ls -R out/make | ||
| - name: Find zip files | ||
| id: find_packages | ||
| run: | | ||
| # 查找 .zip 文件路径 | ||
| ZIP_FILE=$(find out/make -type f -name "*.zip" | head -n 1) | ||
| echo $ZIP_FILE | ||
| # 输出路径供后续步骤使用 | ||
| echo "ZIP_FILE=$ZIP_FILE" >> $GITHUB_ENV | ||
| - name: Upload MAC M1 ZIP Package | ||
| uses: actions/upload-artifact@v4 | ||
| if: ${{ env.ZIP_FILE }} | ||
| with: | ||
| name: macos-package | ||
| path: ${{ env.ZIP_FILE }} | ||
| build-macos-intel: | ||
| name: Build for macOS intel | ||
| runs-on: macos-13 | ||
| steps: | ||
| - name: Checkout Code | ||
| uses: actions/checkout@v4 | ||
| - name: Setup Node.js | ||
| uses: actions/setup-node@v3 | ||
| with: | ||
| node-version: 20.18.0 | ||
| cache: npm | ||
| - name: Install Dependencies | ||
| run: npm install | ||
| - name: Build macOS Package | ||
| run: npm run make | ||
| - name: Debug Output Directory | ||
| run: ls -R out/make | ||
| - name: Find zip files | ||
| id: find_packages | ||
| run: | | ||
| # 查找 .zip 文件路径 | ||
| ZIP_FILE=$(find out/make -type f -name "*.zip" | head -n 1) | ||
| echo $ZIP_FILE | ||
| # 输出路径供后续步骤使用 | ||
| echo "ZIP_FILE=$ZIP_FILE" >> $GITHUB_ENV | ||
| - name: Upload MAC Intel ZIP Package | ||
| uses: actions/upload-artifact@v4 | ||
| if: ${{ env.ZIP_FILE }} | ||
| with: | ||
| name: macos-intel-package | ||
| path: ${{ env.ZIP_FILE }} | ||
| # 发布到 GitHub Release | ||
| release: | ||
| name: Release Artifacts | ||
| needs: [build-linux, build-windows, build-macos, build-macos-intel] | ||
| runs-on: ubuntu-latest | ||
| permissions: | ||
| contents: write | ||
| steps: | ||
| - uses: actions/checkout@v4 | ||
| # ======================== | ||
| # 下载所有 artifacts | ||
| # ======================== | ||
| - name: Download Linux .deb Artifact | ||
| uses: actions/download-artifact@v4 | ||
| with: | ||
| name: linux-deb-package | ||
| path: dist/linux | ||
| - name: Download Linux .rpm Artifact | ||
| uses: actions/download-artifact@v4 | ||
| with: | ||
| name: linux-rpm-package | ||
| path: dist/linux | ||
| - name: Download Linux .zip Artifact | ||
| uses: actions/download-artifact@v4 | ||
| with: | ||
| name: linux-zip-package | ||
| path: dist/linux | ||
| - name: Download Windows .exe Artifact | ||
| uses: actions/download-artifact@v4 | ||
| with: | ||
| name: windows-exe-package | ||
| path: dist/windows | ||
| - name: Download Windows .zip Artifact | ||
| uses: actions/download-artifact@v4 | ||
| with: | ||
| name: windows-zip-package | ||
| path: dist/windows | ||
| - name: Download macOS Artifact | ||
| uses: actions/download-artifact@v4 | ||
| with: | ||
| name: macos-package | ||
| path: dist/macos | ||
| - name: Download macOS Intel Artifact | ||
| uses: actions/download-artifact@v4 | ||
| with: | ||
| name: macos-intel-package | ||
| path: dist/macos-intel | ||
| - name: Check download result | ||
| run: ls -R dist | ||
| # ======================== | ||
| # 创建 Release | ||
| # ======================== | ||
| - name: Create Release | ||
| run: | | ||
| gh release create "${{ github.ref_name }}" \ | ||
| --title "${{ github.ref_name }}" \ | ||
| --notes "" \ | ||
| --draft=false \ | ||
| --prerelease=false | ||
| env: | ||
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
| # ======================== | ||
| # 上传所有文件 (自动扫描) | ||
| # ======================== | ||
| - name: Upload All Artifacts | ||
| run: | | ||
| echo "Uploading Linux files..." | ||
| for file in dist/linux/*; do | ||
| echo "Uploading $file" | ||
| gh release upload "${{ github.ref_name }}" "$file" | ||
| done | ||
| echo "Uploading Windows files..." | ||
| for file in dist/windows/*; do | ||
| echo "Uploading $file" | ||
| gh release upload "${{ github.ref_name }}" "$file" | ||
| done | ||
| echo "Uploading macOS ARM files..." | ||
| for file in dist/macos/*; do | ||
| echo "Uploading $file" | ||
| gh release upload "${{ github.ref_name }}" "$file" | ||
| done | ||
| echo "Uploading macOS Intel files..." | ||
| for file in dist/macos-intel/*; do | ||
| echo "Uploading $file" | ||
| gh release upload "${{ github.ref_name }}" "$file" | ||
| done | ||
| env: | ||
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||