name: 多平台打包发布 on: push: tags: - 'v*' workflow_dispatch: inputs: version: description: '版本号 (如 v1.0.0)' required: false default: 'dev' jobs: build: name: 打包 ${{ matrix.os }} runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: include: - os: windows-latest artifact_name: codex-register.exe asset_name: codex-register-v2-windows-x64.exe - os: ubuntu-latest artifact_name: codex-register asset_name: codex-register-v2-linux-x64 - os: macos-latest artifact_name: codex-register asset_name: codex-register-v2-macos-arm64 steps: - name: 检出代码 uses: actions/checkout@v4 - name: 设置 Python 3.11 uses: actions/setup-python@v5 with: python-version: '3.11' cache: 'pip' - name: 安装依赖 run: | pip install -r requirements.txt pyinstaller - name: 打包 run: | pyinstaller codex_register.spec --clean --noconfirm - name: 上传构建产物 uses: actions/upload-artifact@v4 with: name: ${{ matrix.asset_name }} path: dist/${{ matrix.artifact_name }} if-no-files-found: error release: name: 创建发布 needs: build runs-on: ubuntu-latest if: startsWith(github.ref, 'refs/tags/') permissions: contents: write steps: - name: 检出代码(获取附加文件) uses: actions/checkout@v4 - name: 下载所有构建产物 uses: actions/download-artifact@v4 with: path: dist/ - name: 整理文件并打包 zip run: | mkdir -p release # download-artifact@v4 将每个 artifact 放在 dist// 子目录下 # 遍历子目录,用目录名作为平台标识(即 matrix.asset_name) for artifact_dir in dist/*/; do platform=$(basename "$artifact_dir") # 找到该目录下的二进制文件(只有一个) binary=$(find "$artifact_dir" -maxdepth 1 -type f | head -n1) if [ -z "$binary" ]; then echo "警告:$artifact_dir 下没有找到文件,跳过" continue fi tmpdir="tmp_${platform}" mkdir -p "$tmpdir" cp "$binary" "$tmpdir/" cp README.md "$tmpdir/README.md" cp .env.example "$tmpdir/.env.example" [ -f LICENSE ] && cp LICENSE "$tmpdir/LICENSE" || true cd "$tmpdir" zip -r "../release/${platform}.zip" . cd .. rm -rf "$tmpdir" done ls -lh release/ - name: 创建 GitHub Release uses: softprops/action-gh-release@v2 with: files: release/* generate_release_notes: true body: | ## OpenAI 账号管理系统 v2 ### 下载说明 | 平台 | 文件 | |------|------| | Windows x64 | `codex-register-v2-windows-x64.exe` | | Linux x64 | `codex-register-v2-linux-x64` | | macOS ARM64 | `codex-register-v2-macos-arm64` | ### 使用方法 ```bash # Linux/macOS 需要先赋予执行权限 chmod +x codex-register-* # 启动 Web UI ./codex-register # 指定端口 ./codex-register --port 8080 # 调试模式(热重载) ./codex-register --debug # 设置 Web UI 访问密钥 ./codex-register --access-password mypassword ```