Этот плагин позволяет Gitee запускать сборки в Jenkins при фиксации кода или открытии/обновлении запросов на вытягивание. Он также может отправлять статус сборки обратно в Gitee.
Запуск сборки при проверке PR и прохождении теста (пользователи могут запускать развёртывание, а функцию автоматического слияния PR можно использовать для улучшения рабочего процесса.)
Проверьте режим запуска, чтобы автоматически добавить WebHook в Gitee. Установка вручную
Скачайте последний релиз с сайта Gitee.com. Для этого:
Перейдите в Manage Jenkins -> Manage Plugins -> Advanced.
В разделе Upload Plugin File выберите скачанный файл и нажмите Upload.
На следующих страницах проверьте, что установка завершена, и перезапустите Jenkins, если нет запущенных заданий.
Конфигурация глобального плагина
Настройка соединения с Gitee
После успешной настройки вы увидите следующее изображение:
Создание новой задачи сборки
Перейдите на Jenkins -> New Item, введите «Gitee Test» в качестве имени, выберите Freestyle project и сохраните для создания проекта сборки.
Глобальная конфигурация задачи
В глобальной конфигурации задачи вам нужно выбрать соединение с кодом из предыдущего шага. Перейдите в Configure -> General задачи (например, Gitee Test) и выберите соединение с кодом, настроенное ранее в соединении Gitee, как показано на рисунке:
Конфигурация управления исходным кодом
Перейдите в Configure -> Source Code Management задачи (например, Gitee Test).
Нажмите Git.
Введите адрес вашего хранилища, например git@your.gitee.server:gitee_group/gitee_project.git.
Нажмите кнопку Advanced и введите в поле Name значение origin, а в поле Refspec — +refs/heads/:refs/remotes/origin/ +refs/pull//MERGE:refs/pull//MERGE. Обратите внимание, что новая версия jenkins больше не принимает несколько описаний refs, содержащих * одновременно. Если только триггер push может написать первую половину, если только PR триггеры, то можно записать только вторую половину. Подробности см. на рисунке ниже:
В Credentials введите учётные данные пользователя и пароля, соответствующие HTTPS-адресу git-хранилища, или учётные данные ключа SSH, соответствующего SSH. Обратите внимание, что токены Gitee API нельзя использовать для управления исходным кодом, они используются только для вызова API плагина gitee.
Варианты Branch Specifier:
Варианты Additional Behaviours:
Установите Имя репозитория на «origin».
Установите Ветвь для слияния в «${ReleaseBranch}». Это основная ветвь (ветвь релиза), которую вы хотите объединить.
Для рабочего процесса PR, сервер Code Cloud предварительно объединил исходную и целевую ветви PR. Вы можете собрать его напрямую. Если целевая ветвь не является основной ветвью (ветвью релиза), вы также можете выполнить слияние перед сборкой апелляции.
Конфигурация показана на рисунке:
Рисунок: Конфигурация управления исходным кодом
Перейдите к триггеру сборки конфигурации задачи: Настроить -> Вкладка «Триггеры сборки»
Рисунок: конфигурация триггера
Перейдите к настройке шага после сборки конфигурации задачи: Настроить -> вкладка «Действия после сборки»
Щёлкните раскрывающийся список «Добавить действие после сборки», чтобы выбрать: Принять запрос на вытягивание Gitee при успешном выполнении.
Рисунок: настройка шага после сборки
Войдите в проект Gitee, установленный в конфигурации управления исходным кодом, выберите Управление -> WebHooks.
В управлении WebHook на Gitee выберите WebHook с установленным флажком PUSH и нажмите «Тест», чтобы наблюдать за состоянием сборки задачи Jenkins.
Отредактируйте файл на странице проекта Gitee и отправьте. Тестирование PR-триггера сборки
В управлении WebHook на Gitee выберите WebHook с отмеченным Pull Request и нажмите «Тест», чтобы наблюдать за статусом построения задачи Jenkins.
Создайте новый Pull Request в проекте Gitee и наблюдайте за статусом сборки задачи Jenkins.
Использование скриптов для настройки триггеров
pipeline {
agent any
triggers {
gitee (
// Триггер при отправке кода
triggerOnPush: true,
// Запись комментария отправки
triggerOnCommitComment: true,
// Новые Pull Requests
triggerOnOpenPullRequest: true,
// Обновление Pull Requests «0»:None «1»:Source Branch updated «2»:Target Branch updated «3»:Both Source and Target Branch updated
triggerOnUpdatePullRequest: "1",
// Принятие Pull Requests
triggerOnAcceptedPullRequest: true,
// Закрытие Pull Requests
triggerOnClosedPullRequest: true,
// Одобренные Pull Requests
triggerOnApprovedPullRequest: true,
// Протестированные Pull Requests
triggerOnTestedPullRequest: true,
// Комментарий Pull Requests
triggerOnNoteRequest: true,
// Регулярное выражение для содержания комментария
noteRegex: "build",
// Команда фильтрации сборки «NONE»: Нет «CI_SKIP»:[ci-skip] команда пропустить сборку «CI_BUILD»:[ci-build] команда запустить сборку
buildInstructionFilterType: "NONE",
// PR не требует фильтрации сборки при необходимости тестирования
ciSkipFroTestNotRequired: false,
// Фильтр версии Commit, которая была построена
skipLastCommitHasBeenBuild: false,
// Отмена незавершённой сборки по тому же Pull Request
cancelIncompleteBuildOnSamePullRequest: false,
// Ветви, разрешённые для запуска сборки «All»: Разрешить все ветви запускать сборку «NameBasedFilter»: Фильтровать по имени ветви «RegexBasedFilter»:Фильтровать ветви на основе регулярных выражений
branchFilterType: "All",
// «NameBasedFilter» — включить
includeBranchesSpec: "include",
// «NameBasedFilter» — исключить
excludeBranchesSpec: "exclude",
// «RegexBasedFilter» — регулярное выражение целевой ветви
targetBranchRegex: "regex",
// Пароль WebHook Gitee
secretToken: "123456"
)
}
stages {
stage('Build') {
steps{
echo 'Hello world!'
}
}
}
}
В настоящее время поддерживаются переменные среды, показанные в следующих функциях. Различные триггеры WebHook могут привести к тому, что некоторые переменные будут пустыми. Пожалуйста, установите плагин для получения подробной информации. EnvInject Plugin, просмотр переменных среды сборки.
public Map<String, String> getBuildVariables() {
MapWrapper<String, String> variables = new MapWrapper<>(new HashMap<String, String>());
variables.put("giteeBranch", branch);
variables.put("giteeSourceBranch", sourceBranch);
variables.put("giteeActionType", actionType.name());
variables.put("giteeUserName", userName);
variables.put("giteeUserEmail", userEmail);
variables.put("giteeSourceRepoHomepage", sourceRepoHomepage);
variables.put("giteeSourceRepoName", sourceRepoName);
variables.put("giteeSourceNamespace", sourceNamespace);
variables.put("giteeSourceRepoURL", sourceRepoUrl);
variables.put("giteeSourceRepoSshUrl", sourceRepoSshUrl);
variables.put("giteeSourceRepoHttpUrl", sourceRepoHttpUrl);
variables.put("giteePullRequestTitle", pullRequestTitle);
variables.put("giteePullRequestDescription", ...);
``` pullRequestDescription);
variables.put("giteePullRequestId", pullRequestId == null ? "" : pullRequestId.toString());
variables.put("giteePullRequestIid", pullRequestIid == null ? "" : pullRequestIid.toString());
variables.put("giteePullRequestTargetProjectId", pullRequestTargetProjectId == null ? "" : pullRequestTargetProjectId.toString());
variables.put("giteePullRequestLastCommit", lastCommit);
variables.put("giteePushCreated", created ? "true" : "false");
variables.put("giteePushDeleted", deleted ? "true" : "false");
variables.putIfNotNull("giteePullRequestState", pullRequestState);
variables.putIfNotNull("giteeMergedByUser", mergedByUser);
variables.putIfNotNull("giteePullRequestAssignee", pullRequestAssignee);
variables.put("giteeTargetBranch", targetBranch);
variables.put("giteeTargetRepoName", targetRepoName);
variables.put("giteeTargetNamespace", targetNamespace);
variables.put("giteeTargetRepoSshUrl", targetRepoSshUrl);
variables.put("giteeTargetRepoHttpUrl", targetRepoHttpUrl);
variables.put("giteeBefore", before);
variables.put("giteeAfter", after);
variables.put("giteeBeforeCommitSha", before);
variables.put("giteeAfterCommitSha", after);
variables.put("giteeRef", ref);
variables.put("ref", ref);
variables.put("beforeSha", beforeSha);
variables.put("isTag", isTag);
variables.put("sha", sha);
variables.put("status", status);
variables.put("stages", stages);
variables.put("createdAt", createdAt);
variables.put("finishedAt", finishedAt);
variables.put("duration", buildDuration);
variables.put("jsonBody", jsonBody);
variables.put("noteBody", noteBody);
variables.putIfNotNull("giteeTriggerPhrase", triggerPhrase);
return variables;
}
# Поддержка пользователей
Если у вас возникла проблема или вопрос по использованию плагина, убедитесь, что вы используете последнюю версию. Затем создайте проблему в проекте Gitee, если это необходимо. Новые проблемы должны включать следующее:
* Версия Jenkins (например, 2.111)
* Соответствующий вывод журнала из плагина (см. ниже инструкции по его получению)
Плагин Gitee Jenkins представил улучшенное ведение журнала для целей отладки. Чтобы включить его:
1. Перейдите в Jenkins -> Управление Jenkins -> Системный журнал
2. Добавьте новый регистратор
3. Введите «Gitee plugin» или любое другое название
4. На следующей странице введите «com.gitee.jenkins» для Logger, установите уровень журнала на FINEST и сохраните
5. Затем нажмите на свой журнал плагина Gitee jenkins, при необходимости очистите этот журнал и затем используйте Gitee для запуска некоторых действий
6. Обновите страницу журнала, и вы должны увидеть вывод
# Участвуйте в разработке
Добро пожаловать, чтобы представить предложения по функциям сценариев CI или напрямую внести вклад в PR-код
## Упаковка или запуск тестов
Чтобы выполнить файл hpi плагина, сопровождающие могут запустить ``mvn package`` Чтобы выпустить снимок, например, с исправлением ошибки для тестирования пользователями, просто запустите ``mvn hpi:run``
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )