Включить команду 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
'''
}
}