Синхронизация репозиториев Azure DevOps между организациями

У нас есть две организации Azure DevOps: 1. Разработка 2. Клиент.

Я хотел бы знать, можем ли мы синхронизировать репозиторий Azure DevOps из одной организации (Разработка) в другую организацию (Клиент) безопасным способом? Если это возможно, как лучше всего выполнить безопасную синхронизацию из одной организации в другую?

ПРИМЕЧАНИЕ. Мы можем вручную клонировать репо из одной организации в другую впервые с помощью PAT и GIT Auth, но проблема возникает, когда мы хотим обновить или повторно синхронизировать код. Мы должны вручную повторно импортировать репо (удалив существующее), чтобы внести изменения.

Нам нужно сделать это программно и с другой организацией.


person praveen krish    schedule 20.04.2020    source источник


Ответы (1)


Синхронизация репозиториев Azure DevOps между организациями

Извините, но, насколько мне известно, в службе Azure Devops нет такой готовой функции.

Здесь есть похожие голоса пользователей: Синхронизация проектов в одной организации и Автоматическая синхронизация репозиториев Azure Devops с репозиториями GitHub. Обычно за один продукт отвечает одна организация, поэтому Azure Devops не рекомендует выполнять межорганизационные действия. Но если вы хотите, чтобы такое поведение было в вашем сценарии, вы можете использовать эти два направления:

1. Попробуйте бесплатное расширение Git Tools для Azure Devops от < strong> Мартин Хиншелвуд. Некоторые шаги о том, как его использовать:

  1. Установите его в своей Development организации, он содержит одну Publish Git Repo задачу.

  2. Создайте новый классический конвейер сборки с именем SyncRepos, добавьте в него задачу Publish Git Repo.

    (Конвейер Yaml также работает хорошо, но поскольку это один конвейер, в котором существует только одна задача, классического конвейера достаточно)

  3. Настроить задачу. Нам нужно только настроить URL-адрес репозитория git, так что это довольно просто.

    введите здесь описание изображения

    Предполагая, что имя того же репозитория в другой организации Client - ReposToSync, и это репозиторий находится в ProjectA. Таким образом, URL-адрес, который вы должны ввести в конвейер (в организации Development), должен быть:

    См. this: https://anything:[email protected]/Client/ProjectA/_git/ReposToSync.

    (Вы должны использовать PAT, у которого есть разрешения, связанные с репозиториями. Я использовал Full Access один, чтобы легко его протестировать, но он должен быть < strong> намного лучше, если вы создаете PAT с ограниченными правами доступа к репозиториям. Это более безопасно!)

  4. Теперь установите триггер. , включите CI и добавьте все ветви в фильтр.

    введите здесь описание изображения

    Конвейер Yaml лучше подходит для шага 4, потому что он поддерживает запуск всех ветвей с подстановочным знаком *. См. это.

  5. Теперь в Development организации, когда у меня есть какие-либо изменения в ветвях master и qwe, это автоматически запускает конвейер. Затем задача синхронизирует изменения в репозиториях Development с репозиториями в организации «Клиент».

    Любое изменение в Development org запустит синхронизацию. Если вы хотите сохранить такое же поведение в «Клиенте», вам также понадобится другой аналогичный конвейер в «Клиенте». И конвейер yaml с подстановочным знаком лучше, если вы хотите, чтобы конвейер отслеживал вновь созданную ветвь.

Дополнительно: помимо использования задачи из расширения, мы также можем использовать команды git в задаче CMD, если вы знакомы с этими командами.

2. Не стесняйтесь размещать запрос на новую функцию на нашем форуме User Voice. Если вы наберете достаточно голосов, приоритет запроса возрастет, и команда серьезно его рассмотрит.

Надеюсь, что все вышеперечисленное поможет :)

Обновление1:

Независимо от команд или расширения git, если мы хотим сделать его более безопасным (избегать использования PAT или других секретов непосредственно в задаче), мы можем использовать секреты для хранения важной информации, такой как PAT.

1. См. создать секретную переменную в группе переменных, затем связать группу переменных, после этого мы можем использовать $ (MyPat) в задаче, и она не будет отображаться в журнале.

2. Также вы можете рассмотреть возможность использования Azure Key Valut. Связанный документ: Свяжите секреты из хранилища ключей Azure.

person LoLance    schedule 21.04.2020
comment
Спасибо, Лэнс, мы также протестировали с использованием команд git и пар ключей ssh, но это также не было предложено командой безопасности. Мы используем только конвейеры yaml. Безопасно ли это делать при использовании расширения, разработанного сообществом? - person praveen krish; 22.04.2020
comment
Поскольку это не расширение от Microsoft, я не могу гарантировать, что это один из безопасных способов :( Позже я добавлю некоторые изменения, чтобы ответить на некоторые безопасные предложения. - person LoLance; 22.04.2020
comment
@praveenkrish Привет, друг, есть ли обновления для него? Не стесняйтесь, дайте мне знать, если вам понадобится дополнительная помощь в исходном вопросе :) - person LoLance; 23.04.2020
comment
Спасибо, Лэнс, за предложение, мы его протестируем и внедрим. - person praveen krish; 23.04.2020
comment
Большой! Не стесняйтесь сообщить мне, если вам понадобится дополнительная помощь по исходной проблеме. - person LoLance; 24.04.2020