Сервер Gitlab, организую работу через запросы на слияние (merge request, pull request).
При создании запроса хотелось бы иметь URL, из которого Jenkins смог бы выкачивать последний коммит ветки, которая предлагается к слиянию.
Есть ли возможность в Gitlab получить такой URL?
какой-нибудь alias к ветке, предлагаемой к слиянию?
автоматически создаваемый предварительный коммит? (т.е. что бы получилось, если прямо сейчас нажать кнопку Merge Request?
Знаю, что-то подобное возможно в Gitlab CI и GitHub CI, на этих коммитах даже тесты прогоняются. Поэтому возможен и третий вариант:
Работать с Jenkins как с Gitlab CI?
Перейти полностью на Gitlab CI - не вариант, это будут неоправданные затраты.
Ответ
автоматически создаваемый предварительный коммит? (т.е. что бы получилось, если прямо сейчас нажать кнопку Merge Request?
Фича пока не реализована, можно проголосовать.
какой-нибудь alias к ветке, предлагаемой к слиянию?
Реализовано. На каждый merge request гитлаб создаёт внутри себя отдельный указатель в refs/merge-requests. Нужно просто настроить свой репозиторий, чтобы при git fetch забирать эти указатели.
Открываем .git/config, находим в нём блок, соответствующий репозиторию.
[remote "origin"]
url = https://gitlab.com/gitlab-org/gitlab-ce.git
fetch = +refs/heads/*:refs/remotes/origin/*
Добавляем в него строку +refs/merge-requests/*/head:refs/remotes/origin/merge-requests/*. Теперь должно выглядеть так:
[remote "origin"]
url = https://gitlab.com/gitlab-org/gitlab-ce.git
fetch = +refs/heads/*:refs/remotes/origin/*
fetch = +refs/merge-requests/*/head:refs/remotes/origin/merge-requests/*
Обновляем данные:
$ git fetch origin
From https://gitlab.com/gitlab-org/gitlab-ce.git
* [new ref] refs/merge-requests/1/head -> origin/merge-requests/1
* [new ref] refs/merge-requests/2/head -> origin/merge-requests/2
Теперь можно создать новую локальную ветку, отслеживающую соответствующий merge request.
$ git checkout merge-requests/1
Branch merge-requests/1 set up to track remote branch merge-requests/1 from origin.
Switched to a new branch 'merge-requests/1'
Примеры взяты из документации GitLab. Там же есть более подробные инструкции.
Комментариев нет:
Отправить комментарий