如何让Jenkins从远程根目录执行管道步骤



我在Jenkins中创建了一个简单的pipline。我的代理的远程根目录设置为我的项目根路径。但是,当我在构建过程中进行测试时(例如,通过定义像sh 'pwd'这样的步骤(,我发现执行步骤的目录是$WORKSPACE目录(/path_to_remote_root_directory_of_the_agent/workspace/jenkins_project_title(。这意味着,我既不能启动像sh 'vendor/bin/phpunit ./test/Unit'这样的单元测试,也不能启动通常从项目根文件夹运行的其他任务。

我很确定,我只是错误地配置了一些东西,在正常情况下,像这样的脚本

pipeline {
agent {
label 'devvm-slave-01'
}
stages {
stage('Prepare') {
steps {
sh 'composer install'
...
}
}
...
stage('Checkstyle') {
steps {
sh 'vendor/bin/phpcs --report=checkstyle --report-file=`pwd`/build/logs/checkstyle.xml --standard=PSR2 --extensions=php --ignore=autoload.php --ignore=vendor/ . || exit 0'
checkstyle pattern: 'build/logs/checkstyle.xml'
}
}
}
}

按预期工作,没有任何粗略的路径解决方案。

我做错了什么?如何使其正常工作

来自《詹金斯手册》"管道语法"一章的"代理"部分:

参数

节点

agent { node { label 'labelName' } }的行为与代理{ label 'labelName' }相同,但节点允许其他选项(如customWorkspace(。

因此,解决方案是使用node及其customWorkspace选项:

pipeline {
agent {
node {
label 'devvm-slave-01'
customWorkspace '/path/to/my/project'
}
}
...
}

相关内容

  • 没有找到相关文章

最新更新