如何使用管道将作业集成到Jenkins中

时间:2017-01-30 11:55:26

标签: jenkins jenkins-plugins

我有四个工作 - A,B,C,D

A-构建

B-测试

C-声纳分析

D-部署

我的情景 -

1-我需要创建一个管道 A-> B-&以及c

2-我需要创建其他管道 A-> B-> d

我的问题是 -

1-如果我选择“在其他项目上触发参数化构建”并在作业A下添加作业B,我就不能在第二种情况下使用作业A.

如何在不影响管道的情况下使用作业A。

3 个答案:

答案 0 :(得分:2)

如果我正确理解了这个问题,那么您希望创建两个管道。在管道中,您可以使用阶段定义要构建的作业。

根据您的要求,您需要创建两个管道并根据需要定义阶段。 Trigger Parameterized builds on other projects不适合您。

stage('Build A') {
build job: 'A' , parameters: <Give_your_own_parameters>
}

stage('Build B') {
build job: 'B' , parameters: <Give_your_own_parameters>
}
stage('Build C') {
build job: 'C' , parameters: <Give_your_own_parameters>
}

您还可以从正在构建的管道的Pipeline Syntax部分中的Pipeline获取语法。

答案 1 :(得分:0)

您可以通过创建A和B的重复项目来简化流程。在 New Item&gt;期间,可以轻松复制项目。从项目A中复制详细信息

答案 2 :(得分:0)

由于一个简单的原因,这并不容易实现:您没有像使用它们那样使用Jenkins作业。

詹金斯的工作概念是工作是一系列行动。工作没有单一的责任,例如只是构建,只是测试或只是部署。在你的情况下,你应该有3个&#34;动作&#34;在工作,3&#34;行动&#34;在另一份工作中。

自由式工作方法

常见的方法是:

建立工作

  1. 行动1:构建
  2. 行动2:测试
  3. 行动3:运行声纳分析
  4. 部署工作

    1. 行动1:构建
    2. 行动2:测试
    3. 行动3:部署
    4. 除非我在这里遗漏了一些东西,否则你不想在4个独立的工作中分开这些3/4的行动,因为这将是非常有效。例如,测试阶段和声纳分析应该在代码构建完成后运行,因此您希望共享相同的工作区以便能够测试构建的代码。

      管道方法

      另一种 - 首选 - 方法是使用实​​际的Jenkins pipelines,即Groovy脚本,它允许您将步骤定义为函数,然后在您的&#34;构建工作&#34;和&#34;部署工作&#34;。

      例如,您可以拥有包含构建/测试函数的functions.groovy:

      <强> functions.groovy

      def build() {
        // Build code here...
      }
      
      def test() {
        // Test code here...
      }
      

      <强>集结job.groovy

      node {
         def functions = load 'functions.groovy'
      
         stage('Build') {
             functions.build()
         }
         stage('Test') {
             functions.test()
         }
         stage('Sonar Analysis') {
             // Sonar analysis code...
         }
      }
      

      <强>部署-job.groovy

      node {
         def functions = load 'functions.groovy'
      
         stage('Build') {
             functions.build()
         }
         stage('Test') {
             functions.test()
         }
         stage('Deploy') {
             // Deploy code...
         }
      }