1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/oschina-Gitee-Jenkins-Plugin

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Содержание

Введение

Этот плагин позволяет Gitee запускать сборки в Jenkins при фиксации кода или открытии/обновлении запросов на вытягивание. Он также может отправлять статус сборки обратно в Gitee.

Текущие поддерживаемые функции

  • При отправке кода в Gitee настроенный Webhook запускает задачу сборки Jenkins.
  • Комментарии к записи отправки запускают задачу сборки Jenkins для соответствующей версии записи отправки.
  • Когда отправляется запрос на вытягивание в проект Gitee, настроенные Webhooks запускают задачи сборки Jenkins, которые поддерживают действия PR: Новое, Обновление, Принять, Закрыть, Пропустить проверку, Пройти проверку.
  • Поддержка фильтрации инструкций [ci-skip] или инструкции [ci-build] для запуска сборки.
  • Фильтр версий коммитов, которые уже были собраны. Если ветка является Push, фильтруется тот же самый Push ветки, а если ветка является PR, фильтруется тот же PR.
  • Фильтры запускаются по имени ветки.
  • Регулярные выражения фильтруют ветви, которые могут быть запущены.
  • Установка пароля аутентификации Webhook.
  • Операции после сборки могут настроить результаты сборки PR для комментирования в соответствующем PR Gitee.
  • Операция после сборки настраивается PR, запущенная успешной сборкой, соответствующий PR может быть автоматически объединён.
  • Для всех событий, связанных с PR, если конфликты кода PR не могут быть автоматически объединены, сборка не будет запущена; и если настроена функция комментирования PR, комментарий PR предложит конфликт.
  • Комментарии PR можно запустить через WebHook (можно использовать для PR, чтобы вызвать сбой сборки, чтобы облегчить повторный запуск сборки из комментариев платформы кода).
  • Поддержка настройки PR не требует фильтрации для запуска сборки при необходимости тестирования. (Можно использовать для создания тестовой среды развёртывания без тестирования).
  • Поддерживает ту же PR для запуска построения, отменяет незавершённое построение в процессе и переходит к текущему построению (то же самое построение PR не ставится в очередь, и несколько разных построений PR всё ещё должны быть поставлены в очередь).

Функции в плане

  1. Запуск сборки при проверке PR и прохождении теста (пользователи могут запускать развёртывание, а функцию автоматического слияния PR можно использовать для улучшения рабочего процесса.)

  2. Проверьте режим запуска, чтобы автоматически добавить WebHook в Gitee. Установка вручную

  3. Скачайте последний релиз с сайта Gitee.com. Для этого:

    • Перейдите в раздел release.
    • Выберите последнюю версию плагина.
    • Скачайте файл XXX.hpi.
  4. Перейдите в Manage Jenkins -> Manage Plugins -> Advanced.

  5. В разделе Upload Plugin File выберите скачанный файл и нажмите Upload.

  6. На следующих страницах проверьте, что установка завершена, и перезапустите Jenkins, если нет запущенных заданий.

Конфигурация глобального плагина

Настройка соединения с Gitee

  1. Перейдите на Jenkins -> Manage Jenkins -> Configure System -> Gitee Configuration -> Gitee connections.
  2. Введите имя соединения (например, «Gitee» или другое название).
  3. Введите полный URL-адрес Gitee: https://gitee.com (для клиентов Gitee приватизации введите развёрнутый домен).
  4. Если вы не настроили частный токен Code Cloud APIV5 в Credentials, нажмите Add -> Jenkins.
    • В Domain выберите Global credentials.
    • В Kind выберите Gitee API Token.
    • Выберите необходимый диапазон в Scope.
    • Введите свой токен в поле Gitee API Token, чтобы получить адрес: https://gitee.com/profile/personal_access_tokens.
    • Укажите ID и описание в полях ID и Description.
  5. Выберите настроенный токен Gitee APIV5 в Credentials.
  6. Нажмите Advanced, где вы можете настроить, следует ли игнорировать ошибки SSL (в зависимости от того, поддерживает ли ваша среда Jenkins это) и установить период ожидания для теста ссылки (в зависимости от вашей сетевой среды).
  7. Нажмите Test Connection, чтобы проверить успешность соединения. Если оно не работает, проверьте шаги 3, 5 и 6.

После успешной настройки вы увидите следующее изображение:

Создание новой задачи сборки

Перейдите на Jenkins -> New Item, введите «Gitee Test» в качестве имени, выберите Freestyle project и сохраните для создания проекта сборки.

Глобальная конфигурация задачи

В глобальной конфигурации задачи вам нужно выбрать соединение с кодом из предыдущего шага. Перейдите в Configure -> General задачи (например, Gitee Test) и выберите соединение с кодом, настроенное ранее в соединении Gitee, как показано на рисунке:

Конфигурация управления исходным кодом

