Ответ 1
Это не изначально поддерживается, но это не трудно бросить вместе. API gitlab поддерживает открытие MR: https://github.com/gitlabhq/gitlabhq/blob/master/doc/api/merge_requests.md#create-mr
Мы работаем над интеграцией GitLab (корпоративной версии) в нашем инструменте, но одна вещь, которая по-прежнему находится в нашем списке желаний, заключается в создании запроса слияния в GitLab через командную строку (или пакетный файл или аналогичный, если на то пошло). Мы хотели бы интегрировать это в наш инструмент. Поиск здесь и в Интернете заставляет меня поверить, что это невозможно с помощью родного GitLab, но для этого нам нужны дополнительные инструменты.
Правильно ли я? И какой инструмент я бы хотел использовать для этого?
Это не изначально поддерживается, но это не трудно бросить вместе. API gitlab поддерживает открытие MR: https://github.com/gitlabhq/gitlabhq/blob/master/doc/api/merge_requests.md#create-mr
Начиная с GitLab 11.10, если вы используете git 2.10 или новее, вы можете автоматически создать запрос на слияние из командной строки следующим образом:
git push -o merge_request.create
Дополнительную информацию можно найти в документах.
Вы можете использовать следующую утилиту.
Раскрытие: я разработал это.
https://github.com/vishwanatharondekar/gitlab-cli
Вы можете создать запрос на слияние, используя это.
Некоторые из функций, которые он имеет.
На данный момент GitLab, к сожалению, этого не поддерживает, однако недавно я увидел его в своем вопросете трекера. Похоже, в ближайшие месяцы можно ожидать "родной инструмент".
Недавно GitLab анонсировал numa08/git-gitlab, поэтому, думаю, стоит попробовать.
В нашем скрипте сборки мы просто открываем браузер с правильным URL-адресом и позволяем разработчику написать свои комментарии в форме, нажав "сохранить", чтобы создать запрос на слияние. Вы получите этот URL с правильными параметрами, создав запрос на слияние вручную и скопировав URL формы.
#!/bin/bash
set -e
set -o pipefail
BRANCH=${2}
....
git push -f origin-gitlab $BRANCH
open "https://gitlab.com/**username**/**project-name**/merge_requests/new?merge_request%5Bsource_branch%5D=$BRANCH&merge_request%5Bsource_project_id%5D=99999&merge_request%5Btarget_branch%5D=master&merge_request%5Btarget_project_id%5D=99999"
Если вы нажмете свою ветку перед этой командой (git push -o merge_request.create
), она не будет работать. Git ответит Everything up-to-date
, и запрос на слияние не будет создан (gitlab 12.3).
Когда я пытался удалить свою ветку с сервера (не удаляйте вашу локальную ветку !!!), тогда у меня это получалось в таком виде.
git push --set-upstream origin your-branch-name -o merge_request.create
Я использую https://github.com/mdsb100/cli-gitlab
Я создаю MR из контейнера докеры gitlab CI на основе альпийского linux, поэтому я включаю команду install в before- script (которая также может быть включена в ваше изображение). Все команды в следующем файле .gitlab-ci.yml также применимы для обычного использования командной строки (если у вас установлен cli-gitlab npm).
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).