Почему предыдущий этап вызывается снова при выполнении следующего этапа в Jenkinsfile

#jenkins #jenkins-pipeline

#дженкинс #дженкинс-конвейер

Вопрос:

Я наблюдаю, что предыдущий этап вызывается при выполнении следующего этапа, не уверен, что здесь не так с моим jenkinsfile

Следовал этой документации :

https://jenkins.io/doc/book/pipeline/syntax/#declarative-pipeline

 pipeline { 
  agent none

  options {
    gitLabConnection('MY_CONNECTION')
  }

  stages {

    stage('scm_checkout') {
      agent { 
        label 'win_64'
      } 
      steps{
        deleteDir()
        checkout([$class: 'GitSCM',branches:[[name: '*/master']] 
        bat 'python -u repo/Jenkins_Scripts/createZip.py'
      }
    }

    stage('scm_build') {
      agent { 
        label 'win_64'
      } 
      steps{
        bat 'python -u repo/Jenkins_Scripts/build.py'
      }
    }
  } // end of stages

}
  

Вывод

 [Pipeline] stage
[Pipeline] { (scm_checkout)
[Pipeline] node
Running on xxxxxx in C:jennewworkspacePCQG-Pipeline
[Pipeline] {
[Pipeline] checkout
 > git rev-parse --is-inside-work-tree # timeout=10
[Pipeline] withEnv
[Pipeline] {
[Pipeline] deleteDir
[Pipeline] checkout
Cloning the remote Git repository

[Pipeline] }
[Pipeline] // withEnv
[Pipeline] }
[Pipeline] // node
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (scm_build)
[Pipeline] node
Running on xxxxxx in C:jennewworkspacePCQG-Pipeline
[Pipeline] {
[Pipeline] checkout
Cloning the remote Git repository
  

Аналогично, это клонирует репозиторий снова и снова с каждым этапом. Не уверен, где я совершаю ошибку.

Ответ №1:

Я думаю, что то, что вы здесь делаете, немного сбивает с толку. Это Jenkinsfile правильно? Таким образом, агент по умолчанию будет выполнять проверку самостоятельно. Этапы не вызываются друг от друга.

Чтобы отключить это, вам нужно будет добавить это в свою часть агента:

 options { skipDefaultCheckout() }
  

Комментарии:

1. Спасибо, это помогает!

2. Рад помочь. Не забудьте принять ответ, который подходит вам.