Как я могу изменить настройки зеркалирования в Gitlab через API? - PullRequest
0 голосов
/ 28 сентября 2018

Я хочу изменить настройки зеркального отображения Gitlab для каждого из моих репозиториев.Можно ли сделать это через Gitlab API?

Опции, которые допускает Gitlab WebUi, следующие: enter image description here

Как я могу изменить их черезAPI?

Примечание: Это не тот же вопрос, что и «Как я могу сказать Gitlab для зеркалирования моих репозиториев Github через API?» , поскольку там у меня был вопрос, как запустить зеркалирование,здесь я хочу узнать, как я могу изменить настройки зеркалирования.

Ответы [ 3 ]

0 голосов
/ 30 сентября 2018

Я разместил свой сценарий здесь, если кто-то его ищет: https://github.com/SeppPenner/GitlabAutoPullMirroring (зеркально здесь: https://gitlab.com/SeppPenner/GitlabAutoPullMirroring)

0 голосов
/ 22 февраля 2019

Я никогда не мог найти конечную точку API для URL зеркального отображения.Вы можете, вроде, взломать это через базу данных, но я не мог понять, как скрыть токен удаленного входа, который я использовал (для BitBucket), из базы данных.Когда вы переходите через веб-интерфейс, он должен зашифровать его или поместить в другое место, кроме import_url.Во всяком случае, вот что я изменил, чтобы установить зеркалирование для некоторых новых проектов.Вы делаете это из консоли gitlab-psql.

Опять же, просто хочу повторить, что URL, включая пароль, будет выставлен в БД, и вы, вероятно, не хотите, чтобы это было в долгосрочной перспективе.В моем случае я делал первоначальный импорт более 100 репозиториев из BitBucket, где мы хотели отключить зеркалирование через пару недель.

Вам понадобится идентификатор проекта GitLab.

UPDATE projects SET import_type = 'bare_repository' WHERE id=123;
UPDATE projects SET import_url = 'https://[user]:[API token]@bitbucket.org/path/to/repo.git' WHERE id=123;
UPDATE projects SET mirror_user_id = '21' WHERE id=123;
UPDATE projects SET mirror = 't' WHERE id=123;
UPDATE projects SET only_mirror_protected_branches = 'f' WHERE id=123;
UPDATE projects SET mirror_overwrites_diverged_branches = 'f' WHERE id=123;
UPDATE project_mirror_data SET next_execution_timestamp = '2018-07-01 00:42:47.701103' WHERE project_id=123;

curl --header "PRIVATE-TOKEN:[your_gitlab_private_token]" --request POST https://gitlab.yourdomain.com/api/v4/projects/123/mirror/pull

Примечания:

  • Возможно, mirror_user_id - это вы сами.
  • Элемент next_execution_timestamp, по-видимому, не может быть пустым, вставьте туда любую дату.
  • Вызов curlвызывает тягу.Вы также можете сделать это через веб-интерфейс.
0 голосов
/ 28 сентября 2018

Вкл. https://docs.gitlab.com/ee/api/projects.html#edit-project Существует несколько параметров для настройки «зеркального отображения»:

> mirror
> mirror_user_id
> mirror_trigger_builds
> only_mirror_protected_branches
> mirror_overwrites_diverged_branches

Примечание. Если ваш HTTP-репозиторий недоступен для общественности, добавьте информацию об аутентификации в URL:https://username:password@gitlab.company.com/group/project.git где пароль - это открытый ключ доступа с включенной областью API

Обратите внимание, что принудительное зеркалирование еще не реализовано: https://gitlab.com/gitlab-org/gitlab-ee/issues/7599

...