问题标签 [github-actions-runners]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
365 浏览

github - Github 为工作流运行而启动的每个虚拟机是否都会获得一个新的 IP 地址?

Github Actions 的工作方式是为每个工作流运行启动一个虚拟机。因此,每次运行都在不同的 VM 上进行。虚拟机在启动时通常会获得不同的 IP。但是,我找不到任何官方文档来说明 Github Actions 运行器 VM 是否属于这种情况。

0 投票
1 回答
410 浏览

github-actions - 在 GitHub Actions 中的每个运行器上运行作业

对于那些熟悉 Github Actions 的人...

目前,当作业运行时,它会根据标签和存储库为作业选择最合适的运行器(在工作流中使用自托管运行器 - GitHub Docs)。我的问题是是否有可能在每个满足工作要求的跑步者上运行一项工作。

例如,我有多个跑步者,既有自托管的,也有 Github 托管的;我有一份工作,其中包含一个脚本,当代码被推送到 repo 时,该脚本会执行以下操作:

  • 使用 actions/checkout@v2 签出 Git 存储库
  • 将文件从签出的 repo 复制到用户的主目录

这个“动作”需要发生在该动作可以访问的每个跑步者身上。

我希望这是有道理的!

0 投票
1 回答
4212 浏览

jenkins - github 操作 - 结帐操作中的问题

我是 github 动作跑步者的新手。我从 master 创建了一个 test-master 分支,另一个特性分支也从 master test-feature 中取出。我的 test-master 分支有一个与 terraform 相关的工作流程。但是,我在 git checkout 操作 PFB 代码和错误中遇到错误。

每当我尝试从 test-feature 向 test-master 提出拉取请求时,它都会运行工作流程并生成错误。错误:无法解析操作actions/checkout@test-master,无法找到版本test-master

请指导我为什么它不识别 test-maser 分支。

0 投票
1 回答
823 浏览

github - Github 操作/缓存工作在什么范围内?

我不太了解 Github操作/缓存的工作程度,我的意思是:

如果我发出拉取请求,然后在同一个拉取请求中添加 1 个更多提交,缓存工作正常,但如果我在同一个分支中创建一个新的拉取请求 - 缓存被重置并重新开始,但为什么呢?

有没有办法将文件缓存扩展到所有yml文件,以便每个拉取请求都使用现有的缓存?

因为为了加快工作速度,事实证明——开发人员总是需要将他们的工作集中到一个分支中,这听起来有点胡说八道。

信息

我的缓存密钥形成如下

0 投票
0 回答
545 浏览

github - 如何创建启动另一个 GitHub 操作工作流的 GitHub 操作工作流?

我有一个 Angular 应用程序,源代码存储在 GitHub 上。我想创建这个管道来部署代码:

  1. 将任何内容推送到deploy-test分支时,它会启动工作流程。
  2. GitHub 将创建一个跑步者
  3. Runner拉取代码
  4. Runner开始构建过程
  5. Runner 创建一个新的 git 分支,名为deploy-test-build
  6. Runner 将构建的文件推送到 GitHub 存储库。
  7. 自托管运行器监视deploy-test-build分支上的推送,它开始另一个工作流。

这是我的第一个动作文件:

这在最后一步有这个输出:

下一个:

但是这最后一个工作流程称为Deploy to test server未启动。

知道如何解决吗?

0 投票
0 回答
3477 浏览

continuous-integration - 用于并行运行步骤的 GitHub Action 工作流程

我正在做一个项目。我需要创建一个工作流来在 iOS 设备上运行集成测试。

场景: 我必须在某个端口上运行本地服务器,并且并行运行集成测试。

询问:

  1. 我可以在 Github Actions 中实现这一点吗?
  2. 如果是,那怎么办?

我会感谢你的帮助。

0 投票
1 回答
704 浏览

github-for-windows - Windows 上的 github 运行程序在 PowerShell 上找不到可执行文件

我正在尝试使用自托管的 Windows-VM 来运行 west 进行 repo 管理,使用 python 来运行一些脚本,并使用 git 来推回 repo。

