docker - gitlab 管道:在 gitlab-ci.yml 中获取主机名
问题描述
我在gitlab-ci.yml
. 其中一些需要将当前机器 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,但需要一个确切的加号我想知道它的变量是否存在。
解决方案
为了得到执行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
我们得到以下一个衬垫,它返回正在执行当前作业的跑步者的 IP 地址
curl -s --header "PRIVATE-TOKEN: <your access token>" https://gitlab.com/api/v4/runners/${CI_RUNNER_ID} | jq '.ip_address' | sed 's/^"\(.*\)"$/\1/'
推荐阅读
- intellij-idea - 扫描仪不等待用户输入 - IntelliJ IDEA
- label - Amazon SageMaker Ground Truth 自定义标签作业错误:无法读取 null 的属性“taskInput”
- go - 连接到 Go Gin 时的 Angular 8 CORS
- java - 如何在 Android 应用中监听蓝牙耳机按钮?
- tcl - 如何通过 Tcl 语言创建临时 shellscript 文件和目录?
- sql - SQL Table 数十亿条目 - 寻找性能建议
- graphql - 错误:无效的 AST 节点:{"input":"** } on graphql 突变(放大客户端)
- javascript - 无法使用 Lightning 组件中的 FileReader 对象读取和上传文件
- node.js - JHipster 安装失败
- webpack - webpack 带有样式加载器的错误