当前位置: 首页 > 面试题库 >

在共享库Jenkins管道中使用CURL命令上载本地文件

陶寒
2023-03-14
问题内容

我正在尝试将文件从本地目录上传到远程目录。我有一个为此编写的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方法正确吗?


问题答案:

该错误信息

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

该路径@在.jtl文件路径之前需要一个“ at”()符号

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

在您的情况下,双引号可能会丢失。

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


 类似资料:
  • 问题内容: 我在Jenkins管道的共享库中有一个方法。想法是使用该库并将文件上传到远程主机。该库将导入到单例库中。 实例化的类如下所示: 即使我在日志中看到该行。我看不到命令正在执行。我缺少某种无法调用的功能吗? 编辑 当我直接在库中使用时,它可以工作。 但是,尝试使用时不起作用。 我得到的异常是: 问题答案: 如此处所述,您需要捕获stdout / stderr才能 _看到_任何内容。 至少:

  • 我将我的Jenkins Pipeline存储为Jenkins共享库中的Groovy脚本。我想为不同的工作使用不同的版本。我的共享库脚本称为如下: 我已将sharedLib repo中的不同版本标记为。万一我想用v1。0,我用注释引用了它,如下所示。 在我的工作中,我通过调用groovy脚本访问了共享库,并使用了上面的注释,如图所示: 我运行这项工作时出错了。以下是我看到的错误。 当我使用。我哪里出

  • 我在Jenkins管道的共享库中有一个方法。其想法是使用此库并将文件上载到远程主机。该库导入到单例库中。 实例化的类如下所示: 尽管我在日志中看到了println行。我看不到正在执行curl命令。是否有我缺少的不调用cmd的东西。执行才能工作? 编辑 当我在库中直接使用curl时,它可以工作。 但是,当尝试使用时,它不起作用。 我得到的例外是:

  • 我们试图切换到jenkins管道,但我在groovy/java的低水平阻止了我们建立一个共享库。 这里是我的共享库(位于bitbucket中git repo的{root}/src/com/pipeline.groovy中)我必须承认,我在这里做什么都不知道,因为我不知道包裹的定义 Jenkins的管道看起来 通过所有这些设置,我最终得到了错误: 我怀疑我的漂亮包裹的定义,但我坚持这样做。 非常欢迎

  • 问题内容: 我最近将bash执行命令重写为Jenkins管道。旧代码就像 现在,我使用管道脚本来包装命令,像这样 但是,我遇到了一个错误。当我尝试时,它会正确显示。所以我怀疑内部有问题。 在使用管道之前,命令在外壳执行中工作正常。因此,源代码安装在Jenkins服务器上,似乎管道脚本不知道源命令是什么。 如何在sh wrapd块中运行source命令? 问题答案: 替换为 请注意,第一个点后有一个

  • 问题内容: 在groovy脚本中(用于jenkins管道):如何运行命令而不是命令? 我尝试了以下方法: 在通话中致电“ ” : 将呼叫替换为呼叫: 附加信息: 我的命令比命令更复杂。 问题答案: 您提供的Groovy脚本正在将结果脚本中的第一行格式化为空白行。shebang告诉脚本使用/ bin / bash而不是/ bin / sh运行,它需要位于文件的第一行,否则它将被忽略。 因此,您应该这