【问题标题】:Preferred way to bundle shell scripts with a GitHub Action将 shell 脚本与 GitHub 操作捆绑在一起的首选方式
【发布时间】:2021-01-26 18:15:59
【问题描述】:

我正在使用 TypeScript 开发一个简单的 GitHub Action,它在 PATH 中安装 ANTLR 4 jar 可执行文件,还添加了 .NET 构建任务使用的特定环境变量。

它可以工作,但我正在考虑添加 bash/batch/powershell 脚本,以便更直接地使用该工具。 官方ANTLR websiteGitHub repo 都记录了每个平台的一些示例脚本,但没有提供官方可下载的脚本。 我已经在the README of my repo 中将这些示例调整为 Action 设置,我现在正在考虑将它们与 Action 捆绑在一起。

我想知道哪种方法是捆绑脚本的最佳方式:

  • 将脚本直接添加到dist文件夹,并与编译好的JS文件一起分发; 之后,我可以简单地使用@actions/io 将这些文件复制到@actions/tool-cache 生成的工具缓存文件夹中。

    我喜欢这个想法,但我不知道将其他文件与 JS 脚本捆绑在一起是否被认为是一种不好的做法,因为每次使用该操作时它们都会被拉取。

  • 将脚本作为字符串添加到 TypeScript 代码中,并使用 @actions/exec 在工具缓存文件夹中生成脚本。

    我真的喜欢这个想法,因为我觉得它无法维护。

  • 从 GitHub 存储库下载脚本,该存储库可能是 Action 的存储库,可能来自运行版本的同一标记,也可能是专用存储库或 Gist。

    另外,我可能会针对 ANTLR 官方 repo 打开一个问题,以检查是否有兴趣添加官​​方脚本位置。

一般而言,将 shell 脚本与 GitHub Action 捆绑在一起的首选方式是什么?对于我的具体问题,哪种方式最可行?

【问题讨论】:

  • 虽然不是直接针对您的问题,但 Antlr 使用 CMake 为 C++ 目标构建,从 Internet、Java 和 Antlr 运行时的源中提取依赖项。我认为这可能与具有 Maven 和 Java 目标的 Antlr 类似。对于 Antlr4BuildTasks 来说,这可能是正确的做法吗?
  • 是的,在 JVM 项目中,我通常使用 Gradle 从 Maven 获取 ANTLR 依赖项;我不知道 CMake 是如何处理这个问题的,但对我来说它也从互联网上提取 JAR 是有意义的。我认为在 Antlr4BuildTasks 中有一个选项可以从 Maven(更好)或网站中提取指定版本的 ANTLR 4 jar 会很棒。

标签: typescript github-actions


【解决方案1】:

当 GitHub 运行您的操作时,它会检查您的操作,因此您可以使用 __dirname 访问存储在您的操作存储库中的脚本。

您可以在我的 carthage-workaround 操作中看到一个示例。

【讨论】:

  • 请在此处提供一个示例,而不是通过链接。
猜你喜欢
  • 2018-07-03
  • 2022-09-27
  • 1970-01-01
  • 1970-01-01
  • 2014-01-26
  • 2023-03-27
  • 2019-07-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多