Включить команду Git в конвейер Jenkins

Моя задача - извлечь код из 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 ответ

Решение

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

Ты можешь использовать dir чтобы изменить рабочий каталог, см. пример ниже:

steps{
    Download_Repositories()
    dir("${WORKSPACE}/code"){
        sh '''
            ls -ltr code/playbooks/
            git diff --name-only --diff-filter=M @~ > list.csv
            '''
    }
}
Другие вопросы по тегам