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

问题描述

我在各种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何时可用?

更令人困惑的是用于发布到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

我如何知道要使用哪一个? 总的来说,你怎么知道哪些是可用的,有什么不同?


解决方案

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

编写工作流并包括操作时,我建议查看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)和其他操作。

通常,您希望坚持使用上面描述的标记。尤其是引用@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"

相关文章