如何将 bitbucket 存储库的用户名和密码传递给通过 jenkins 触发的 shell 脚本

如何将 bitbucket 存储库的用户名和密码传递给通过 jenkins 触发的 shell 脚本

我正在尝试创建一个 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

相关内容