【问题标题】:curl: (6) Could not resolve host: 'http gitlab-ci runnercurl:(6)无法解析主机:'http gitlab-ci runner
【发布时间】:2020-11-19 17:24:46
【问题描述】:

我正在尝试从 gitlab-ci.yml 文件调用 API。我正在尝试确定错误消息是否过早中断,或者 curl 命令是否未正确从脚本中读取变量。

leapwork:
  stage: leapwork
  tags:
    - docker
  script:
    - echo "Run the Schedule"
    - echo "$LEAPWORK_URL"
    - echo "$LW_SCHEDULE_ID"
    - echo "$LW_RUNNOW"
    - echo "$LEAPWORK_ACCESS_KEY"
    - partial_url=${LEAPWORK_URL}${LW_SCHEDULE_ID}${LW_RUNNOW}?api_key\=${LEAPWORK_ACCESS_KEY}
    - headerAccess="--header 'AccessKey:${LEAPWORK_ACCESS_KEY}'"
    - headerJSON="--header 'Accept:application/json'"
    - curlString="${headerJSON} ${headerAccess} '${partial_url}'"
    - echo "passed the assignment"
    - echo ${partial_url}
    - echo $headerAccess
    - echo $headerJSON
    - echo $curlString
    - run_id=$(`curl -s -S -X GET ${curlString}`)

这是生成的输出

$ echo "Run the Schedule"
Run the Schedule
$ echo "$LEAPWORK_URL"
http://xxx.xxx.xx.xxx:xxx/api/v4
$ echo "$LW_SCHEDULE_ID"
_disguised_parameter_
$ echo "$LW_RUNNOW"
/runNow
$ echo "$LEAPWORK_ACCESS_KEY"
_api_key_
$ partial_url=${LEAPWORK_URL}${LW_SCHEDULE_ID}${LW_RUNNOW}?api_key\=${LEAPWORK_ACCESS_KEY}
$ headerAccess="--header 'AccessKey:${LEAPWORK_ACCESS_KEY}'"
$ headerJSON="--header 'Accept:application/json'"
$ curlString="${headerJSON} ${headerAccess} '${partial_url}'"
$ echo "passed the assignment"
passed the assignment
$ echo ${partial_url}
http://xxx.xxx.xx.xxx:xxx/api/v4/disguised_parameter/runNow?api_key=_api_key_
$ echo $headerAccess
--header 'AccessKey:_api_key_'
$ echo $headerJSON
--header 'Accept:application/json'
$ echo $curlString
--header 'Accept:application/json' --header 'AccessKey:_api_key_' 'http://xxx.xxx.xx.xxx:xxx/api/v4/_disguised_parameter_/runNow?api_key=_api_key_'
$ run_id=$(`curl -s -S -X GET ${curlString}`)
curl: (6) Could not resolve host: 'http

对 curl 的错误消息有任何输入吗?可能是 curl 获得了带有参数的完整服务器地址,但它只是在错误消息中被切断了,还是 API 的地址被切断了?

感谢您的任何建议

【问题讨论】:

  • 在执行命令run_id=$(`curl -s -S -X GET ${curlString}`)时,尝试去掉反引号。我认为这会导致意外行为。要捕获命令的输出,它应该是 run_id=$(curl -s -S -X GET ${curlString})
  • 感谢您的建议。不幸的是,结果是一样的。

标签: curl gitlab-ci


【解决方案1】:

这个错误是因为主机不是已知的docker。

需要在config.toml的docker executor配置下的extra_hosts参数中添加域名和域ip

获取您要添加的主机的IP地址,因为您需要在extra_hosts参数中添加主机名和主机IP。

在您的 config.toml 中,进行如下更改:

[[runners]]
  name = "maven-docker"
  url = "https://<your-domain-name>/gitlab/"
  token = "MXvXVma55_Kw2o"
  executor = "docker"
  [runners.custom_build_dir]
  [runners.docker]
    tls_verify = false
    image = "maven:latest"
    privileged = true
    disable_entrypoint_overwrite = false
    oom_kill_disable = false
    disable_cache = false
    extra_hosts = ["<your-domain-name>:<your-domain-ip>"]
    pull_policy = "never"
    shm_size = 0
  [runners.cache]
    [runners.cache.s3]
    [runners.cache.gcs]
  [runners.custom]
    run_exec = ""

然后,使用命令 sudo gitlab-runner restartgitlab-runner restart 重新启动 gitlab 运行器

【讨论】:

    【解决方案2】:

    这个问题似乎是在 AWS 上运行所特有的情况。我必须在安全组的入站规则中创建一个条目,以允许来自安全组的特定端口上的流量。

    【讨论】:

      猜你喜欢
      • 2018-10-23
      • 2020-01-30
      • 1970-01-01
      • 1970-01-01
      • 2015-01-26
      • 1970-01-01
      • 2020-07-12
      • 2019-05-19
      相关资源
      最近更新 更多