在Jenkins管道中合并Git命令

时间:2019-02-07 11:15:58

标签: git jenkins jenkins-pipeline jenkins-declarative-pipeline

我的任务是从Bitbucket中提取代码,并检查是否有新提交的文件或从上次提交修改的文件。如果有任何混乱,我需要将文件名和路径复制到.csv文件。在commmand下面将检查diff并复制到.csv文件。但是,同样的活动需要通过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>

1 个答案:

答案 0 :(得分:1)

您正在代码目录中签出,因此您需要使用代码目录作为工作目录。默认情况下,所有步骤都将运行到项目工作区中。

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

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