feat(email): implement cancellation handling in email services #17
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: 多平台打包发布 | |
| 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/<asset_name>/ 子目录下 | |
| # 遍历子目录,用目录名作为平台标识(即 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 | |
| ``` |