Для роботи з репозиторієм на початку необхідно додати користувача та його приватні ключі, які використовуються в git.
Потім можна створити таку задачу типу Pipeline.
node('pi') {
stage('Git clone') {
dir('/home/zdimon/project01') {
git credentialsId: '0acbc9ab-ca88-4fbd-a13e-59c3c81c1722', url: 'git@github.com:zdimon/web-starter.git', branch: 'master'
script {
def stdOut = sh(script: "pwd && ls -alh",
returnStdout: true)
echo stdOut
}
}
}
}
node(‘pi’) - вказуємо в якій ноді (на якому сервері) працювати.
stage(‘Git clone’) - позначаємо статію.
dir(‘/home/zdimon/project01’) {…} - говоримо в якій директорії працювати.
Якщо директорію не вказувати, то jenkins для кожного завдання буде створювати окремий каталог усередині папки workspace.
При формуванні команди клону я користувався помічником.
Далі в блоці script ми виконуємо bash команду, заносимо її виведення у файл та виводимо його у консоль.
script {
def stdOut = sh(script: "pwd && ls -alh",
returnStdout: true)
echo stdOut
}
Результат.
У папці .git є каталог hooks з шаблонами bash скриптів, що спрацьовують у різних ситуаціях.
Створюємо новий файл post-commit
#!/bin/sh
echo "Post commit"
Додаємо права на виконання
chmod +x ./git/hooks/post-commit
Тепер цей скрипт буде виконуватись при кожному коміті.
Можна до нього додати запит на сервер із jenkins.
curl http://yourserver/jenkins/git/notifyCommit?url=<URL of the Git repository>
Цей запит просканує всі завдання, які налаштовані з перевіркою специфічного URL.
Ще один варіант запуску.
#!/bin/bash
/usr/bin/curl --user USERNAME:PASS -s \
http://jenkinsci/job/PROJECTNAME/build?token=1qaz2wsx
Для цього запиту необхідно налаштувати завдання віддаленим тригером з токеном.
Запуск певного завдання на її ім’я.
curl http://localhost:8080/job/someJob/build?delay=0sec
curl -X POST http://:/job/job-name-in-jenkins/build?delay=0sec --user user:password