gitlab管道:获取gitlab-ci.yml中的主机名

Swi*_*avy 6 ip gitlab docker gitlab-ci

我在gitlab-ci.yml. 其中一些需要将当前计算机 IP 地址传递给它们,如下所示:

docker build --pull -t my_image . --add-host=<my service>:<current ip>
Run Code Online (Sandbox Code Playgroud)

$CI_SERVER_HOSTNAME不是 1,它的值是gitlab.com。我需要 CI 机器的实际 IP 地址,就像ifconfig.gitlab-cy.yml文件中看到的那样。

我没有找到任何 $CI_... 变量。我知道从 ifconfig 中提取是可能的,但是当 docker 命令在 Mac 上逐一执行时,它将不起作用。

注意:我知道它通常类似于 172.0.0.x,但需要一个精确的加号,我想知道它的变量是否存在。

Tol*_*mos 1

为了获取runner执行的机器的ip地址。
我们将使用 Gitlab API https://docs.gitlab.com/ee/api/runners.html#get-runners-details

GET /runners/:id
Run Code Online (Sandbox Code Playgroud)

此 API 调用将返回具有特定:id的跑步者的详细信息。当作业执行时,此 id 可在CI_RUNNER_ID预定义变量中使用。通过结合所有这些并利用jq我们sed

得到以下一个衬垫,它返回正在执行当前作业的运行程序的 IP 地址

curl -s --header "PRIVATE-TOKEN: <your access token>" https://gitlab.com/api/v4/runners/${CI_RUNNER_ID}  | jq '.ip_address' | sed 's/^"\(.*\)"$/\1/'
Run Code Online (Sandbox Code Playgroud)