В вашем случае должна помочь функция «включенный регион» из плагина Git.См. этот ответ для подробностей.
Таким образом, для конвейера вы можете сгенерировать правильный синтаксис, используя генератор синтаксиса конвейера (под http://<JENKINS_IP>:<JENKINS_PORT>/job/<PATH_TO_PIPELINE_JOB>/pipeline-syntax/
заданием в Пример шага: оформить заказ -> SCM: Git -> Дополнительные действия -> Опрос игнорирует коммитыв определенных направлениях ).Это будет что-то вроде этого:
checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [[$class: 'PathRestriction', excludedRegions: '', includedRegions: 'migrations/.*']], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'test', url: 'http://test.com/test.git']]])
Проверьте эту документацию для деталей (extensions -> includedRegions
).
Для синтаксиса задания dsl это будет похоже на this :
scm {
git {
remote {
...
}
extensions {
cleanBeforeCheckout()
disableRemotePoll() // this is important for path restrictions to work
configure { git ->
git / 'extensions' / 'hudson.plugins.git.extensions.impl.PathRestriction' {
includedRegions "somepath/.*"
excludedRegions "README.md\n\\.gitignore\npom.xml"
}
}
}
}
}
Кроме того, вы можете использовать веб-зацепки GitHub / GitLab / BitBucket для создания проекта, когда изменение помещается в репозиторий.См. этот пример для конфигурации Github и BitBucket и этот пример для конфигурации GitLab.
Если вы хотите построить проект только для изменений в папке migrations
, а недля любых изменений в репозитории вы можете настроить регулярное выражение комментария для запуска сборки и добавлять этот конкретный комментарий (например, «[изменения в папке миграции]») в коммит каждый раз, когда вы хотите запустить сборку.