我有一个Jenkins管道工作。它需要几个参数,其中一个是"用户名,密码为"参数,设置为"服务帐户"我已经配置了。
这用于" StashNotifier"通知BitBucket构建的结果。
我现在必须添加一些" scp / ssh"工作的步骤,我想使用相同的服务帐户主体和凭据。我可以手动添加两个参数,服务帐户参数的用户名和密码的冗余副本,但我真的想从现有的"用户名和密码"中提取件。参数。
有可能吗?
答案 0 :(得分:4)
withCredentials([[$class: 'UsernamePasswordMultiBinding', credentialsId: credentialsId, usernameVariable: 'USERNAME', passwordVariable: 'PASSWORD']]) {
// use USERNAME and PASSWORD as envs - ${USERNAME}
// credentialId is the credential id from Credentials tab
}
答案 1 :(得分:1)
一般来说,如果您使用ssh / scp,ssh-agent就是您想要的。 (通常你也需要公钥认证而不是密码,但这是另一个故事)
node {
sshagent (credentials: ['your-credential-id']) {
sh 'ssh blaa blaa'
}
}
答案 2 :(得分:0)
正如@jil所提到的,如果你在SSH服务器上使用ssh密钥进行身份验证,那么它会让事情变得容易多了 - 假设你的jenkins服务器在linux / unix机器上运行。您可以将密钥添加到运行Jenkins的系统用户jenkins
,并将其复制到要为scp / ssh步骤连接的计算机。之后,您可以直接使用任何ssh / scp命令而无需提供密码。
但是有一些安全注意事项:将SSH密钥添加到
jenkins
用户可以使Jenkins服务器上的每个作业都能访问您的SSH服务器。
如果这对您来说不是问题 - 这是good article on how to use ssh keys。