Repository navigation
Release #1
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 | |
| # 发布流水线:tag 推送(v*,通常由 tag.yml 一键发版触发)或手动指定已存在 tag。 | |
| # 结构(借鉴 byte-code release.yml):矩阵构建只产出 artifacts, | |
| # 汇聚 job 集中生成 changelog(cliff 经文件传 body)与 sha256 后统一挂 Release。 | |
| # 产物命名 bcode-<target>.<ext> 与 [package.metadata.binstall] 模板对应, | |
| # 配好 repository 字段后 `cargo binstall bcode` 即可直装。 | |
| on: | |
| push: | |
| tags: ['v*'] | |
| workflow_dispatch: | |
| inputs: | |
| tag: | |
| description: '发布标签(如 v0.1.0,需已推送)' | |
| required: true | |
| permissions: | |
| contents: write | |
| jobs: | |
| build: | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - { os: ubuntu-latest, target: x86_64-unknown-linux-gnu, archive: tar.gz } | |
| - { os: windows-latest, target: x86_64-pc-windows-msvc, archive: zip } | |
| - { os: macos-latest, target: aarch64-apple-darwin, archive: tar.gz } | |
| - { os: macos-latest, target: x86_64-apple-darwin, archive: tar.gz } | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: dtolnay/rust-toolchain@stable | |
| with: | |
| targets: ${{ matrix.target }} | |
| - uses: Swatinem/rust-cache@v2 | |
| with: | |
| key: ${{ matrix.target }} | |
| # tag 触发时按 tag 注入版本,保证二进制与发布版本一致(build.rs 消费) | |
| - name: Build | |
| shell: bash | |
| run: | | |
| V=${GITHUB_REF_NAME#v} | |
| [ "$V" = "${GITHUB_REF_NAME}" ] && V="" # 非 tag 触发则走 git describe 兜底 | |
| BCODE_VERSION=$V cargo build --release --target ${{ matrix.target }} | |
| - name: Package | |
| shell: bash | |
| run: | | |
| set -euo pipefail | |
| T=${{ matrix.target }} | |
| EXT="" | |
| [[ "$T" == *windows* ]] && EXT=".exe" | |
| STAGE="bcode-$T" | |
| mkdir -p "$STAGE" | |
| cp "target/$T/release/bcode$EXT" "$STAGE/" | |
| cp README.md "$STAGE/" | |
| if [[ "${{ matrix.archive }}" == "zip" ]]; then | |
| powershell Compress-Archive -Path "$STAGE" -DestinationPath "$STAGE.zip" | |
| else | |
| tar czf "$STAGE.tar.gz" "$STAGE" | |
| fi | |
| - uses: actions/upload-artifact@v4 | |
| with: | |
| name: dist-$T | |
| path: bcode-${{ matrix.target }}.* | |
| release: | |
| needs: build | |
| runs-on: ubuntu-latest | |
| steps: | |
| # cliff 生成发版说明需要全历史与 tag | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| fetch-tags: true | |
| - name: Generate changelog | |
| uses: orhun/git-cliff-action@v4 | |
| id: cliff | |
| with: | |
| config: cliff.toml | |
| args: --latest --strip header | |
| env: | |
| # 多行 body 经文件传给 release 最稳(byte-code b750e45 同款结论) | |
| OUTPUT: CHANGELOG.md | |
| GITHUB_REPO: ${{ github.repository }} | |
| - name: Download artifacts | |
| uses: actions/download-artifact@v4 | |
| with: | |
| path: . | |
| merge-multiple: true | |
| - name: Checksums | |
| run: | | |
| ls -la bcode-* | |
| for f in bcode-*.tar.gz bcode-*.zip; do | |
| [ -e "$f" ] || continue | |
| sha256sum "$f" > "$f.sha256" | |
| done | |
| cat bcode-*.sha256 | |
| - name: Create release | |
| uses: softprops/action-gh-release@v2 | |
| with: | |
| tag_name: ${{ inputs.tag || github.ref_name }} | |
| body_path: CHANGELOG.md | |
| files: | | |
| bcode-*.tar.gz | |
| bcode-*.zip | |
| bcode-*.sha256 |