如何知道要使用哪个版本的 GitHub 操作

How to know what version of a GitHub Action to use

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

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

以上工作流程为 actions/checkoutactions/setup-python.

指定了 @v2

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

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

我怎么知道该使用哪一个? 一般来说,您如何知道哪些可用,有何区别?

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

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

如何知道要使用哪个版本?

在编写工作流程并包含操作时,我建议查看 GitHub 存储库中的 Release 选项卡。对于 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)和其他方式。

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

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

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

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

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

version: 2
updates:
  - package-ecosystem: "github-actions"
    directory: "/"
    schedule:
      interval: "daily"