Загрузить локальный файл с помощью команды CURL в разделяемой библиотеке Jenkins Pipeline - PullRequest
2 голосов
/ 18 июня 2019

Я пытаюсь загрузить файл из локального каталога в удаленный каталог. У меня есть библиотека Groovy, которую я написал для этого.

def file = "$WORKPLACE/**/*-${BUILD_NUMBER}-*/file.txt"

pulic uploadArtifct (String user, String password, String file, String 
  location) {
  def cred = "${user}:${password}"
  def cmd = ["curl", "-v", "-u", cred, "-F", "files=@${file}", ${location}]
  try {
   def sout = new StringBuffer(), serr = new StringBuffer()
   def proc = cmd.execute()
   proc.consumeProcessOutput(sout, serr)
   proc.waitForOrKill(1000)
   println sout
  } catch (Exception e) {
    throw new RuntimeExceptipon("Cannot execute curl, exception: [${e.getClass().getName()} - '${e.getMessage()}']")
   }
  }

Однако вышесказанное завершается ошибкой:

java.lang.RuntimeException: Cannot execute curl, exception: [java.lang.RuntimeException - 'Error running ; stdout='', stderr='warning:setting file 
Warning: /app/jenkins/workspace/Job/**/*-10-*/file.txt 
Warning: failed!

Как мне убедиться, что файл установлен правильно? Также правильный подход -F?

1 Ответ

1 голос
/ 18 июня 2019

Это сообщение об ошибке

Cannot execute curl, exception: [java.lang.RuntimeException - 'Error running ; stdout='', stderr='warning:setting file 
Warning: /app/jenkins/workspace/Job/**/*-10-*/file.txt 
Warning: failed!

было замечено в другом контексте

Для пути необходим символ "at" (@) перед файлом .jtlпуть

-F "jtl_file=@/path/to/file"

В вашем случае двойные кавычки могут отсутствовать.

"\"files=@${file}\""
...