【问题标题】:Jenkins - Username and Password to checkout git in Jenkinsfile (groovy)Jenkins - 在 Jenkinsfile (groovy) 中签出 git 的用户名和密码
【发布时间】:2017-10-01 10:20:56
【问题描述】:

我们正在尝试使用 AWS DynamoDB(使用 KMS 加密值)来存储我们的机密,而不是使用 Jenkins 凭证。这是我们的安全团队建议的。

我能够获取机密(git 用户名和密码)作为 Jenkins slave 上的变量,但不确定如何使用这些来checkout git 存储库。

这是我们现有的代码

stage('SCM Checkout') {
    checkout([$class: 'GitSCM', branches: [[name: "*/${GIT_BRANCH}"]],
        doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [],
        userRemoteConfigs: [[credentialsId: 'GIT_PASSWORD', url: "${GIT_URL}"]]])
}

我想使用变量 GIT_USER 和 GIT_PASSWORD(从 AWS 获取)而不是使用 credentialsId

【问题讨论】:

  • 您是否尝试过 URL 的 user:password@git.example.com 语法?
  • 我认为使用 SSH 密钥会更容易。
  • @StephenKing 是的,这可行,但随后凭据在 Jenkins 作业的控制台中以纯文本形式公开
  • 即使你使用 groovy 脚本,你也可以获得任何你想要的密码。如果您限制凭据插件,那么您不能在脚本中使用凭据
  • import jenkins.* import jenkins.model.* import hudson.* import hudson.model.* def jenkinsCredentials = com.cloudbees.plugins.credentials.CredentialsProvider.lookupCredentials(com.cloudbees.plugins.credentials .Credentials.class, Jenkins.instance, null, null); for (jenkinsCredentials 中的信用) { if(creds.id=="username") { println(creds.username) println(creds.password) break; } }

标签: git jenkins groovy


【解决方案1】:

好的,我终于想出了一个使用 SSH Key 的解决方案。在我的服务器启动脚本 (AWS user data) 中,我已经(从 DynamoDB)获取了我的 Git 存储库 (AWS CodeCommit) 的密钥和用户名,并将它们分别存储在 ~/.ssh/sshkey~/.ssh/config 文件中。

这是我的~/.ssh/config 文件

Host git-codecommit.<my_aws_region>.amazonaws.com
  User <my_user>
  StrictHostKeyChecking no
  IdentityFile ~/.ssh/sshkey
  PreferredAuthentications publickey

而且,这里是 checkout git 存储库的阶段。

stage('Checkout SCM') {
    git url: 'ssh://git-codecommit.<my_aws_region>.amazonaws.com/v1/repos/<my_repo>', branch: '<my_branch>'
}

这并不是我一开始所寻找的,但解决了我的问题。

【讨论】:

    猜你喜欢
    • 2018-01-19
    • 1970-01-01
    • 2017-08-18
    • 2016-05-18
    • 1970-01-01
    • 2017-07-12
    • 1970-01-01
    • 2019-03-02
    • 2015-06-28
    相关资源
    最近更新 更多