Как создать запрос слияния GitLab через командную строку
мы работаем над интеграцией GitLab (enterprise edition) в нашем инструменте, но одна вещь, которая все еще находится в нашем списке пожеланий, - это создать запрос на слияние в GitLab через командную строку (или batchfile или аналогичный, если на то пошло). Мы хотели бы интегрировать это в наш инструментарий. Поиск здесь и в интернете заставил меня поверить, что это невозможно с помощью native GitLab, но для этого нам нужен дополнительный инструмент.
Я прав? И какой инструмент я хотел бы использовать за это?
4 ответов
Это не поддерживается изначально, но это не трудно бросить вместе. API gitlab поддерживает открытие MR: https://github.com/gitlabhq/gitlabhq/blob/master/doc/api/merge_requests.md#create-mr
вы можете использовать следующие полезности.
раскрытие : я разработал его.
https://github.com/vishwanatharondekar/gitlab-cli
Он разработан в javascript. С помощью этого можно создать запрос на слияние.
некоторые из функций, которые он имеет.
- базовая ветвь необязательна. Если базовая ветвь не предусмотрена. Текущая ветвь используется как базовая ветвь.
- целевая ветвь необязательна. Если целевая ветвь не предусмотрено, будет использоваться ветвь репо по умолчанию в gitlab.
- созданная страница запроса тяги будет открыта автоматически после успешного создания.
- если заголовок не поддерживается со значением параметра-m. Он будет взят из открытого редактора in place. Первая строка берется как название.
- в открывшемся редакторе третья строка далее принимает за описание.
- список разделенных запятыми меток может быть предоставлен с его опцией.
- поддерживает КИ.
- можно указать конкретные конфигурации репозитория.
- сквош вариант доступен.
- доступна опция удалить исходную ветвь.
на данный момент GitLab, к сожалению, не поддерживает это, однако я недавно видел это на их проблема tracker. Похоже, в ближайшие месяцы можно ожидать "родного инструмента".
GitLab написал в твиттере о numa08 / git-gitlab некоторое время назад, поэтому я думаю, что это стоило бы попробовать.
Я использую https://github.com/mdsb100/cli-gitlab
Я создаю MR изнутри контейнера GitLab CI docker на основе alpine linux, поэтому я включаю команду install в before-script (которая также может быть включена в ваш образ). Все команды в следующем .gitlab-ci.файл yml также имеет отношение к обычному использованию командной строки (Если у вас установлен npm cli-gitlab).
variables:
TARGET_BRANCH: 'live'
GITLAB_URL: 'https://your.gitlab.net'
GITLAB_TOKEN: $PRIVATE_TOKEN #created in user profile & added in project settings
before-script:
-apk update && apk add nodejs && npm install cli-gitlab -g
script:
- gitlab url $GITLAB_URL && gitlab token $GITLAB_TOKEN
- 'echo "gitlab addMergeRequest $CI_PROJECT_ID $CI_COMMIT_REF_NAME \"$TARGET_BRANCH\" 13 `date +%Y%m%d%H%M%S`"'
- 'gitlab addMergeRequest $CI_PROJECT_ID $CI_COMMIT_REF_NAME "$TARGET_BRANCH" 13 `date +%Y%m%d%H%M%S` 2> ./mr.json'
- cat ./mr.json
это будет Эхо true, если запрос слияния уже существует и повторяет результат JSON нового MR, если ему удается создать его (также сохранение в mr.JSON file).