❝jenkinsиgitlabв настоящее времяDevOpsНаиболее распространен в цепочках инструментовиз,Оставьте в стороне gitlab-ci,Отправка кода Gitlab, запускающая конвейер Jenkins, — самая классическая комбинация. Вот и переход к изменению между Jenkins и gitlab.
Сначала создайте учетные данные GitLab и введите учетные данные в Manage Jenkins->System->enable authentication for '/project' end-point
。
❝через это Конфигурация,Эквивалентно созданию Дженкинса job Учетными данными для доступа к gitlab можно манипулировать, и они будут объявлены и использованы в последующем файле jenkins.
Создайте задание jenkins, выберите Git для управления исходным кодом и введите адрес вашего репозитория исходного кода в gitlab для URL-адреса репозитория — это аутентификация личности, необходимая при извлечении кода.
Выберите «Создать, когда изменение будет отправлено в GitLab» для триггера сборки (помните, что URL-адрес веб-перехватчика GitLab будет заполнен позже в веб-перехватчиках gitlab) и проверьте следующее:
Также нажмите «Дополнительно», «Разрешить ветки» и установите флажок «Фильтровать ветки по регулярному выражению».
Нажмите «Создать», чтобы сгенерировать токен. Этот токен используется для заполнения веб-перехватчика gitlab. Когда gitlab обнаруживает отправку кода, он уведомляет URL-адрес обратного вызова, сгенерированный Дженкинсом, заполненным веб-перехватчиком, и передает этот токен, чтобы предотвратить запуск других. непрерывная интеграция Jenkins.
Примечание. Скопируйте URL-адрес и токен, которые позже будут использоваться для настройки веб-перехватчика gitlab.
❝Этот шагизглазиз В основном с целью прохожденияgitlabкурокизjenkins Информация о задании готова для последующей настройки gitlab-webhook, Сообщите gitlab, какие jenkins запускать job.
Возможные подводные камни в новой версии jenkins
В "Сгенерировать" генерировать При использовании токена, если вы используете более высокую версию jenkins , произойдет ошибка 403 HTTP ERROR 403 No valid crumb was included in the request
Это связано с тем, что эксплойты Jenkins Prevent Cross Site Request Forgery блокируют запросы. Первоначально в более низких версиях Jenkins это можно было отключить в интерфейсе. Кажется, что в более высоких версиях это удалено. Это можно сделать следующими способами.
hudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION = true
Если возникает ситуация, показанная на рисунке ниже, это означает, что команда выполнена успешно.
image.png
Вышеупомянутый метод предназначен для запуска изjenkins в контейнере.,Вам необходимо войти в контейнер, чтобы изменить конфигурацию, которая вступит в силу навсегда.
Измените /usr/local/bin/jenkins.sh. ,найти руководителя Java-строка,добавить в-Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true
# конечный эффект
exec java -Duser.home="$JENKINS_HOME" -Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true "${java_opts_array[@]}" -jar ${JENKINS_WAR} "${jenkins_opts_array[@]}" "$@"
На этом этапе непрерывная интеграция Jenkins настроена, и необходимо настроить веб-перехватчик gitlab для уведомления Jenkins об отправке кода.
Открыть gitlab из repo из Settings-Integrations,URL и Secret Token заполнять jenkins Постройте триггерную часть в задании «обернутьиз», нажмите точку. “Add вебхук", готово!
Перед вводом ссылки в Jenkins предоставляется URL-адрес веб-перехватчика.
точечный тест,если вернуть 200,Это был бы успех,Перейдите в Дженкинс, чтобы узнать, есть ли какая-либо запись автоматической сборки.
Как я могу увидеть статус в gitlab после выполнения задания?
pipeline {
agent any
options {
gitLabConnection('gitlab-connection')
//Manage Jenkins->System->enable authentication for '/project' end-pointYourКонфигурацияизGitLab Connection
}
stages {
stage('build') {
steps {
updateGitlabCommitStatus name: 'build', state: 'running'
hogehoge
}
}
}
post {
success {
updateGitlabCommitStatus name: 'build', state: 'success'
}
failure {
updateGitlabCommitStatus name: 'build', state: 'failed'
}
}
}
Описание параметра: