一尘不染

如何让Jenkins 2.0在与结帐相同的目录中执行sh命令?

jenkins

这是我的Jenkins 2.x管道:

node ('master'){
    stage 'Checkout'
    checkout scm
    stage "Build Pex"
    sh('build.sh')
}

当我运行此管道时,签出将代码按预期方式放入工作区中,但是与其期望不在工作区/中找到脚本(它确实在那里!),而是在一个不相关的目录中查找:workspace
@ tmp / durable-d812f509。

Entering stage Build Pex
Proceeding
[Pipeline] sh
[workspace] Running shell script
+ build.sh
/home/conmonsysdev/deployments/jenkins_ci_2016_interns/jenkins_home/jobs/pex/branches/master/workspace@tmp/durable-d812f509/script.sh: line 2: build.sh: command not found

如何修改此Jenkinsfile,以便在与检出项目源代码的目录完全相同的目录中执行build.sh?


阅读 226

收藏
2020-07-25

共1个答案

一尘不染

您可以将动作括起来dir

checkout scm
stage "Build Pex"
dir ('<your new directory>') { 
    sh('./build.sh')
}
... or ..
checkout scm
stage "Build Pex"
sh(""" <path to your new directory>/build.sh""")

...

<your new directory>是您实际目录的占位符。默认情况下,它是工作空间的相对路径。如果您确定代理中存在绝对路径,则可以定义绝对路径。

2020-07-25