Я пытаюсь настроить рабочий процесс jenkins для выполнения наших интеграционных тестов. Наши интеграционные тесты работают следующим образом:
Кто-то вносит изменения в LibraryA
в функциональной ветке git. Мы хотели бы, чтобы jenkins запускал модульные тесты для кода в функциональной ветке, затем мы хотели бы установить код из этой функциональной ветки в client1
и client2
(которые являются пользователями LibraryA
) и запускать их тесты.
Я смог настроить рабочий процесс так, чтобы он делал все, кроме получения правильной фиксации в функциональной ветке LibraryA
. Вместо этого моя установка просто извлекает фиксацию из какой-то (на первый взгляд случайной) ветки LibraryA
.
У нас много веток функций, поэтому жесткое кодирование конкретной ветки в настройке рабочего процесса не кажется уместным. Кажется, что должен быть какой-то способ получить хэш коммита, который запускает задание рабочего процесса (даже при использовании опроса SCM).
Моя установка выглядит так:
currentBuild.setDisplayName("#" + env.BUILD_NUMBER)
node {
git credentialsId: '033df7f1-7752-46bd-903d-8a70e613eed0', url: '[email protected]:mycompany/myrepo.git'
sh '''
echo `git rev-parse HEAD` > libraryA_version.txt
sudo docker run --rm=true -e LANG=en_US.UTF-8 -a stdout -i -t mycompany/libraryA run_tests
'''
archive 'libraryA_version.txt'
}
def integration_jobs = [:]
integration_jobs[0]={
node{
ws {
unarchive mapping: ['libraryA_version.txt':'.']
sh 'sudo docker run -t --rm mycompany/client1:v1 bash run_tests.sh "`cat libraryA_version.txt`"'
}
}
}
integration_jobs[1] = {
node{
ws {
unarchive mapping: ['libraryA_version.txt' : '.']
sh 'sudo docker run -t --rm mycompany/client2 run_tests.sh "`cat libraryA_version.txt`" '
}
}
}
parallel integration_jobs
Итак, мой текущий вопрос заключается в том, как настроить репозиторий/опрос git, чтобы получить правильный коммит для запуска в первом тесте, который будет использоваться в libraryA_version.txt
в последующих тестах?
В качестве альтернативы, должен ли я пройти этот процесс совершенно по-другому?