如何在jenkins中使用file参数

时间:2017-02-14 11:13:57

标签: jenkins

我在jenkins中执行参数化构建以计算否。文件中有1个文件参数的行。其文件位置为pqr。脚本文件的名称为linecount.sh,保存在远程服务器上。当我尝试使用命令sh linecount.sh filename执行它时,它完全可以从jenkins开始。但是当我从参数中删除文件名并执行与参数化构建相同的脚本时,它在控制台上显示以下错误:

Started by user Prasoon Gupta
[EnvInject] - Loading node environment variables.
Building in workspace users/Prasoon/sample_programs
Copying file to pqr
[sample_programs] $ /bin/sh -xe /tmp/hudson3529902665956638862.sh
+ sh linecount.sh
PRASOON4
linecount.sh: line 15: parameterBuild.txt: No such file or directory
Build step 'Execute shell' marked build as failure
Finished: FAILURE

我从本地计算机上传文件(parameterBuild.txt)。为什么会出现这个错误?

我的疑问是在shell脚本中我将参数用作$1。当我将文件作为参数时,我该如何引用它。

4 个答案:

答案 0 :(得分:18)

上传的文件不会保留与本地计算机上的名称相同的名称。它将以文件参数设置中指定的File location参数命名: enter image description here 在这个例子中,我将在我的工作区根目录中获得一个名为file.txt的文件,无论我在计算机上调用它。 因此,如果我现在构建我的作业并在参数对话框中输入以下内容(请注意我的本地文件名是table.html):

enter image description here

然后我在日志中得到以下内容(我有一个ls -l的构建步骤):

Building on master in workspace /var/lib/jenkins/workspace/fs
Copying file to file.txt
[fs] $ /bin/sh -xe /tmp/hudson845437350739055843.sh
+ ls -l
total 4
-rw-r--r-- 1 jenkins jenkins 292 Feb 15 07:23 file.txt
Finished: SUCCESS

请注意,table.html现在称为file.txt,例如我输入的内容为File location

所以在你的情况下命令应该是:

sh linecount.sh pqr

答案 1 :(得分:0)

自古以来就有一个错误,无法使用fileParameter

答案 2 :(得分:0)

此问题有一种解决方法https://github.com/janvrany/jenkinsci-unstashParam-library 然后在管道脚本中执行以下操作:

library "jenkinsci-unstashParam-library"
node {
  def file_in_workspace = unstashParam "file"
  sh "cat ${file_in_workspace}"
}

答案 3 :(得分:0)

如果与自由式作业有关并且您的配置与此类似-https://i.stack.imgur.com/vH7mQ.png,那么您可以简单地执行sh linecount.sh ${pqr}来获得所需的内容?