为什么我们可以在 GitHub 工作流程中运行 Bash 脚本,为什么选择 GitHub Action?

4

刚刚完成了一个使用更多action和一个bash脚本的GitHub workflow。

在编写workflow时,与使用actions相比,使用bash脚本似乎更快。因为有些actions只是做一件事情。那么使用GitHub actions而不是bash脚本或python脚本触发的原因是什么?

还是说我们应该大部分时间都使用脚本语言,然后在整个workflow中只用GitHub actions处理小部分内容呢?


有趣的问题。你的工作流程是用来做什么的?你能分享一个小例子吗? - Christian
2个回答

2

有趣但不容易回答,需要更多关于您目标的信息。正确的答案可能取决于您的用例。

让我试着解释一下,从比较高的层面开始。

1. GitHub Actions 是什么?

来自this "What is GitHub Actions? Benefits and examples" PDF file

GitHub Actions 是 GitHub 流程的 CI/CD 工具。您可以使用它将代码更改集成和部署到第三方云应用程序平台,以及测试、跟踪和管理代码更改。GitHub Actions 还支持第三方 CI/CD 工具、容器平台 Docker 和其他自动化平台。

来自docs.github.com

GitHub Actions 是一个持续集成和持续交付(CI/CD)平台,可以让您自动化构建、测试和部署流程。您可以创建工作流程,对存储库中的每个拉取请求进行构建和测试,或将合并后的拉取请求部署到生产环境中。[...] GitHub Actions 不仅限于 DevOps ,还可以在存储库发生其他事件时运行工作流程。
2. 持续集成 / 持续部署(CI/CD)
通常,在执行此操作时,人们会运行 CI/CD 工具来构建、部署、测试和运行其他任务。我们使用另外一个第三方 CI/CD 管道使用 Rake 来构建、测试和检查链接。我们的管道调用您提到的这些小脚本。
3. GitHub actions 和脚本
来自 GitHub Actions 的基本功能 如果您的工作生成文件,您想要与同一工作流程中的另一个工作共享文件,或者想要将文件保存供以后参考,您可以将它们存储在GitHub中作为构件。构件是在构建和测试代码时创建的文件。例如,构件可能包括二进制或软件包文件、测试结果、屏幕截图或日志文件等。构件与创建它们的工作流运行相关联,并且可以被另一个工作使用。所有在运行内调用的操作和工作流都具有对该运行构件的写入访问权限。
这里是关键点,我猜。您可以在工作流程中真正做很多疯狂的事情。所有这些都与GitHub相关。工作流程是事件驱动的,这意味着您可以在指定事件发生后运行一系列命令。例如,每当有人创建拉取请求时,您可以自动运行执行测试或其他脚本的命令。
4. GitHub行动工作流和脚本
您可以在工作流程中包含不同的脚本,例如使用

5. (复杂) 示例

您可以查看docs.github.com的存储库以获取更多复杂示例,请参见action-scriptsworkflow文件夹。GitHub似乎自己也在大量使用它。

6. GitHub actions的优缺点

或:与其他CI工具的区别

花了一些时间才找到一些非营销性的东西。关键点是:

  • 使用YAML配置文件适合初学者
  • 无需设置自己的CI管道

您可以查看这篇来自2019年的SO帖子,了解GitHub Actions的优缺点清单。


1
简而言之 - 为了可读性和DRY(“不要重复自己”)原则。 这与在编程中使用函数或多或少相同。 我可以同意一些琐碎的操作是无用的。 但是,“actions/checkout”例如是无价的!

Bash 也有函数。您可以编写一个 Bash 脚本,以与“actions/checkout”相同的可读性和可重用性封装相同的功能。该论点站不住脚。 - Louis T

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接