jenkins-pipeline - 如何引用groovy管道脚本中的参数?
问题描述
我将其合并为vars/gitCheckout.goovy
将其作为库添加到詹金斯
def call(String branch = '*/master') {
checkout([$class: 'GitSCM',
branches: [[name: ${branch}]],
doGenerateSubmoduleConfigurations: false,
extensions: [[$class: 'SubmoduleOption',
disableSubmodules: false,
parentCredentials: false,
recursiveSubmodules: true,
reference: '',
trackingSubmodules: false]],
submoduleCfg: [],
userRemoteConfigs: [[url: 'https://my-server.com/some/project.git']]])
}
从 jenkins Pipeline Script 调用此方法如下:
@Library('jenkins-library@master') _
pipeline {
agent { label 'my-server' }
stages {
stage('Git Checkout') {
steps {
gitCheckout()
}
}
}
}
这失败并出现错误java.lang.NoSuchMethodError: No such DSL method '$' found among steps [ArtifactoryGradleBuild, MavenDescriptorStep, ....
我尝试了 $branch、params.branch,但它没有用,如果我不使用参数并硬编码分支名称,则代码可以正常工作。另外,每当我对这个 .groovy 脚本进行任何更新时,我是否应该通过将它合并并作为 jenkins 作业运行来测试它?在合并 groovy 脚本之前还有其他方法可以测试吗?
解决方案
${branch}
用 just替换第 3 行branch
。$
当您在 Groovy 字符串中插入变量时,您可以使用变量名:
def value = "current branch is: ${branch}" // produces: current branch is */master
如果您忘记$
在字符串插值中使用,则不会发生任何事情:
def value = "current branch is: branch" // produces: current branch is branch
推荐阅读
- bluetooth - 解释 AVRCP 数据包
- java - java数据在spring中从控制器传递时未显示在jsp viw中
- algorithm - Algorithm for distributing points evenly but randomly in a rectangle
- php - 事务内卷曲
- javascript - 自定义 Highcharts 工具提示
- java - 正则表达式验证必须包含至少两个非字母字符的八个或更多字符字符串
- javascript - Get the nearby objects of array item
- java - 在类内部创建对象但在外部方法与在方法内部创建对象有什么区别
- airflow - 如何防止追赶 DAG?
- javascript - 除了用连字符分隔的拆分之外,查找字符串大小的方法?