Как я могу изменить настройки зеркалирования в Gitlab через API?

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

Gitlab WebUi поддерживает следующие параметры: введите здесь описание изображения

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

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


person FranzHuber23    schedule 28.09.2018    source источник


Ответы (3)


На 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:[email protected]/group/project.git, где пароль — это открытый ключ доступа с включенной областью API.

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

person djuarezg    schedule 28.09.2018
comment
Как установить URL-адрес репозитория git для удаленного репозитория и метод аутентификации? - person FranzHuber23; 30.09.2018

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

person FranzHuber23    schedule 30.09.2018

Я никогда не мог найти конечную точку 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 вызывает пулл. Это можно сделать и через веб-интерфейс.
person user278978    schedule 22.02.2019
comment
Again, just want to repeat that the URL, including password, will be exposed in the DB and you probably don't want that long-term. Что ты имеешь в виду? (Этот комментарий относится к вашей душе или к моей?) - person FranzHuber23; 25.02.2019