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

问题描述 投票:0回答:2

我在

gitlab-ci.yml
中运行了几个 docker 命令。 其中一些需要将当前机器 IP 地址传递给它们,如下所示:

docker build --pull -t my_image . --add-host=<my service>:<current ip>

$CI_SERVER_HOSTNAME
不是那个,它的值是
gitlab.com
。我需要 CI 机器的实际 IP 地址,因为
ifconfig
可以从
.gitlab-cy.yml
文件中看到它。

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

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

docker gitlab ip gitlab-ci
2个回答
1
投票

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

GET /runners/:id

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

jq
sed


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

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

0
投票

我不知道这个问题的答案,但我很想尝试 Tolis Gerodimos 的解决方案,因为我们使用 AWS EC2 实例作为 Gilab 运行器。虽然curl表达式运行完美,但结果似乎返回了docker容器的IP,而不是物理机。

curl 返回给 Gitlab API 的 IP:44.226.186.3

EC2 实例数据中标注的 IP:10.0.*

© www.soinside.com 2019 - 2024. All rights reserved.