【发布时间】:2020-02-25 15:52:29
【问题描述】:
我有一个奇怪的情况,shell 命令“sudo su”在 Jenkins 声明式管道中没有按预期工作。以下是我的代码:
stages {
stage('Ansible-dynamichost-generation') {
steps {
ansiColor('xterm') {
sh 'chmod -R 777 /home/jenkins-slave/'
sh 'sudo su ansible'
sh '''#!/bin/bash -l
#Execute commands
echo "$WORKSPACE"
whoami
'''
}
}
}
}
此管道由 jenkins-slave 用户运行。但是,我在管道中有一个 shell 命令应该切换到一个名为“ansible”的用户。但是,当执行“whoami”命令时,它会返回“jenkins-slave”本身的输出。谁能帮忙看看这里出了什么问题?
【问题讨论】:
-
sudo -u ansible /bin/bash -c "...". -
su不会“切换”用户;它会启动一个新的 shell,以 as 该用户的身份运行。 -
@chepner 谢谢!是的,我在命令前使用“sudo -u ansible”。
标签: shell jenkins jenkins-pipeline jenkins-groovy jenkins-declarative-pipeline