#github-action #publish #cargo #ci-cd

app publish-action-p

使用 Github Action 自动发布 Cargo,源于 tu6ge/publish-action

3 个版本

0.2.5 2024年3月26日
0.2.4 2024年3月26日
0.2.3 2024年3月26日

#497开发工具

Download history 20/week @ 2024-06-30 51/week @ 2024-07-28

每月51 次下载

MIT 许可协议

31KB
272

publish-action

使用 Github Action 自动发布 Cargo

如果你有一个 cargo 仓库,当发布新版本时,通常需要以下步骤

  1. 在 Cargo.toml 中更新版本
  2. 标记仓库
  3. 发布到 crates.io
  4. 推送到 github

有时,我们会忘记标记 github 仓库。因此,我创建了 github action。

现在,你只需要在 Cargo.toml 中更新版本,在你推送到 github 后,github action 可以自动标记 github 仓库,并使用新版本发布到 crates.io。

在发布之前,你还可以运行测试用例。

输出(0.1.15 +)

运行操作后,你可以通过输出判断状态(是否有新版本,发布是否成功)。

  • new_version: 返回 'true' 或 'false'
  • publish: 返回 'true' 或 'false'

用法

  1. 你应在 https://crates.io/settings/tokens 创建一个 crates.io 的 token 并复制它。

  2. 打开你的仓库设置页面,找到环境设置页面(https://github.com/xxx/xxx/settings/environments)。创建一个名为 cargo 的新环境,并添加一个名为 CARGO_REGISTRY_TOKEN 的环境密钥,此值为第一步的 token。

  3. 打开操作设置,在 工作流权限 中选择 读取和写入权限 选项,并保存。

  4. 打开你本地的仓库路径,在 .github/workflows 路径下创建一个新的 github action 设置文件,例如:publish.yaml,并写入

name: Publish to Cargo

on:
  push:
    branches: [ master ]

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
  1. 你可以使用新的 github action 推送到 github。这样就完成了。

现在你更改 Cargo.toml,这将自动运行。

支持自定义注册表 +0.2

使用备用注册表,这是 文档

依赖关系

~88MB
~1.5M SLoC