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的主要内容,如果未能解决你的问题,请参考以下文章

从 Bamboo 到 Jenkins 的单一计划迁移

Jenkins 和 Atlassian Bamboo 的集成

如何在 Jenkins 中触发构建在其他构建成功但在 Bamboo 中运行之后

如何使用 Bamboo 或 jenkins 运行 ansible playbook

有没有办法从 Bamboo 触发 Jenkins 构建?

Expect Scripts 是不是可以与 Jenkins 和 Bamboo 等 CI/CD 工具配合使用?