# sql5 v2.4.2 - CI/CD Improvements
## Overview
v2.4.x 主要改進 CI/CD pipeline 和發布流程:
- 分離 PyPI 和 GitHub 發布
- 修復多平台 binary 上傳問題
- 優化發布腳本
## Changes from v2.0
### CI/CD Pipeline
**問題**: 最初嘗試在單一 job 中編譯多平台,但 cross-compilation 不可行。
**解決方案**: 改為三個獨立的 build jobs:
```yaml
build-macos: # runs-on: macos-latest
build-linux: # runs-on: ubuntu-latest
build-windows: # runs-on: windows-latest
```
每個 job 在正確的平台上編譯,然後合併到 `upload` job。
### Binary Naming Fix
**問題**: 上傳多個檔案時,因為檔名相同 (`sql5`),導致後續檔案覆蓋前面。
**解決方案**: 在上傳前重新命名:
```bash
cp artifacts/macos-arm64/sql5 artifacts/sql5-macos-arm64
cp artifacts/macos-x86_64/sql5 artifacts/sql5-macos-x86_64
cp artifacts/linux-x86_64/sql5 artifacts/sql5-linux-x86_64
cp artifacts/windows-x86_64/sql5.exe artifacts/sql5-windows.exe
```
### Publishing Separation
**問題**: 同時上傳到 PyPI 和 GitHub 導致版本號衝突。
**解決方案**: `pub.sh` 支援分開發布:
```bash
./pub.sh <version> pypi # 只上傳到 PyPI
./pub.sh <version> github # 只建立 GitHub tag
./pub.sh <version> all # 兩者都做
```
### Binary Download Improvement
更新 `_binary.py` 從 GitHub API 動態抓取最新 release 版本,而非寫死版本號。
## Version History
| v2.4.2 | 2026-05-04 | Final CI fixes |
| v2.4.1 | 2026-05-04 | CI improvements |
| v2.3.x | 2026-05-04 | CI refinements |
| v2.2.x | 2026-05-04 | Separate build jobs |
| v2.1.x | 2026-05-04 | Cross-compile attempts |
| v2.0.0 | 2026-05-04 | Client-server architecture |
## Files Changed
- `.github/workflows/release.yml` - CI pipeline
- `pub.sh` - Publishing script
- `sql5_pypi/sql5/_binary.py` - Dynamic version fetch
- `Cargo.toml` - Version updates
## Remaining Limitations (from v2.0)
- 每個 `Connection` 啟動一個 Rust subprocess
- 不支援多用戶並發
- IPC 延遲約 0.1-1ms
## See Also
- [v2.0.md](./v2.0.md) - Original client-server documentation
- [v3.0.md](./v3.0.md) - WebSocket server support