![如何将 bitbucket 存储库的用户名和密码传递给通过 jenkins 触发的 shell 脚本](https://linux22.com/image/168302/%E5%A6%82%E4%BD%95%E5%B0%86%20bitbucket%20%E5%AD%98%E5%82%A8%E5%BA%93%E7%9A%84%E7%94%A8%E6%88%B7%E5%90%8D%E5%92%8C%E5%AF%86%E7%A0%81%E4%BC%A0%E9%80%92%E7%BB%99%E9%80%9A%E8%BF%87%20jenkins%20%E8%A7%A6%E5%8F%91%E7%9A%84%20shell%20%E8%84%9A%E6%9C%AC.png)
我正在尝试创建一个 Jenkins 作业,该作业将通过 Jenkins 中的“发送文件或通过 SSH 执行命令”选项触发 shell 脚本。以下是我的 shell 脚本的主要部分:
#!/bin/bash
BRANCH=$1
cd /vm/deployment
git clone https://[email protected]/myuser/proj.git
#updating the common property files
cd /vm/deployment/swcm-properties
git reset --hard HEAD
#git pull ${BRANCH}
git fetch && git checkout ${BRANCH}
git pull
我的问题是执行失败,因为我无法传递存储库的密码和用户名以使克隆工作。
我找到了一个将用户名和密码设置为全局凭据的选项,并进行了以下配置:
当我尝试执行以下保存在服务器上的 shell 脚本时,出现以下错误:
#!/bin/bash
git clone https://$uname:[email protected]/mysuer/myrepo.git
remote: Invalid username or password
fatal: Authentication failed for 'https://:@bitbucket.org/****/myrepo.git/'
使用 Jenkins 传递用户名和密码并从 Bitbucket 存储库触发 git 克隆的最佳方法是什么?
答案1
这是我使用 Jenkins 声明式实现的方法。
这里的关键是使用URLEncoder.encode
.
pipeline {
environment {
// bitbucketcredentials is stored at Jenkins Credentials Stored
BITBUCKET_CREDENTIALS = credentials('bitbucketcredentials')
}
stages {
stage('packaging git push para branch beta') {
steps {
script {
env.encodedPass=URLEncoder.encode(BITBUCKET_CREDENTIALS_PSW, "UTF-8")
}
git push https://${BITBUCKET_CREDENTIALS_USR}:${encodedPass}@bitbucket.com/yourrepo.git branch