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

app publish-action

使用Github Action自动发布Cargo

27次发布

0.3.5 2024年5月20日
0.2.3 2023年11月20日
0.2.2 2023年6月8日
0.2.1 2023年3月30日
0.1.14 2022年6月12日

140测试

Download history 579/week @ 2024-05-14 188/week @ 2024-05-21 1/week @ 2024-05-28 18/week @ 2024-07-02 59/week @ 2024-07-23 30/week @ 2024-07-30

每月89 次下载

MIT 许可证

1MB
19K SLoC

JavaScript 19K SLoC // 0.2% comments Rust 339 SLoC // 0.1% comments

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,并复制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

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

支持多个项目 +0.3

添加yaml文件.github/publish.yml,例如

projects:
  - name: project1
    #dir: "."
    tag_prefix: "v"

  - name: project2
    dir: "/project2/"
    tag_prefix: "p2v_"

  - name: project3
    dir: "/project3/"
    tag_prefix: "p3v_"

如果 dir 为空,则默认为根目录;如果 tag_prefix 为空,则标签前缀为无,并且最终标签仅为 x.x.x .

依赖关系

~68MB
~1.5M SLoC