java.io.IOException: не удается запустить программу "curl": ошибка = 2, нет такого файла или каталога - PullRequest
0 голосов
/ 11 июня 2019

Я использую образ докера jenkins и развернул его в кластере kubernetes.Я написал Groovy-скрипт для запуска команды curl на динамически создаваемом ведомом устройстве на jenkins, а также настроил slave для запуска команд curl, но получаю вышеупомянутую ошибку в моей консоли jenkins.Я также проверил, установлен ли curl на моем подчиненном узле, используя where curl, он дает ответ как /usr/bin/curl.

Я попытался запустить только команду curl на моем подчиненном узле, это работает.Но когда я вызываю файл сценария groovy с помощью Jenkins, он выдает ошибку java.io.IOException: Cannot run program "curl": error=2, No such file or directory.

1 Ответ

0 голосов
/ 11 июня 2019

Я думаю, что groovy не может найти curl, попробуйте вызвать curl с полным путем, как в:

def process = ['/usr/bin/curl', 'https://someurl'].execute()
process.consumeProcessOutput(System.out, System.err)
process.waitFor()

в качестве альтернативы, если вам просто нужно выполнить запрос http get для некоторого URL, вы можете сделать это в простом groovy без зависимости от curl следующим образом:

def response = 'https://someurl'.toURL().text

<редактировать после комментариев>

Вы также можете сделать запрос на публикацию, используя чистый groovy и что-то вроде следующего (не проверено):

def url  = 'http://api.duckduckgo.com'.toURL()
def body = 'some data'
url.openConnection().with {
  doOutput      = true
  requestMethod = 'POST'

  // send post body 
  outputStream.withWriter { writer ->
    writer << body
  }

  // set header 
  setRequestProperty "Content-Type", "application/x-www-form-urlencoded"

  // print response
  println content.text
}
...