首页 > 解决方案 > 如何通过 Jenkins 作业在 Docker 映像上运行的 Groovy 阶段传递 Git 令牌凭据

问题描述

我创建了 Jenkins Pipeline 以将 Git Repos 迁移到 AWS Code Commit。此 Jenkins 作业提取 Docker 映像,然后运行用 Jenkins Stages 编写的代码。

在其中一个阶段,我正在执行一个 Shell 脚本,如下所示:在这个阶段,我打算使用镜像选项在 docker 容器中克隆 Git Repo,并将代码提交到远程 aws-codecommit 存储库。我在 Jenkins 的凭据存储中存储了登录详细信息

但是它失败并出现错误:致命:无法访问“https://mygitserver:myorg/myrepo.git/”:端口号以“i ”结尾。我相信这个 docker 映像无法读取凭据,但不确定如何修复此 PS:repos.txt 具有所有 repo-names

stage('Migrate Repos') {
                withCredentials([string(credentialsId: 'onprem-gitbuild-token', variable: 'TOKEN')]) {
                    
                    sh '''
                    while read r; do
                    echo $r
                    aws codecommit create-repository --repository-name $r --region us-west-2 
                    git clone --mirror https://mygitserver:myorg/myrepos.git 
                    cd $r.git
                    git push ssh://git-codecommit.us-west-2.amazonaws.com/v1/repos/$r --all
                    git push ssh://git-codecommit.us-west-2.amazonaws.com/v1/repos/$r --tags
                    sleep 10
                    aws codecommit update-default-branch --repository-name $r --default-branch-name master --region us-west-2
                    cd ../
                    done < repos.txt

                    '''

标签: gitjenkinsgithubgroovyjenkins-groovy

解决方案


推荐阅读