如何从一个詹金斯管道阶段添加另一个git pull

时间:2018-08-31 02:18:54

标签: jenkins jenkins-pipeline

我想问一下如何添加另一个步骤,以在我创建的jenkins管道上提取另一个存储库。从jenkins管道设置中可以看到,我已经指定了一个仓库来拉动ui。然后,在构建完成后,我需要为API拉出另一个存储库并将其构建为一个docker映像。我已经尝试过此doc,但是在将ui文件合并到api上时遇到了问题,这是我使用的管道脚本。

pipeline {
agent { label 'slave-jenkins'}
stages {blah blah
 }
stage('Workspace Cleanup') {
     steps {
         step([$class: 'WsCleanup'])
         checkout scm
     }
    }
stage('Download and Build UI Files') {
steps {
  sh '''#!/bin/bash
     echo "###########################"
     echo "PERFORMING NPM INSTALL"
     echo "###########################"
     npm install
     echo "###########################"
     echo "PERFORMING NPM RUN BUILD"
     echo "###########################"
     npm run build
     echo "###########################"
     echo "Downloading API Repo"
     echo "###########################"
     **git branch: 'master',**
         **credentialsId: 'XXXXXXXXXXXX',**
         **url: 'ssh://git@XXXXXXe:7999/~lXXXXXX.git'**
     echo ""
     '''
       }
      }
       }

1 个答案:

答案 0 :(得分:0)

您不应在外壳程序脚本中包含Jenkins Pipeline DSL-例如,这必须是一个单独的步骤

steps {
    // first step to run shell script
    sh '''#!/bin/bash
         echo "###########################"
         echo "PERFORMING NPM INSTALL"
         echo "###########################"
         npm install
         echo "###########################"
         echo "PERFORMING NPM RUN BUILD"
         echo "###########################"
         npm run build
         echo "###########################"
         echo "Downloading API Repo"
         echo "###########################"
    '''
    // second step to checkout git repo
    git branch: 'master',
        credentialsId: 'XXXXXXXXXXXX',
        url: 'ssh://git@XXXXXXe:7999/~lXXXXXX.git'
}

但是在一个工作空间中混合两个仓库(在一项工作中混合两个职责)可能不是一个好主意。如果您将连续交付过程分成多个工作,那就更好了:

  • 创建UI的工作;
  • 创建API的工作;
  • 创建Docker映像的工作。

,然后链接此作业,以便一个接一个地执行它们,并将构建工件彼此传递。因此,您CD程序的每个部分都将满足以下原则: 单一责任。