在 Jenkins 管道中合并 Git 命令

Incorporate Git command in Jenkins pipeline

我的任务是从 Bitbucket 中提取代码并检查是否有任何新文件提交或上次提交后修改的任何文件。如果有可用的更改,我需要将文件名和路径复制到 .csv 文件。下面的命令将检查差异并复制到 .csv 文件。但同样的 activity 需要通过 Jenkinsfile 管道发生。

git diff --name-only --diff-filter=M @~ > list.csv

Jenkinsfile 脚本:-

#!groovy
void Download_Repositories(){
      checkout([
        $class: 'GitSCM', branches: [[name: '*/master']],
        extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: 'code']],
        userRemoteConfigs: [[url: 'git@bitbucket.org:org-dev/master.git',
        credentialsId:'service-user']]
      ])
}
pipeline {
    agent { label 'LABEL' }
//    triggers { pollSCM('*/5 * * * *') }
  stages {
      stage('Download Repositories') {
        steps {
            Download_Repositories()
            sh '''
            ls -ltr code/playbooks/
            git diff --name-only --diff-filter=M @~ > list.csv
            '''
          }
        }

   }//stages
}//pipeline

错误:-

usage: git diff [--no-index] <path> <path>

您正在代码目录中进行结帐,因此您需要使用代码目录作为您的工作目录。默认情况下,所有步骤都 运行 进入项目工作区。

您可以使用 dir 更改工作目录,请参见以下示例:

steps{
    Download_Repositories()
    dir("${WORKSPACE}/code"){
        sh '''
            ls -ltr code/playbooks/
            git diff --name-only --diff-filter=M @~ > list.csv
            '''
    }
}