fix: package full skills directory in release archives #8
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: Release | |
| # 觸發條件:只有在推送以 'v' 開頭的標籤(例如 v1.0.0, v0.1.0-beta)時才會執行 | |
| on: | |
| push: | |
| tags: | |
| - 'v*' | |
| # 權限配置:必須賦予寫入權限,否則 GITHUB_TOKEN 無法創建 Release 草稿和上傳壓縮檔 | |
| permissions: | |
| contents: write | |
| jobs: | |
| # 任務 1:創建 GitHub Release 頁面實體 | |
| create-release: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Create GitHub Release | |
| uses: taiki-e/create-gh-release-action@v1 | |
| with: | |
| # 會自動抓取觸發工作流的 tag 名稱來創建 Release | |
| token: ${{ secrets.GITHUB_TOKEN }} | |
| # 任務 2:針對各個平台編譯並上傳二進位檔案 | |
| upload-assets: | |
| needs: create-release | |
| # 編譯矩陣:定義我們需要同時在哪幾個作業系統上,編譯出哪些目標架構的檔案 | |
| strategy: | |
| matrix: | |
| include: | |
| # 1. Linux (GNU): 依賴系統 glibc,適合主流桌面版 Linux (Ubuntu/Debian) | |
| - target: x86_64-unknown-linux-gnu | |
| os: ubuntu-latest | |
| # 2. Linux (MUSL) [新增]: 全靜態連結,無 glibc 依賴!適合 Alpine 容器或老舊 Linux 伺服器 | |
| - target: x86_64-unknown-linux-musl | |
| os: ubuntu-latest | |
| # 3. macOS (Intel): 支援老款 Mac | |
| - target: x86_64-apple-darwin | |
| os: macos-latest | |
| # 4. macOS (Apple Silicon): 原生支援 M1/M2/M3 晶片,展現極致效能 | |
| - target: aarch64-apple-darwin | |
| os: macos-latest | |
| # 5. Windows: 原生 .exe 執行檔 | |
| - target: x86_64-pc-windows-msvc | |
| os: windows-latest | |
| # 根據矩陣動態分配運行此 Job 的伺服器 (Ubuntu, Mac, 或是 Windows) | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| # 針對 Linux MUSL 目標,需要安裝 musl-tools 才能進行編譯 | |
| - name: Install musl-tools (Linux only) | |
| if: matrix.target == 'x86_64-unknown-linux-musl' | |
| run: sudo apt-get update && sudo apt-get install -y musl-tools | |
| # 確保發布包可包含專案文檔與 skills 目錄(即使目錄暫時為空) | |
| - name: Ensure packaging assets | |
| shell: bash | |
| run: | | |
| mkdir -p skills | |
| if [ ! -f skills/.gitkeep ]; then | |
| touch skills/.gitkeep | |
| fi | |
| - name: Verify packaging assets | |
| shell: bash | |
| run: | | |
| test -f LICENSE | |
| test -f README.md | |
| test -f README_zh.md | |
| test -d skills | |
| test -f skills/nanoskills_project_builder/nanoskills_project_builder.md | |
| test -f skills/nanoskills_usage_guide/nanoskills_usage_guide.md | |
| - name: Build and Upload Binary | |
| # 這個神級 Action 會自動處理 Rust 工具鏈安裝、編譯(--release)、打包(tar.gz/zip) 並上傳到 Release 頁面 | |
| uses: taiki-e/upload-rust-binary-action@v1 | |
| with: | |
| # 請確認這裡的 bin 名稱與你 Cargo.toml 裡的 package name 或 [[bin]] name 一致 | |
| bin: nanoskills | |
| target: ${{ matrix.target }} | |
| # 額外打包資產(README / LICENSE / skills) | |
| include: >- | |
| LICENSE,README.md,README_zh.md,skills | |
| tar: all | |
| zip: all | |
| token: ${{ secrets.GITHUB_TOKEN }} |