我按照本指南创建了一个特定的跑步者:Install using official GitLab repositories(Linux)。我能够在我们公司的GitLab中成功注册跑步者。
我还为gradle项目提供了 .gitlab-ci.yml 。基本上它就像这样简单:
image: java:8-jdk
before_script:
- export GRADLE_USER_HOME=`pwd`/.gradle
build:
stage: build
script:
- ./gradlew assemble
test:
stage: test
script:
- ./gradlew check
一旦GitLab看到这个文件,它就开始运行一个构建但是失败了:
$ ./gradlew assemble
Downloading https://services.gradle.org/distributions/gradle-2.12-bin.zip
Exception in thread "main" java.net.UnknownHostException: services.gradle.org
我通过更新本地 /etc/gitlab-runner/config.toml 中的 extra_hosts 解决了这个问题:
[runners.docker]
tls_verify = false
image = "ruby:2.1"
privileged = false
disable_cache = false
volumes = ["/cache"]
extra_hosts = ["git.my.company.com:xxx.xxx.xxx.xxx","services.gradle.org:207.223.250.8","downloads.gradle.org:54.240.162.161","repo1.maven.org:151.101.36.209"]
[runners.cache]
正如您所看到的,我必须为构建期间使用的每个主机名执行此操作。现在我可以使用GitLab CI运行构建,但我必须提供这种繁琐的设置。我宁愿看到跑步者从DNS中提取IP地址。
有没有人遇到同样的问题?有没有已知的解决方案?
提前致谢
修改
我可以将DNS设置添加到跑步者配置中:
[runners.docker]
tls_verify = false
image = "ruby:2.1"
privileged = false
disable_cache = false
volumes = ["/cache"]
dns = ["<my company's DNS IP>"]
我仍然想知道为什么我需要这些设置。我的意思是跑步者正在运行的系统也知道如何在没有进一步配置的情况下解析主机名。