name: Release on: push: tags: - 'v*' permissions: contents: write jobs: build-and-release: name: Build ${{ matrix.platform }} runs-on: ${{ matrix.os }} strategy: matrix: include: - os: macos-latest platform: darwin/amd64 artifact_name: GoNavi-mac-amd64 - os: macos-latest platform: darwin/arm64 artifact_name: GoNavi-mac-arm64 - os: windows-latest platform: windows/amd64 artifact_name: GoNavi-windows-amd64 steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup Go uses: actions/setup-go@v5 with: go-version: '1.24' check-latest: true - name: Setup Node uses: actions/setup-node@v4 with: node-version: '20' - name: Install Wails run: go install github.com/wailsapp/wails/v2/cmd/wails@latest - name: Build shell: bash run: | wails build -platform ${{ matrix.platform }} -clean -o ${{ matrix.artifact_name }} - name: Package macOS Application if: contains(matrix.platform, 'darwin') run: | cd build/bin echo "📂 列出 build/bin 目录内容:" ls -F # Find .app bundle APP_NAME=$(find . -maxdepth 1 -name "*.app" | head -n 1) if [ -z "$APP_NAME" ]; then echo "❌ 未找到 .app 应用包!" exit 1 fi echo "📦 正在压缩 $APP_NAME..." zip -r "../../${{ matrix.artifact_name }}.zip" "$APP_NAME" - name: Package Windows Executable if: contains(matrix.platform, 'windows') shell: bash run: | cd build/bin echo "📂 列出 build/bin 目录内容:" ls -F TARGET="${{ matrix.artifact_name }}" if [ -f "$TARGET.exe" ]; then echo "✅ 找到 $TARGET.exe" FINAL_EXE="$TARGET.exe" elif [ -f "$TARGET" ]; then echo "⚠️ 找到无后缀文件 $TARGET,正在添加 .exe 后缀..." mv "$TARGET" "$TARGET.exe" FINAL_EXE="$TARGET.exe" else echo "❌ 未找到构建产物 '$TARGET'!" exit 1 fi echo "📦 正在移动 $FINAL_EXE 到根目录..." mv "$FINAL_EXE" "../../${{ matrix.artifact_name }}.exe" - name: Upload Release Asset uses: softprops/action-gh-release@v2 if: startsWith(github.ref, 'refs/tags/') with: files: | ${{ matrix.artifact_name }}.zip ${{ matrix.artifact_name }}.exe env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}