Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jenkins-在Jenkins文件(groovy)中签出git的用户名和密码_Git_Jenkins_Groovy - Fatal编程技术网

Jenkins-在Jenkins文件(groovy)中签出git的用户名和密码

Jenkins-在Jenkins文件(groovy)中签出git的用户名和密码,git,jenkins,groovy,Git,Jenkins,Groovy,我们正在尝试使用AWS DynamoDB(带有KMS加密值)来存储我们的机密,而不是使用Jenkins凭据。这是我们的安全团队建议的 我能够在Jenkins slaves上获取作为变量的秘密(git用户名和密码),但不知道如何使用这些来签出git存储库 这是我们现有的代码 stage('SCM Checkout') { checkout([$class: 'GitSCM', branches: [[name: "*/${GIT_BRANCH}"]], doGenerate

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

我能够在Jenkins slaves上获取作为变量的秘密(git用户名和密码),但不知道如何使用这些来签出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

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

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

Host git-codecommit.<my_aws_region>.amazonaws.com
  User <my_user>
  StrictHostKeyChecking no
  IdentityFile ~/.ssh/sshkey
  PreferredAuthentications publickey
Host git codecommit..amazonaws.com
使用者
无钥匙检查
IdentityFile~/.ssh/sshkey
首选身份验证公钥
现在是签出git存储库的阶段

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

这并不完全是我在开始时想要的,但解决了我的问题。

您是否尝试过
用户:password@git.example.com
URL的语法?我认为使用SSH密钥会更容易。@StephenKing是的,这是可行的,但是凭证在Jenkins jobsEven的控制台中以纯文本形式公开。如果您使用groovy脚本,您可以获得任何想要的密码。如果您限制凭据插件,则不能将凭据用于脚本导入jenkins.*导入jenkins.model.*导入hudson.*导入hudson.model.*def jenkinsCredentials=com.cloudbees.plugins.credentials.CredentialsProvider.lookupCredentials(com.cloudbees.plugins.credentials.credentials.class,Jenkins.instance,null,null);对于(jenkinsCredentials中的creds){if(creds.id==“username”){println(creds.username)println(creds.password)break;}