在 Script 部分的 .gitlab-ci.yml 中调用 GO 二进制文件并捕获响应

Posted

技术标签:

【中文标题】在 Script 部分的 .gitlab-ci.yml 中调用 GO 二进制文件并捕获响应【英文标题】:Call GO binary in .gitlab-ci.yml inside Script section and capture response 【发布时间】:2020-05-20 04:12:29 【问题描述】:

我正在寻找一种从 .gitlab-ci.yml 文件中调用 main.go 文件的方法。 Main.go 接受标志并返回布尔值。

从bash,我可以在下面执行

go run ./cmd/main.go -timeout=10

It displays true/ false values.

现在从我的.gitlab-ci.yml 文件中,我想调用上面的程序。我们已经有了工作设置(docker 图像),所有的 GO/SH 二进制文件都将被放置在其中。所以.gitlab-ci.yml 文件知道上面程序的位置。只是我没有找到在脚本部分的.gitlab-ci.yml 中调用上述二进制文件的方法。我应该能够捕获 GO 二进制文件的返回响应。

【问题讨论】:

您是否在自托管运行器中运行您的工作? Runner、docker 图像、执行所需的 Infra 是自托管的。所以从 Git YML,我可以调用 go run binary。但是,我面临的问题是捕获 main.go 返回的输出并处理 【参考方案1】:

有一种简单的调试方法(这只适用于自托管运行器)

在你的 .gitlab-ci.yml 中设置

script:
  - tail -f /dev/null
  - your commands
  - your commands ...

运行此作业后,您的跑步者将冻结,您将能够在跑步者容器内进行连接

docker (or kubectl) exec -it <your runner container> bash

在此之后,您可以调试和测试您的所有命令,您将知道您的命令无法正常工作的原因,您可以稍后在您的 gitlab 文件中修复它

【讨论】:

以上是关于在 Script 部分的 .gitlab-ci.yml 中调用 GO 二进制文件并捕获响应的主要内容,如果未能解决你的问题,请参考以下文章

在 Script 部分的 .gitlab-ci.yml 中调用 GO 二进制文件并捕获响应

部分脚本或常规 <script> 取决于请求类型

js script type 部分属性值分析

GEOIP SCRIPT 转发部分不工作

Javascript基本概念

以下函数中的哪些部分使其成为异步的?