Перейдите в Configure -> Source Code Management задачи (например, Gitee Test).

  1. Нажмите Git.

  2. Введите адрес вашего хранилища, например git@your.gitee.server:gitee_group/gitee_project.git.

  3. Нажмите кнопку Advanced и введите в поле Name значение origin, а в поле Refspec — +refs/heads/:refs/remotes/origin/ +refs/pull//MERGE:refs/pull//MERGE. Обратите внимание, что новая версия jenkins больше не принимает несколько описаний refs, содержащих * одновременно. Если только триггер push может написать первую половину, если только PR триггеры, то можно записать только вторую половину. Подробности см. на рисунке ниже:

  4. В Credentials введите учётные данные пользователя и пароля, соответствующие HTTPS-адресу git-хранилища, или учётные данные ключа SSH, соответствующего SSH. Обратите внимание, что токены Gitee API нельзя использовать для управления исходным кодом, они используются только для вызова API плагина gitee.

  5. Варианты Branch Specifier:

    • Для рабочего процесса одного хранилища введите origin/${giteeSourceBranch}.
    • Для рабочего процесса PR введите pull/${giteePullRequestIid}/MERGE.
  6. Варианты Additional Behaviours:

    • Если вы хотите объединить ветку по умолчанию (выпущенную ветку) перед сборкой отправленной ветки, вы можете сделать следующее:
      • Нажмите на раскрывающийся список Add.
      • Выберите Merge. Перед сборкой
  7. Установите Имя репозитория на «origin».

  8. Установите Ветвь для слияния в «${ReleaseBranch}». Это основная ветвь (ветвь релиза), которую вы хотите объединить.

Для рабочего процесса PR, сервер Code Cloud предварительно объединил исходную и целевую ветви PR. Вы можете собрать его напрямую. Если целевая ветвь не является основной ветвью (ветвью релиза), вы также можете выполнить слияние перед сборкой апелляции.

Конфигурация показана на рисунке:

Рисунок: Конфигурация управления исходным кодом

Конфигурация триггера

Перейдите к триггеру сборки конфигурации задачи: Настроить -> Вкладка «Триггеры сборки»

  1. «Включённые триггеры Gitee»: отметьте правила триггеров сборки, которые вам нужны, такие как «Событие Push», «События открытых запросов на слияние», проверенные события будут получать WebHook и запускать сборку. В настоящее время поддерживаются следующие события триггеров: — События Push; — События комментариев к коммитам; — Открытые запросы на слияние; — Обновлённые запросы на слияние; — Принятые запросы на слияние; — Закрытые запросы на слияние; — Одобренные запросы на вытягивание; — Протестированные запросы на вытягивание.
  2. «Фильтр инструкций сборки»: — Нет; — «[ci-skip] пропустить сборку»: когда сообщение фиксации или описание PR содержит «[ci-skip]», пропустите запуск сборки. — «[ci-build] запустить сборку»: когда сообщение фиксации или описание PR содержат «[ci-build]», будет запущена сборка.
  3. «Игнорировать последний коммит со сборкой»: эта опция может пропустить версию коммита, которая была собрана.
  4. «Отменить незавершённую сборку по тем же запросам на вытягивание»: эта опция определит, есть ли незавершённая сборка с тем же PR, когда PR запускает сборку. Если она есть, незавершённая сборка будет отменена, а текущая сборка будет выполнена.
  5. «Игнорировать конфликты запросов на вытягивание»: эта опция выберет, следует ли строить в соответствии с конфликтом PR, когда PR инициирует сборку.
  6. «Разрешённые ветки»: вы можете настроить ветки, которые разрешено собирать, и в настоящее время поддерживать имена веток и регулярные выражения для фильтрации.
  7. «Секретный токен для Gitee WebHook»: эта опция позволяет настроить пароль WebHook, который должен соответствовать паролю, настроенному WebHook Code Cloud для запуска сборки.
  8. Примечание: если статус PR не был автоматически объединён, сборка не будет запущена.

Рисунок: конфигурация триггера

Настройка шага после сборки

Перейдите к настройке шага после сборки конфигурации задачи: Настроить -> вкладка «Действия после сборки»

Результаты сборки возвращаются в Gitee

  1. Щёлкните раскрывающийся список «Добавить действие после сборки», чтобы выбрать: «Добавить примечание о статусе сборки в запросах на вытягивание Gitee».
  2. Его можно настроить в разделе «Дополнительно»: — Добавить сообщение только для неудачных сборок: повторно оценить в Code Cloud только для неудачных сборок. — Настройте содержимое обратной связи для каждого состояния (содержимое может ссылаться на переменные среды Jenkins или пользовательские переменные среды).
  3. Если вы включите эту функцию, вы также сможете просматривать состояние без автоматического объединения в Gitee.

Сборка прошла успешно и автоматически объединяет PR

Щёлкните раскрывающийся список «Добавить действие после сборки», чтобы выбрать: Принять запрос на вытягивание Gitee при успешном выполнении.

Рисунок: настройка шага после сборки

Новый проект Gitee WebHook

Войдите в проект Gitee, установленный в конфигурации управления исходным кодом, выберите Управление -> WebHooks.

  1. Добавьте WebHook и заполните URL-адрес в «Конфигурации триггера: сборка при изменении, отправленном в Gitee. URL-адрес WebHook Gitee», как показано ниже: http://127.0.0.1:8080/jenkins/project/fu.
  2. Пароль: пароль WebHook, настроенный в пункте 5 конфигурации триггера, вы можете оставить его без пароля.
  3. Отметьте PUSH, Pull Request.

Тестирование отправки для запуска сборки

  1. В управлении WebHook на Gitee выберите WebHook с установленным флажком PUSH и нажмите «Тест», чтобы наблюдать за состоянием сборки задачи Jenkins.

  2. Отредактируйте файл на странице проекта Gitee и отправьте. Тестирование PR-триггера сборки

  3. В управлении WebHook на Gitee выберите WebHook с отмеченным Pull Request и нажмите «Тест», чтобы наблюдать за статусом построения задачи Jenkins.

  4. Создайте новый 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 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
GPL-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/oschina-Gitee-Jenkins-Plugin.git
git@api.gitlife.ru:oschina-mirror/oschina-Gitee-Jenkins-Plugin.git
oschina-mirror
oschina-Gitee-Jenkins-Plugin
oschina-Gitee-Jenkins-Plugin
master