如何使用密码"从jenkins"用户名中提取用户名和密码;参数?

时间:2016-12-12 18:42:14

标签: jenkins jenkinsfile

我有一个Jenkins管道工作。它需要几个参数,其中一个是"用户名,密码为"参数,设置为"服务帐户"我已经配置了。

这用于" StashNotifier"通知BitBucket构建的结果。

我现在必须添加一些" scp / ssh"工作的步骤,我想使用相同的服务帐户主体和凭据。我可以手动添加两个参数,服务帐户参数的用户名和密码的冗余副本,但我真的想从现有的"用户名和密码"中提取件。参数。

有可能吗?

3 个答案:

答案 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