在Jenkins Pipeline中添加SVN签出时出现凭证错误

时间:2019-05-16 06:21:35

标签: jenkins svn jenkins-pipeline

我试图逐步测试创建一个詹金斯管道作业的每一步。为此,我正在尝试首先为示例管道使用svn checkout进行测试。我添加了声明性管道并添加了svn checkout步骤。但是我收到如下错误,

svn: E215004: No more credentials or we tried too many times.

我添加了如下的管道作业,

pipeline 
  {
    agent any
    stages 
      {
        stage ('Checkout') 
         {                 
           steps
             {
                sh 'svn co http://192.168.16.174/repository/pipeline'
             }
         }
     }
  }

我的观察

根据我的观察,我没有在这里添加svn存储库凭据。我是詹金斯和CI / CD的新手。当我学习时,发现可以在jenkins中创建凭据,并且可以在此处引用该ID。但是我没有确切的添加方法。还有另一件事是,我计划将其添加到存储在存储库根目录中的Jenkinsfile中。

我的困惑

  1. 如果我在这里引用创建的凭据,该如何申请?
  2. 如果我将我的Jenkinsfile保留在项目根目录中以进行提取,如果我在我的jenkinsfile中添加凭据ID是否有问题?

我是CI / CD的新手。我在这里与Jenkinsfile中的凭证有关的很多困惑。如果我走错了方向,请纠正我。有人可以帮我解决我的困惑吗?

1 个答案:

答案 0 :(得分:0)

经过一番探索,我发现,需要使用jenkins的“ withCredentials”选项将创建的凭证绑定到uername和password变量。在阶段步骤中进行绑定之后,需要将用户名和密码变量与我们要使用“ sh”命令访问的SVN存储库URL一起使用。让我补充一下我在这里所做的事情,

pipeline 
{
    agent any
    stages 
        {
            stage ('Checkout') 
                {
                    steps
                        {

            withCredentials([[$class: 'UsernamePasswordMultiBinding',
                  credentialsId: '<credential-ID>',
                  usernameVariable: 'USERNAME', passwordVariable: 'PASSWORD']]) {
    sh "svn co url --username $USERNAME --password $PASSWORD"
                                     }

                        }
                }
        }

}

然后将在控制台中获得如下所示的输出,如下所示,

Started by user admin
Running in Durability level: MAX_SURVIVABILITY
[Pipeline] Start of Pipeline
[Pipeline] node (hide)
Running on Jenkins in /var/lib/jenkins/workspace/kubernetes
[Pipeline] {
[Pipeline] stage
[Pipeline] { (Checkout)
[Pipeline] withCredentials
Masking only exact matches of $USERNAME or $PASSWORD
[Pipeline] {
[Pipeline] sh
+ svn co 'url' --username **** --password ****
Checked out revision 1.
[Pipeline] }
[Pipeline] // withCredentials
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS