如何在Jenkins中运行sh命令而不使用sudo

t9eec4r0  于 2023-08-03  发布在  Jenkins
关注(0)|答案(2)|浏览(157)

现在我的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命令?

hc8w905p

hc8w905p1#

首先,你不需要sudo来处理jenkins工作区中的任何文件/目录;因为它们都属于Jenkins用户。
在你想要部署到web目录的情况下,你应该创建一个拥有web部署权限的用户,并且属于jenkins组,以便能够在jenkins工作区中进行r/w,比如使用ssh凭据的webmasters。将构件部署到目录中。
这也有助于您使用相同的代码库部署到远程机器,只需使用withCredential函数更改为credentialID即可。

jjjwad0x

jjjwad0x2#

我发现jenkins用户没有权限写,即修改/var/www/文件夹的内容。我所做的是将文件夹的所有者更改为jenkins,给予它740的权限,然后我就可以在不使用sudo的情况下修改文件夹。我不知道这是否是正确的方法,但它没有sudo。

相关问题