У меня есть много функций в моем репозитории Bitbucket и один файл Jenkins для запуска одного задания для развертывания этих функций Python. Мне нужно развернуть функции на основе измененных файлов в репозитории. Структура моего репо такова:
-- functions
-- func1
-- app.py
-- func2.py
-- app.py
-- fun3.py
-- app.py
Что я хочу сделать, так это: когда я изменяю какую-то функцию, развертывайте только эту функцию, а не другие. Поэтому, когда я фиксирую изменение, мне нужно найти измененный файл и развернуть соответствующую функцию. Внутри jenkinsfile я сделал что-то вроде этого:
sh '''
last_commit=$(git describe --always)
access_token=$(cat BITBUCKET_TOKEN)
changed_file=$(curl https://api.bitbucket.org/1.0/repositories/account/reponame/changesets/$last_commit?access_token=$access_token | jq -r .files[].file)
echo $changed_file > CHANGED_FILE
'''
CHANGED_FILE = readFile 'CHANGED_FILE'
if (CHANGED_FILE.contains('functions/func1')) {
// instructions ...
}
CHANGED_FILE = readFile 'CHANGED_FILE'
if (CHANGED_FILE.contains('functions/func2')) {
// instructions ...
}
Здесь я получаю только последний коммит и получаю от него только один измененный файл. Я хочу знать, какую логику использовать для обработки множества коммитов со многими измененными файлами? Я пытался использовать плагин Webhook, но он не может этого сделать.