我有一个Jenkins管道,其中一个阶段进行构建,而另一阶段进行测试。我希望它们成为不同的机器,因为它们具有不同的功能。到目前为止,我的情况如下:

pipeline {
  agent none
  stages {
    stage('Build') {
      agent { node { label 'builder' } }
      steps {
        sh 'build-the-app'
        stash(name: 'app', includes: 'outputs')
      }
    }
    stage('Test’) {
      agent { node { label 'tester' } }
      steps {
        unstash 'app'
        sh 'test-the-app'
      }
    }
  }
}


我遇到的问题是,由于它在两个不同的节点上运行,因此默认情况下会在两个节点上签出存储库。我希望它不这样做,因为它不是必需的。因此,我添加了以下选项:在指定skipDefaultCheckout之后,如何在告诉我指定的阶段后手动告诉管道以检出存储库的方式?

评论

您可以显示添加选项的确切位置吗? (也许添加了注释?)

#1 楼

您随时可以使用checkout scm步骤:

pipeline {
  agent none
  options { skipDefaultCheckout() }
  stages {
    stage('Build') {
      agent { node { label 'builder' } }
      steps {
        checkout scm
        echo 'build-the-app'
        stash(name: 'app', includes: 'outputs')
      }
    }
    stage('Test') {
      agent { node { label 'tester' } }
      steps {
        unstash 'app'
        echo 'test-the-app'
      }
    }
  }
}


#2 楼

您也可以选择在需要检查git的阶段将选项设置为false

pipeline {
  agent none
  options { skipDefaultCheckout(true) }
  stages {
    stage('Build') {
      agent { node { label 'builder' } }
      options { skipDefaultCheckout(false) }
      steps {
        echo 'build-the-app'
        stash(name: 'app', includes: 'outputs')
      }
    }
    stage('Test') {
      agent { node { label 'tester' } }
      steps {
        unstash 'app'
        echo 'test-the-app'
      }
    }
  }
}