这是我在堆栈溢出上发布的第一个问题,因此,万一我做了一些我知道的不正确的事情。
描述
我目前正致力于将自由式项目翻译到Jenkins中的声明管道(jenkinsfiles保存在Git中)。最初的自由式工作是触发PowerShell脚本,它需要访问配置系统中掩码密码插件部分中定义的全局名称/密码对。解决这个问题的方法是在项目本身中附加一个勾号(不幸的是,我还不允许将屏幕截图添加到帖子中,因此编辑器将屏幕上传到imgur并粘贴链接-请参见屏幕1):截图1
因此,我开始寻找这样的解决方案的可能实现的jenkinsfile,无论多么幸运。
我的问题
当从管道中触发脚本时,它会错误地指出它找不到相关的密码(powershell是指这些凭据与环境变量有关)。当从自由式项目运行时,这是很好的。我认为这是因为管道无法接触到前面提到的证书。
我试过什么
将步骤包装到以下块:
wrap([$class: 'MaskPasswordsBuildWrapper']) {
bat(batch file launching ps script)
}然后,包含相关步骤的上述块包装为
script {
wrap(...)
}但他们都没用。我看过其他插件,如凭据绑定插件或凭据插件,但是这些插件允许每个步骤绑定/传递一个凭据,并且我需要传递Jenkins中指定的所有凭据(我可以将保存的凭据移动到Jenkins中的任何其他位置)。我看过添加环境变量:
credentials('Credentials-ID')但是问题和上面提到的插件一样。
有没有人遇到过类似的情况,知道如何允许管道访问/传递Jenkins中指定的所有凭据,而不是一次绑定/传递它们?
所有的提示都是非常欢迎的!
发布于 2020-06-24 20:14:20
您可以这样做,然后env变量将在整个作业中可用。您也可以定义多个env变量。
environment {
// Use credentials() to hide the environment variable's output
MY_PERSONAL_TOKEN = credentials('Credentials-ID')
}
stages {
stage('Test Stage') {
steps {
script {
// do what you need to
}
}
}
}https://stackoverflow.com/questions/62556350
复制相似问题