我正在尝试运行以下清理脚本,但它在特定的Jenkins节点上一直失败:
def BUILDERS = [:].asSynchronized()
def NODE_NAMES = [
'cleanuptooldean', //test
]
node('master') {
stage('Prepare the Pipeline') {
// get deploy pattern from params
for (NODE_NAME in NODE_NAMES) {
// Groovy closures stuff, need to copy it over
def FINAL_NODE_NAME = NODE_NAME
BUILDERS[FINAL_NODE_NAME] = {
node(FINAL_NODE_NAME) {
timeout(time:5, unit: "MINUTES") {
echo "Started Cleaning process of unused docker images from Jenkins Instance, Agent: "+env.NODE_NAME
sh "docker system prune -a --volumes -f"
echo "Cleaning up space from unused packages (orphaned dependencies), remove old kernels in Ubuntu, Agent: "+env.NODE_NAME
sh "sudo apt-get -y autoremove --purge"
echo "clean the apt cache on Ubuntu "+ env.NODE_NAME
sh "sudo apt-get -y clean"
echo "Finished Cleaning process of unused docker images from Jenkins Instance, Agent: "+env.NODE_NAME
}
}
}
}
}
}
如果我键入";Sudo";在"strong"的开头;apt-get-y自动删除-清除"和";apt-get-y clean">是:";sudo:没有tty,也没有指定askpass程序">不用说,我已经编辑了sudoers文件并添加了"jenkins ALL=(ALL(NOPASSWD:ALL">以便在文件末尾对其进行测试。如果我删除";Sudo";命令,我得到的错误是:"拨号unix/var/run/doker.sock:connect:permission denied">,我试图通过添加";Jenkins"用户到";码头工人";组
**我必须说,当我在本地运行命令时;Sudo";他们都是从";Jenkins"用户,但当我尝试使用管道从Jenkins远程执行时,它失败了。
***这个特定的脚本在其他节点上运行得很好
提前感谢
显然每个节点都使用了不同的用户,所以我不得不将所有用户添加到docker的组中,并将它们添加到visudo文件中。