Jenkins 凭证存了却找不到是怎么回事?
我在 Jenkins 里新建了一个 Username with password 类型的凭证,ID 填的是 my-git-cred,但 Pipeline 脚本里用 credentials(‘my-git-cred’) 就报错说找不到。
我确认过是在当前 Job 所在的文件夹下创建的凭证,不是全局的。Pipeline 代码大致是这样:
pipeline {
agent any
stages {
stage('Checkout') {
steps {
git credentialsId: 'my-git-cred', url: 'https://example.com/repo.git'
}
}
}
}
控制台输出一直提示:Could not find credentials matching my-git-cred。是不是我放错位置了?还是 ID 写错了?
你写的这段 pipeline 里用了
git credentialsId: 'my-git-cred',但其实这是旧语法,和credentials()是两套机制,混用的话 Jenkins 根本不会去解析你传进去的credentialsId,它会当成普通字符串去匹配——而你又没在全局凭据里配这个 ID,自然找不到。正确写法是用
checkout步骤 +credentialsId放在git子配置里,或者用withCredentials包裹。推荐前者,干净点:或者更简洁的(如果你用的是新版本插件):
注意:
credentialsId的值必须和你创建凭证时填的 ID 完全一致,大小写都别错。另外再确认下你建凭证的路径——如果是 Folder 下的 Job,凭证必须建在该 Folder 的凭据里(不是全局,也不是根目录)。路径不对也查不到,这个坑我踩过好几次。最后说一句,别用
credentials('my-git-cred')去包git,它俩不搭,会失效。真要用withCredentials,得这样:但没必要,直接上面那种写法就行,省事。