1

我在各种 GitHub Action 工作流示例中注意到,通常在调用预定义操作(使用uses:语法)时,会指定该操作的特定版本。例如:

steps:
    - uses: actions/checkout@v2
    - name: Set up Python
      uses: actions/setup-python@v2
      with:
        python-version: '3.x'

上述工作流程@v2同时指定actions/checkoutactions/setup-python

问题是,如何知道这@v2是最好的版本?
我怎么知道什么时候@v3可用?

更令人困惑的是用于发布到pypi的操作的情况,pypa/gh-action-pypi-publish. 在我看过的例子中,我看到了至少四个不同的版本:

  • pypa/gh-action-pypi-publish@27b31702a0e7fc50959f5ad993c78deac1bdfc29
  • pypa/gh-action-pypi-publish@master
  • pypa/gh-action-pypi-publish@v1
  • pypa/gh-action-pypi-publish@release/v1

我怎么知道该使用哪一个? 一般来说,你怎么知道哪些是可用的,有什么区别?

4

2 回答 2

4

如何知道使用哪个版本?

在编写工作流程并包含操作时,我建议查看GitHub 存储库上的“发布”选项卡。对于actions/setup-python,那将是https://github.com/actions/setup-python/releases

在该页面上,您应该看到有哪些版本以及最新版本是什么。您想使用最新版本,因为这样可以确保您不会落后并且将来升级不会变得太痛苦。

如何引用一个版本?

按照惯例,动作发布时带有特定标签(例如v1.0.1)以及主要标签(例如v1)。这使您可以像这样引用一个动作actions/setup-python@v1。一旦版本v1.0.2发布,您将自动使用该版本。这意味着您可以从错误修复和新功能中获利,但无法进行重大更改。

但是,请注意,这只是惯例。并非每个动作的作者都会发布主要标签并随着新标签的发布而移动。此外,作者可能会在不影响主要版本的情况下引入重大更改。

何时使用其他格式

正如您所说,还有其他方法可以引用诸如特定提交(例如actions/setup-python@27b31702a0e7fc50959f5ad993c78deac1bdfc29)等操作。

通常,您希望坚持使用上述标签。特别是,引用@mainor@master是危险的,因为您将始终获得最新的更改,这可能会破坏您的工作流程。如果有一个操作建议您引用他们的默认分支并且他们不发布标签,我建议在他们的 GitHub 存储库中创建一个问题,要求发布标签。

如果您需要使用特定版本,则使用 git 哈希会很有用。一个用例可能是您想要测试特定版本是否可以解决问题,或者您是否看到操作的作者已经推送了一些新的提交,其中的更改尚未标记。然后,您可以测试该版本的操作。

如何知道什么时候有新版本?

您可以为此使用 Dependabot:使用 Dependabot使您的操作保持最新。Dependabot 是一种工具,它可以在您的任何操作的新版本可用时立即在您的存储库中创建拉取请求,以便您可以查看更改内容并保持工作流程最新。

这是一个示例 Dependabot 配置,它通过创建 PR 使您的操作保持最新:

version: 2
updates:
  - package-ecosystem: "github-actions"
    directory: "/"
    schedule:
      interval: "daily"
于 2021-12-02T08:53:23.270 回答
2

人们应该习惯这种基于标签的发布管理(其他示例,如 Docker),如此类文章中所述

用户如何知道要使用哪个标签?通常操作文档文件包含要使用的推荐版本,因此 99% 的用户应该遵循它。如果你想生活在最前沿,你只需要使用其他标签。

于 2021-12-02T01:00:56.083 回答