Chh*_*ati 3 token jenkins jenkins-pipeline
尝试搜索一些站点,包括触发参数化远程作业,但控制台显示失败
我正在尝试将基于令牌的作业从调用远程作业的现有(使用curl)方法迁移到基于插件的调用,如下所示:
远程 Jenkins 设置:(myserver:8080)作业:MyPipelineFirstJob
Under Job configuration : Build Triggers --> "Trigger builds remotely (e.g., from scripts)" --> Authentication Token --> 108801
Run Code Online (Sandbox Code Playgroud)
现有工作:在本地詹金斯上:
curl -v --silent -X POST http://myserver:8080/job/MyPipelineFirstJob/buildWithParameters --data token=108801 --data RELEASE=9.2 --data ARCHITECTURE=ppc64le --data IP=9.99.999.99
Run Code Online (Sandbox Code Playgroud)
本地 Jenkins 上的新工作:现在,我需要将上述内容转换为使用参数化远程触发插件。因此,除了远程主机等之外,我在全局配置中选择了如下身份验证类型:“参数化远程触发配置”
"Enable 'build token root' support" is unchecked -- Do not know what this means
Authentication --> Bearer Token Authentication
Run Code Online (Sandbox Code Playgroud)
我看到一条警告消息“地址看起来不错,但无法建立连接。”
我正在调用以下函数来触发远程作业:
def handle = triggerRemoteJob(remoteJenkinsName: 'Perf_Jenkins_Server', job: 'MyPipelineFirstJob/buildByToken/buildWithParameters', auth: "108801", parameters: 'RELEASE=HMC9.2.951.2,ARCHITECTURE=ppc64le,HMC_MACHINE=9.99.999.9998')
Run Code Online (Sandbox Code Playgroud)
我已经根据此网站https://www.jenkins.io/doc/pipeline/steps/Parameterized-Remote-Trigger/传递了字符串“108801”,其中表示:
BearerTokenAuth
token (optional)
Type: String
Run Code Online (Sandbox Code Playgroud)
构建失败:使用上述配置,构建作业时出现此错误:
22:07:12 java.lang.ClassCastException: class org.jenkinsci.plugins.ParameterizedRemoteTrigger.pipeline.RemoteBuildPipelineStep.setAuth() expects class org.jenkinsci.plugins.ParameterizedRemoteTrigger.auth2.Auth2 but received class java.lang.String
22:07:12 at org.jenkinsci.plugins.structs.describable.DescribableModel.coerce(DescribableModel.java:492)
22:07:12 at org.jenkinsci.plugins.structs.describable.DescribableModel.injectSetters(DescribableModel.java:429)
22:07:12 at org.jenkinsci.plugins.structs.describable.DescribableModel.instantiate(DescribableModel.java:331)
22:07:12 at org.jenkinsci.plugins.workflow.cps.DSL.invokeStep(DSL.java:269)
22:07:12 at org.jenkinsci.plugins.workflow.cps.DSL.invokeMethod(DSL.java:179)
22:07:12 at org.jenkinsci.plugins.workflow.cps.CpsScript.invokeMethod(CpsScript.java:122)
22:07:12 at sun.reflect.GeneratedMethodAccessor493.invoke(Unknown Source)
22:07:12 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55)
22:07:12 at java.lang.reflect.Method.invoke(Method.java:508)
Run Code Online (Sandbox Code Playgroud)
因此,我尝试删除 auth 字段,并将其作为参数的一部分传递:
def handle = triggerRemoteJob(remoteJenkinsName: 'Perf_Jenkins_Server', job: 'MyPipelineFirstJob/buildByToken/buildWithParameters', parameters: 'token="108801",RELEASE="HMC9.2.951.2",ARCHITECTURE=ppc64le,HMC_MACHINE="9.99.999.9998"')
Run Code Online (Sandbox Code Playgroud)
注意:我还尝试在参数值周围添加双引号。进行这些更改并尝试构建后,我收到以下错误:
22:19:12 ################################################################################################################
22:19:12 Parameterized Remote Trigger Configuration:
22:19:12 - job: MyPipelineFirstJob/buildByToken/buildWithParameters
22:19:12 - remoteJenkinsName: Perf_Jenkins_Server
22:19:12 - parameters: [token="108801",RELEASE="HMC9.2.951.2",ARCHITECTURE=ppc64le,HMC_MACHINE="9.99.999.998"]
22:19:12 - blockBuildUntilComplete: true
22:19:12 - connectionRetryLimit: 5
22:19:12 - trustAllCertificates: false
22:19:12 ################################################################################################################
22:19:12 Connection to remote server failed [404], waiting to retry - 10 seconds until next attempt. URL: http://myserver:8080/job/MyPipelineFirstJob/job/buildByToken/job/buildWithParameters/api/json, parameters:
22:19:22 Retry attempt #1 out of 5
22:19:22 Connection to remote server failed [404], waiting to retry - 10 seconds until next attempt. URL: http://myserver:8080/job/MyPipelineFirstJob/job/buildByToken/job/buildWithParameters/api/json, parameters:
22:19:32 Retry attempt #2 out of 5
Run Code Online (Sandbox Code Playgroud)
您是否注意到上面的 o/p 中附加的“工作”一词:“buildByToken/job/buildWithParameters”?不知道为什么!
问题:
找到解决办法:参数需要换行分隔。不是逗号或空格。因此,我在每个参数之间添加了 '\n' 字符,如下所示,它起作用了!
def handle = triggerRemoteJob(remoteJenkinsName: 'Perf_Jenkins_Server', job: 'MyPipelineFirstJob', parameters: 'token=108801\nRELEASE=9.2.951.2\nARCHITECTURE=x86_64\nMACHINE_IP="9.99.999.998')
Run Code Online (Sandbox Code Playgroud)
参考:下面的链接有一个使用“\n”作为参数分隔符的示例。
注意:以上链接指的是代码片段生成器。但是,该生成器还不支持“triggerRemoteJob”!也许,我会更快地解决我的问题!
Jenkins版本:Jenkins 2.249.1
参数化远程触发插件版本:3.1.5.1
归档时间: |
|
查看次数: |
7245 次 |
最近记录: |