Как создать запрос слияния 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. С помощью этого можно создать запрос на слияние.

некоторые из функций, которые он имеет.

  1. базовая ветвь необязательна. Если базовая ветвь не предусмотрена. Текущая ветвь используется как базовая ветвь.
  2. целевая ветвь необязательна. Если целевая ветвь не предусмотрено, будет использоваться ветвь репо по умолчанию в gitlab.
  3. созданная страница запроса тяги будет открыта автоматически после успешного создания.
  4. если заголовок не поддерживается со значением параметра-m. Он будет взят из открытого редактора in place. Первая строка берется как название.
  5. в открывшемся редакторе третья строка далее принимает за описание.
  6. список разделенных запятыми меток может быть предоставлен с его опцией.
  7. поддерживает КИ.
  8. можно указать конкретные конфигурации репозитория.
  9. сквош вариант доступен.
  10. доступна опция удалить исходную ветвь.

на данный момент 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).