如何在Windows上将SSH与Jenkins管道一起使用

时间:2019-12-06 17:25:07

标签: jenkins pip jenkins-pipeline

我正在尝试完成一个Python项目的管道,该项目需要一个在本地bitbucket服务器上的私有git存储库。要安装存储库,我通常会使用pip install git+ssh://git@dcsva:7999/aut/qa-selenium-framework.git@master(在Windows 2012 R2上)。

我已经设置了SSH密钥,并且可以使用命令行将其安装在我的计算机和目标计算机上,但是我正在努力在管道中执行此操作,这是我当前的代码:

        stage('Build') {
            steps {
                echo "Running ${env.BUILD_ID} on ${env.JENKINS_URL}"
                git credentialsId: 'e9d9d25a31f8', url: 'ssh://git@dcsva:7999/aut/my-project.git'
                powershell label: '', script: 'python -m pip install --upgrade pip setuptools wheel'
                powershell label: '', script: 'python -m venv venv'
                powershell label: '', script: 'venv\\Scripts\\activate'
                powershell label: '', script:'python -m pip install --upgrade pip'
                powershell label: '', script: 'pip install .'
                withCredentials([sshUserPrivateKey(credentialsId: 'e9d9d25a31f8', keyFileVariable: 'MY_VAR', passphraseVariable: '', usernameVariable: '')]) {
                    powershell label: 'install qa framework', script:'pip install git+ssh://git@dcsva:7999/aut/qa-selenium-framework.git@master'
                 }
            }
        }

我收到错误

[Pipeline] withCredentials
Masking supported pattern matches of %MY_VAR%
...
java.io.IOException: CreateProcess error=87, The parameter is incorrect
...
Caused: java.io.IOException: Cannot run program "powershell" (in directory "C:\Jenkins\workspace\SEL"): CreateProcess error=87, The parameter is incorrect

因此,我似乎无法在withCredentials内运行Powershell。如上所述,如果我直接使用powershell运行命令,则会收到公钥错误。即使自己在Jenkins机器上运行命令也可以正常工作。这项工作也和我一样进行,所以我不确定这里出了什么问题。

更新 我也尝试过使用sshagent,但出现错误:

  

[ssh-agent]寻找ssh-agent的实现...   找不到ssh-agent:IOException:无法运行程序“ ssh-agent”:CreateProcess错误= 2,系统找不到指定的文件   检查ssh-agent是否已安装并且在PATH中

我已经看到了this问题,并按照系统答案中的说明添加了路径,我也尝试了自己的路径并尝试在管道中设置路径,但是我总是收到错误:(

withEnv(["PATH=${env.PATH};C:\\Program Files\\Git\bin;C:\\Program Files\\Git\\usr\\bin;C:\\Program Files\\Git\\mingw64\\bin;"]) {
   sshagent(credentials: ['e9d9d25a31f8'] ) {
      sh 'pip install git+ssh://git@dcsvazdisalm:7999/aut/qa-selenium-framework.git'
   }
}

0 个答案:

没有答案