使用 Jenkins 获取项目的凭据 API
Get Project's Credentials using Jenkins API
我正在构建一个 Jenkins 插件,其中一个功能是提交和推送构建期间生成的一些文件。我已经有了要提交和推送的代码(使用来自 org.jenkinsci.plugins 的 Git 客户端),但是当我执行
PushCommand push = gitClient.push();
push.ref(__MY_BRANCH__);
push.to(new URIish("origin"))
push.force();
push.execute();
我收到一个没有推送权限的错误。所以,我的问题是:如何重新使用项目的凭据来正确配置 gitClient 或 pushCommand ?
--
谢谢,
何塞
您需要向 GitClient
提供凭据。
例如,在这里您可以看到 Git 插件 calling the GitClient#addDefaultCredentials()
方法,使用从 CredentialsMatchers
.
获得的凭据
你提到你想重复使用来自同一个工作的凭据 - 假设 Git 插件已经配置了这些凭据 - 你的插件应该可以访问 AbstractBuild
其中您可以使用 build.getProject().getScm().getUserRemoteConfigs().get(0).getCredentialsId
之类的东西来获取配置的凭据 ID。
您需要将 SCM
转换为 GitSCM
,否则应该可以正常工作。
我正在构建一个 Jenkins 插件,其中一个功能是提交和推送构建期间生成的一些文件。我已经有了要提交和推送的代码(使用来自 org.jenkinsci.plugins 的 Git 客户端),但是当我执行
PushCommand push = gitClient.push();
push.ref(__MY_BRANCH__);
push.to(new URIish("origin"))
push.force();
push.execute();
我收到一个没有推送权限的错误。所以,我的问题是:如何重新使用项目的凭据来正确配置 gitClient 或 pushCommand ?
-- 谢谢, 何塞
您需要向 GitClient
提供凭据。
例如,在这里您可以看到 Git 插件 calling the GitClient#addDefaultCredentials()
方法,使用从 CredentialsMatchers
.
你提到你想重复使用来自同一个工作的凭据 - 假设 Git 插件已经配置了这些凭据 - 你的插件应该可以访问 AbstractBuild
其中您可以使用 build.getProject().getScm().getUserRemoteConfigs().get(0).getCredentialsId
之类的东西来获取配置的凭据 ID。
您需要将 SCM
转换为 GitSCM
,否则应该可以正常工作。