Jenkins Pipeline 使用 Docker 作为 Agent 时注意事项
先来看一段报错信息:
上图报错:invalid argument(无效参数)
。再看看我的 Pipeline
的 Agent
:
pipeline{agent { // 工作节点docker {image '172.17.16.102/maven/maven:102'args '-v /data/jenkins/workspace/Biliard/maven:/root/.m2 -v /data/mavenRepository:/usr/repository'}}......parameters { // 参数化构建string(name: '',defaultValue: '------------------------------------------------------------------------------- 项目版本发布 ------------------------------------------------------------------------------------',description: '')gitParameter (name: 'BRANCH_TAG',type: 'PT_BRANCH_TAG',branchFilter: 'origin/(.*)',defaultValue: 'master',selectedValue: 'DEFAULT',sortMode: 'DESCENDING_SMART',description: '⚠ 选择发布版本(分支)')......}......
}
案例中加了 string
参数的原因是为了界面好看,从语法上来讲是没有问题的,但是在 agent
代理节点为 Docker
时就存在问题了,首先我们要清楚 Agent
有什么作用,Agent
指的是 Pipeline
的运行环境,可以是 Host 环境,也可以是容器环境,而在容器环境中时,string
参数会作为 Docker
参数传入,因此报 Docker
无效参数(在 agent 为 any 时,以上案例是没有问题的)。
因此,解决方案就是去掉 string
类型的参数变量:
pipeline{agent { // 工作节点docker {image '172.17.16.102/maven/maven:102'args '-v /data/jenkins/workspace/Biliard/maven:/root/.m2 -v /data/mavenRepository:/usr/repository'}}......parameters { // 参数化构建gitParameter (name: 'BRANCH_TAG',type: 'PT_BRANCH_TAG',branchFilter: 'origin/(.*)',defaultValue: 'master',selectedValue: 'DEFAULT',sortMode: 'DESCENDING_SMART',description: '⚠ 选择发布版本(分支)')......}......
}
此时,问题得到解决!