Gitlabs CI Runner无法解析主机名

时间:2016-09-06 10:32:11

标签: dns continuous-integration gitlab gitlab-ci-runner

我按照本指南创建了一个特定的跑步者: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>"]

我仍然想知道为什么我需要这些设置。我的意思是跑步者正在运行的系统也知道如何在没有进一步配置的情况下解析主机名。

0 个答案:

没有答案