现在我的Jenkins运行这些命令没有任何错误;
stage("Deliver for Development"){
agent any
when {
branch "development"
}
steps{
sh 'sudo rm -rf /var/www/jenkins-weather-app'
sh "sudo cp -r ${env.WORKSPACE}/build /var/www/jenkins-weather-app"
sh "sudo ls /var/www/jenkins-weather-app"
// sh './scripts/kill.sh'
}
}
字符串
它能运行是因为我在ubuntu中把这行代码添加到我的sudoers文件中
jenkins ALL=(ALL) NOPASSWD: ALL
型
不知何故,我认为这不是正确的方式去做这件事。如果没有sudo,我会得到这样的错误
+ cp -r /var/lib/jenkins/workspace/react-weather-app_development/build /var/www/jenkins-weather-app
cp: cannot create directory '/var/www/jenkins-weather-app': Permission denied
script returned exit code 1
型
有没有办法在不使用sudo的情况下运行sh命令?
2条答案
按热度按时间hc8w905p1#
首先,你不需要sudo来处理jenkins工作区中的任何文件/目录;因为它们都属于Jenkins用户。
在你想要部署到web目录的情况下,你应该创建一个拥有web部署权限的用户,并且属于jenkins组,以便能够在jenkins工作区中进行r/w,比如使用ssh凭据的webmasters。将构件部署到目录中。
这也有助于您使用相同的代码库部署到远程机器,只需使用withCredential函数更改为credentialID即可。
jjjwad0x2#
我发现jenkins用户没有权限写,即修改/var/www/文件夹的内容。我所做的是将文件夹的所有者更改为jenkins,给予它740的权限,然后我就可以在不使用sudo的情况下修改文件夹。我不知道这是否是正确的方法,但它没有sudo。