【发布时间】:2021-01-26 18:15:59
【问题描述】:
我正在使用 TypeScript 开发一个简单的 GitHub Action,它在 PATH 中安装 ANTLR 4 jar 可执行文件,还添加了 .NET 构建任务使用的特定环境变量。
它可以工作,但我正在考虑添加 bash/batch/powershell 脚本,以便更直接地使用该工具。 官方ANTLR website 和GitHub 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 会很棒。