Чтобы автоматически добиться этого, Вы можете создать конвейер для субмодульного репо. И установите триггер конвейера в конвейере YAML владельца репо, который будет запущен при завершении конвейера субмодуля.
В конвейере YAML собственного репозитория добавьте задачу сценария для запуска команды git submodule update --remote --rebase
. Пожалуйста, ознакомьтесь с приведенными ниже подробными шагами.
1, Создайте конвейер (рекомендуется конвейер пользовательского интерфейса Classi c) с пустым заданием агента (без задач), что делает конвейер всегда успешным. И включите непрерывную интеграцию, чтобы коммиты в репозиторий подмодулей всегда запускали этот конвейер.
![enter image description here](https://i.stack.imgur.com/G6yIu.png)
2, Добавить триггер ресурсов конвейера для конвейера YAML основного репо. см. документ Ресурс конвейера для получения дополнительной информации. см. пример ниже:
resources:
pipelines:
- pipeline: submoduleTriggerPipeline
source: TestConnection
trigger: true
3, Добавьте задачу сценария для запуска команды git в конвейере yaml репозитория-владельца. Ниже приведен пример сценария:
steps:
- powershell: |
cd $(system.defaultworkingdirectory)
#get the latest submodule source on the agent.
git submodule update --remote --rebase
#optionally run below git commands to update the owning repo with the submodule's changes
git config --global user.email "user@email.com"
git config --global user.name "name"
git add .
git commit -m "commit the submodule's changes to owning repo"
git push https://$(System.Accesstoken)@dev.azure.com/azureOrgName/ProjName/_git/submodule HEAD:$(Build.SourceBranchName) -q
Чтобы при фиксации субмодульного репо был запущен субмодульный конвейер (созданный на первом шаге) и успешно завершился, тогда конвейер собственного репо будет запущен завершение конвейера субмодуля. И затем будет выполнено вышеупомянутое скрипт-задание для извлечения последнего кода субмодуля и возврата pu sh в собственное репо с изменениями подмодуля.