name: 构建多平台可执行程序 on: push: branches: - main jobs: build: name: Build for ${{ matrix.os }} runs-on: ${{ matrix.os }} strategy: matrix: include: - os: windows-latest executable: ogame-windows.exe - os: ubuntu-latest executable: ogame-linux - os: macos-latest executable: ogame-macos steps: - uses: actions/checkout@v4 - name: Setup Bun uses: oven-sh/setup-bun@v2 with: bun-version: latest # 获取 package.json 中的版本号 - name: Get version id: get_version shell: bash run: | VERSION=$(node -p "require('./package.json').version") echo "VERSION=v$VERSION" >> $GITHUB_OUTPUT - name: Install Dependencies run: bun install # 构建前端 Vue 项目 - name: Build Vue Frontend run: bun run build # 编译单文件二进制程序 - name: Compile Single Executable run: | bun build ./server.js --compile --minify --outfile ${{ matrix.executable }} - name: Upload Artifact uses: actions/upload-artifact@v4 with: name: ${{ matrix.executable }} path: ${{ matrix.executable }} outputs: app_version: ${{ steps.get_version.outputs.VERSION }} release: needs: build runs-on: ubuntu-latest permissions: contents: write steps: - name: Download all artifacts uses: actions/download-artifact@v4 - name: Create GitHub Release uses: softprops/action-gh-release@v1 with: tag_name: ${{ needs.build.outputs.app_version }} name: Release ${{ needs.build.outputs.app_version }} files: | ogame-windows.exe/ogame-windows.exe ogame-linux/ogame-linux ogame-macos/ogame-macos generate_release_notes: true env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}