Как запустить сервер в jenkins для параллельного запуска приемочных тестов? - PullRequest
0 голосов
/ 17 октября 2018

Как часть сборки, у меня есть следующие этапы:

  1. Скомпилируйте и упакуйте проект
  2. Параллельные задания:
    • Выполните юнит-тесты
    • Запустите сервер, выполнив файл 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?
            }
        }       
    }
}

1 Ответ

0 голосов
/ 17 октября 2018

То, что вы ищете, это post - always -секция .

Также вам нужен какой-то способ завершить работу сервера.Например, найдите его PID и kill в пределах post.

...