Jenkins 到 Bamboo 迁移和运行 Groovy
Posted
技术标签:
【中文标题】Jenkins 到 Bamboo 迁移和运行 Groovy【英文标题】:Jenkins to Bamboo Migration & Running Groovy 【发布时间】:2020-04-09 06:51:06 【问题描述】:我对 Jenkins 很陌生,对 Bamboo 来说完全是新手。我有一个 Jenkins 流水线,我正在尝试在 Bamboo 中创建一个等价物(我相信它被称为计划)。
我有一些我想在我的 Bamboo 计划中运行的 groovy 代码。
为了简洁明了,我将简化下面的代码。
假设这个文件名为me_myEvent.groovy
,存储在https://github.com/myuser/repo1
def processEvent( Map args )
String strArg1 = args.myArg1;
String strArg2 = args.myArg2;
// etc...
我的 Jenkins 管道有一个链接到 https://github.com/myuser/repo1
的全局管道库 (myGitLibraryFromGlobal
),我的管道是:
@Library('myGitLibraryFromGlobal@master') abc
pipeline
agent any
stages
stage('First Stage')
steps
script
def myObj = new com.mysite.me_myEvent();
def returnVal = myObj.processEvent(arg1: 'foo', arg2: 'bar');
)
我将 GitHub 存储库保存在 Bamboo 中,作为一个名为 abc123
的全局链接存储库。
我可以使用script
任务在 Bamboo 中实现相同的目标吗?这在 Bamboo 中会是什么样子?
【问题讨论】:
【参考方案1】:简短的回答是 NO,因为 Atlassian Bamboo 不支持 the DSL Groovy or Scripted Groovy pipeline。另外,请记住,当您运行 Jenkins Groovy 管道时,Jenkins 会将自己的环境添加到脚本执行中,而不仅仅是运行“裸”槽脚本(即没有暴露的 Jenkins 命令和变量)。
如果您需要运行支持Configuration as Code 理念的“裸”常规脚本,一种解决方案是创建Bamboo Java/YAML spec。然后你需要创建ScriptTask。
// this is called when the plan and stages are created
new Job("JobName","JobKey").tasks(new VcsCheckoutTask(), // to download the groovy script
new ScriptTask().inlineBody("groovy me_myEvent.groovy").interpreterBinSh())
注意:你的Bamboo build agent应该有一个预装的groovy。
另一种解决方案是使用 Bamboo 插件Groovy Tasks for Bamboo。
【讨论】:
以上是关于Jenkins 到 Bamboo 迁移和运行 Groovy的主要内容,如果未能解决你的问题,请参考以下文章
Jenkins 和 Atlassian Bamboo 的集成
如何在 Jenkins 中触发构建在其他构建成功但在 Bamboo 中运行之后