我在jenkins
有一个配置的工作,然后,使用jenkins
/cli
get-job
我可以xml
(API方法){{1}我的工作结构然后我可以在create-job
中使用跟随的xml jenkins
(API方法)。
?xml version='1.0' encoding='UTF-8'?>
<project>
<actions/>
<description></description>
<keepDependencies>false</keepDependencies>
<properties/>
<scm class="hudson.plugins.git.GitSCM" plugin="git@2.2.7">
<configVersion>2</configVersion>
<userRemoteConfigs>
<hudson.plugins.git.UserRemoteConfig>
<url>https://username:password@bitbucket.org/repoowner/project.git</url>
<credentialsId>550e8400-e29b-41d4-a716-446655440000</credentialsId>
</hudson.plugins.git.UserRemoteConfig>
</userRemoteConfigs>
....
即使我提供此url
代码&#34; https://username:password@bitbucket.org/repoowner/project.git&#34; jenkins需要身份验证才能工作,因此在credentialsId
标签中,jenkins会提供UUID。
我希望能够通过具有此格式的给定网址的外部应用程序动态创建作业&#34; https://username:password@bitbucket.org/repoowner/project.git&#34;。
怎么做?
感谢。
答案 0 :(得分:2)
您可以通过API和凭证存储插件获取credentialsId。
e.g。对于全局域中的凭据
$ {your-jenkins-domain} / credential-store / domain / _ / api / xml
<domainWrapper>
<credentials>
<_XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/>
</credentials>
<description></description>
<displayName></displayName>
<fullDisplayName></fullDisplayName>
<fullName>credential-store/_</fullName>
<global>true</global>
<urlName>_</urlName>
</domainWrapper>
但在某些方面它有点棘手:
当访问全局域的xml api时,id已经有一个'_'作为前缀。使用其他域时,前缀丢失(但在作业中添加了前缀...无法确定可以找到前缀的位置)
e.g。我将github访问数据存储在一个独立的域中,credentialsId标记为:
<XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/>
但在职位ID中使用的是:
0XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
答案 1 :(得分:0)
实际上我只是在bitbucket
中创建一般用户来解决问题,然后UUID
它始终相同,我可以将该UUID复制并粘贴到其他project.xml
文件中。