Как часть сборки, у меня есть следующие этапы:
- Скомпилируйте и упакуйте проект
- Параллельные задания:
- Выполните юнит-тесты
- Запустите сервер, выполнив файл jar, созданный на этапе 1
- Дождитесь готовности сервера и запустите приемочные тесты для этого
вопрос в том, когда приемочные тесты закончены, как я могу сигнализировать другой параллельной работе, чтобы выключить сервер?В настоящий момент процесс выполнения jar продолжает выполняться, даже если я убиваю сборку из Jenkins.
Кроме того, как в случае отмены сборки вручную, как мы можем перехватить это событие и дать сигнал серверу закрыть себя?использовать скриптовый конвейер / Groovy?
Пример кода:
node('jenkins-jenkins-slave') {
stage('Parallel jobs') {
parallel
stage('Preparing server for acceptance test') {
script {
def propertiesString = ''
def jvmOptions = ''
def properties = readProperties file: "${propertiesFile}".toString()
properties.each { k, v ->
propertiesString = propertiesString + "-D${k}=${v} ".toString()
}
sh "java ${jvmOptions} -Dloader.path=${loaderPath} ${propertiesString}-jar ${jarFile} --spring.profiles.active=${activeProfiles}"
}
},
stage('Acceptance tests') {
script {
def scriptName = 'wait_until_env_ready.sh'
def exists = fileExists "$scriptName"
if(!exists) {
def scriptContent = libraryResource "${scriptName}"
writeFile file: "${scriptName}", text: scriptContent
sh "chmod +x ${scriptName}"
}
sh "./wait_until_env_ready.sh http://localhost:8090/manage/health"
sh "mvn -B test -Dmaven.repo.local=/root/.m2/repository -DskipTests=true -DskipITs=false"
// How to signal the above stage to shut down the jar execution?
}
}
}
}