Rust 使用 GitHub 流水線發佈包

GitHub 流水線功能是比較方便用來做自動化的,常見的有單元測試、覆蓋率報告或圖標生成、docker 鏡像構建、npm 發佈等。當然也可以用來發布 Rust 包到 https://crates.io。

它主要依賴於 publish-action 這個庫。

首先,在項目根目錄下,新建一個文件.github/workflows/release.yaml

name: Publish to Cargo

on:
  push:
    # branches: [ main ]
    # paths:
    #   - 'src/'
    tags:
      - '**'

jobs:
  publish:
    runs-on: ubuntu-latest

    name: 'publish'

    # Reference your environment variables
    environment: cargo

    steps:
      - uses: actions/checkout@master

      # Use caching to speed up your build
      - name: Cache publish-action bin
        id: cache-publish-action
        uses: actions/cache@v3
        env:
          cache-name: cache-publish-action
        with:
          path: ~/.cargo
          key: ${{ runner.os }}-build-${{ env.cache-name }}-v0.2.0

      # install publish-action by cargo in github action
      - name: Install publish-action
        if: steps.cache-publish-action.outputs.cache-hit != 'true'
        run:
          cargo install publish-action --version=0.2.0
      
      - name: Run publish-action
        id: publish-action
        run:
          publish-action
        env:
          # This can help you tagging the github repository
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          # This can help you publish to crates.io
          CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}

      #- name: Update Changelog.md
      #  if: steps.publish-action.outputs.new_version == 'true' && steps.publish-action.outputs.publish == 'true'
      #  run: |
      #    changelog -o Changelog.md

這個表示,只有打 tag 時纔會觸發任務。詳見:https://github.com/tu6ge/publish-action

進入 Github 上這個項目的 settings 頁面,找到環境變量 environments,新增一個名稱叫 cargo:

添加你在 cargo 上的密鑰:這個密鑰是在這裏生成的 https://crates.io/settings/tokens

最終在 github 的 action 中可以看到:

我這是已經發布成功了,之所以流水線失敗是因爲 commit 信息太短了。

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/1FrU1EGRsFulcGlLHO3pFw