当前位置: 首页 > 知识库问答 >
问题:

如何在 jenkins 中运行具有不同参数的同一管道?

左丘成天
2023-03-14

我有一个管道脚本,如下所示:

node {
  try {
    stage('Prepare') {
      // git clone here
    }
    stage('Compile') {
      sh "make ${build_type}"
    }
    stage('Test') {
      sh "./run tests ${build_type}"
    }
  }
  finally {
    if (fileExists("test_results.xml")) {
      junit "test_results.xml"
    }
    emailext subject: "Build finished",
      body: '${JELLY_SCRIPT, template="some-template.template"}',
      to: "some-one@somewhere"
  }
}

${build_type}可以是“发布”或“调试”。

当我的构建收到触发器时,我希望我的管道为${build_type}中的每个参数运行一次,然后向我发送一封电子邮件,其中包含有关两个构建的报告。

我怎样才能做到这一点?

我试图在编译阶段内定义一个并行块,并在那里设置build_type,但这并不能使其他阶段并行运行。

共有1个答案

禹昆
2023-03-14

我希望下面的片段可以帮助您。通过这种方式,您可以包括多个构建类型dev、qa和prod。

def build_types = "dev;qa"

node {
try {
      stage('Prepare') {
          // git clone here
      }

     def buildTypeVar = build_types.tokenize(';')

     for(int i=0;i<buildTypeVar.size();i++){

        buildType=buildTypeVar.get(i).trim()

         stage('Compile ${build_type}') {
             sh "make ${build_type}"
        }
        stage('Test ${build_type}') {
            sh "./run tests ${build_type}"
        }
    }

 }
 finally {
  if (fileExists("test_results.xml")) {
  junit "test_results.xml"
  }
  emailext subject: "Build finished",
    body: '${JELLY_SCRIPT, template="some-template.template"}',
    to: "some-one@somewhere"
 }
}
 类似资料:
  • 问题内容: 我在jenkinsfile中使用管道,但不确定如何在Jenkins和管道中正确链接作业。 我在jenkinsfile中定义了参数(有些具有默认值,有些 没有 ),并使用来自jenkins gui的参数进行初始化。问题是,它接缝了管道中的参数以覆盖我的作业参数, 即使在 管道中 未指定默认值时也是如此, 这意味着管道正在覆盖jenkins中的作业设置。 例如,我的一项工作是设置为使用一些

  • 我正在使用以下项目 https://github.com/akotoe/android-slide-out-menu.git开发滑出菜单应用程序。 如何通过单击幻灯片菜单中的列表在同一视图中运行不同的活动。 例如,如果我单击项目1,我想在一个单独的活动中解析一个XML文件,并将该活动作为子项添加到此父视图中。因为在每一项单击上,我希望解析一个单独的XML文件,并且我希望在一个单独的布局文件中表示解

  • 我不想允许相同类型(相同存储库)的两个作业在同一节点上并行运行。 如何在Jenkinsfile中使用groovy做到这一点?

  • 问题内容: 我试图用来创建我的,以确保我的构建/项目的质量。该项目也需要使用和。一切在我的本地计算机上都可以正常运行,但是现在我正在尝试使环境一致,可重现。当我尝试在新的虚拟机中运行时,会中断一个在本机中正常运行但 不在 新vm中运行的。 我检查了版本,,,(其)一切都是一样的。但是,我的Maven项目在此测试中失败了。 我在这里想念什么?任何想法,建议都会受到赞赏,因为我现在还没有想法,到目前为

  • 我正在运行下面的管道,它为DotNetCore2.2运行“构建+声呐扫描程序分析”阶段 舞台设置如下 我已经按照Sonarqube文档的建议在全局配置中安装了该工具 该dll存在并且权限已分配给Jenkins 该dll是可执行的 在该路径中手动运行时的dll-它运行 提前感谢你的帮助。

  • 问题内容: 我想在gradle中定义一个任务(称为),该任务运行gradle任务,但具有的固定值。我也希望以后可以使用原始任务。 我的问题是,我无法转移清单的设置。 我累了 我以为我要通过对archiveName和manifest使用其他值来重新定义任务。 运行时会生成一个可执行的JAR文件。 运行时会生成一个jar文件。不幸的是,当尝试使用我运行程序时,出现错误消息: java -jar bui