Для работы с репозиторием в начале необходимо добавить пользователя и его приватные ключи, используемые в 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 c шаблонами 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