Я хочу построить проект с использованием двух репозиториев Git.Один из них содержит исходный код, а другой - сценарии сборки и развертывания.
Я использую конвейер Jenkins для построения моего проекта.Конвейерные сценарии находятся в репозитории Jenkins-pipeline , а Исходный код - в репозитории middleware .Поскольку мои конвейерные сценарии находятся в репозитории Jenkins-конвейера, я настраиваю свой конвейер с помощью Jenkinsfile из репозитория Jenkins-конвейера.
Вот файл Jenkins, который я использую:
pipeline {
agent any
parameters {
string(name: 'repo_branch', defaultValue: 'development', description: 'The branch to be checked out')
string(name: 'git_repo', defaultValue: 'ssh://git@my-server.com/middleware.git' description: 'Git repository from where we are going to checkout the code')
}
options {
buildDiscarder(logRotator(numToKeepStr: '5'))
disableConcurrentBuilds()
timeout(time: 10, unit: 'MINUTES')
}
triggers {
pollSCM('* * * * *')
}
stages {
stage('Checkout git repo') {
steps {
git branch: "${params.repo_branch}", url: "${params.git_repo}", credentialsId: 'git-credentials'
}
}
stage('Build binary') {
steps {
sh "./gradlew clean build -x test"
}
}
}
}
Сейчас,как мы можем видеть, хранилище, которое я клонирую в Jenkinsfile, отличается, а хранилище, в котором я храню свой jenkinsfile, отличается.
Теперь проблема заключается в следующем:
В Jenkinsфайл, я использую pollScm для запуска моего задания Jenkins всякий раз, когда в репозитории появляется новый коммит, но у меня есть два репозитория, которые я настроил для задания, поэтому
- Исходный кодРепозиторий (middleware.git)
- Репозиторий конвейерных сценариев (Jenkins-pipeline.git)
Поэтому, когда в любом из этих репозиториев происходит коммит, моя работа Jenkins запускается, чтоЯ не хочу Я хочу запускать сборку My Jenkins, только когда в моем репозитории исходного кода есть новая фиксация, и НЕ следует запускать сборку, когда в репозиториях Jenkins-конвейера есть фиксация. Как мне это сделать?
Обновление
Я использую общие библиотеки в Jenkinsfile, и эти библиотеки также находятся в другом хранилище.Когда я фиксирую что-то в репозитории совместно используемой библиотеки, то также запускаются задания Jenkins, и я использую совместно используемую библиотеку в нескольких заданиях, поэтому из-за этого запускаются все задания, которые я не хочу.
PSЯ не могу использовать веб-крючки для запуска моей сборки Jenkins, потому что мои Jenkins находятся в частной сети!