工作是使用 python 从repo-A作为工件生成文件以签入repo-B。我不得不使用 Windows,因为文件生成工具只能在 Windows 上运行。

我有一个自托管的构建代理设置,并且能够在其上运行 github 操作。

在 VM 端,这些是相关命令的路径(表明它们已正确添加到 $PATH)

VM 的执行策略设置为:

从 VM 本身的 powerShell 执行时,所有脚本和执行步骤都运行良好。但是当我调用 github runner 时,行为表明它不知道可执行文件在哪里,尽管它是已知的$PATH(参见下面的调试输出)。

github运行脚本:

在 github runner 上运行时, echo ${env:PATH} 命令显示:

这意味着它应该有 python.exe 的位置

但是,所有尝试访问它的命令(即使使用绝对路径)都会返回如下错误:

我还尝试将 python 附加到 $GITHUB_PATH :

但这只是扩展了 echo ${env:PATH} 的输出,并且在执行时仍然导致相同的错误。

我错过了什么?

感谢大家的时间。

0 投票
1 回答
913 浏览

node.js - Node.js 应用程序的 Github 操作缓存不起作用

我正在 github 中配置 CI/CD,但遇到了缓存依赖项的问题。

附加了我的 Node.js 应用程序的 github 操作 lint 配置。

如您所见,我有一个名为的附加步骤build,用于使用actions/cache@v2. 然后在步骤eslintPrettier我使用restore-keys. 该脚本在 eslint 步骤上失败并出现错误:

我有 eslint 是我的 devDependencies 部分package.json

0 投票
1 回答
955 浏览

docker - 设置 QEMU 时出现 Github 操作错误 - 错误:无法找到可执行文件:docker

我正在构建一个工作流来测试、构建一个 docker 映像并将其推送到 GitHub 私有存储库。

我曾经在 ububntu-latest 上运行该操作并使用特定的 PHP 版本和一些环境构建,但由于它与生产构建不同,因此存在一些问题。

我想使用与生产相同的环境,所以我使用了一个使用 php7.3 的容器,我在 ubuntu-latest 上运行操作后调用了它

我现在面临的问题是在成功更新作曲家后,我无法调用默认步骤 tp build docker image。我在“设置 QEMU”步骤中收到此错误

这是我的行动

0 投票
1 回答
339 浏览

go - 从 golang 脚本中检索带有空格的 Github 机密

我想通过 Golang 从脚本中检索 Github 机密内容,该脚本是从 Github 操作执行的。在这种特殊情况下,存储在 Github secrets 中的秘密值有一个空格。我的意思是秘密值是:JWT <token-string>.

从任何语言的任何脚本中检索 Github 机密(只要它们在 Github 操作运行器中执行)的方法是将它们作为环境变量读取。所以我正在做的就是这样读:(请看Authorization:下面字符串切片中的元素)

问题是我在运行 Github action runner 时没有从 Github 机密中获得价值。我知道这种情况正在发生,因为我尝试以这种方式打印它,但没有任何结果:

恐怕它正在发生,因为"JWT "和令牌之间的空间,我的意思是JWT <token-string>

这里说:

机密名称只能包含字母数字字符([az]、[AZ]、[0-9])或下划线 (_)。不允许有空格。

作为一个重要的事实,我的令牌秘密值.在其值中也包含字符。值是这样的:

所以我相信,这就是我无法获得秘密价值的原因。

我不确定如何从我的 Golang 脚本中获取它,我什至尝试修改 Github 秘密值,只是将它作为一个值<token-string>来避免值中的空间,我以这种方式从 go 调用它:

但它没有用。我在这里读到,当从 github 操作中调用带有特殊字符的秘密时,我们必须用单引号对它们进行转义,' '但这个过程来自.yaml文件 github 操作。

我正在尝试的以前的解决方案替代方案,它们适用于我的本地机器,因为我的 bash cli 能够获取值中带有空格的环境变量。我不确定我怎么能 - 让我们说“转义” - 一个字符串中有空格的秘密,就像我从 golang 得到的那样。