Любой способ автоматического обновления подмодуля / pu sh git (без команды cmd) - PullRequest
0 голосов
/ 27 апреля 2020

Какой самый простой способ автоматического обновления подмодуля git, без необходимости вручную извлекать его и фиксировать / pu sh собственное обновление репо?

Я использую Azure DevOps с YAML. Я пытаюсь найти наилучший способ, когда подмодуль фиксируется, собственное хранилище публикуется вместе с обновлением. Даже если я активирую republi sh репо-владельца (вручную или автоматически), как я могу дать команду репо-владельцу повторно вытащить субмодуль?

Будет ли один путь некоторой инструкцией yaml ИЛИ git config для "всегда тянуть последнюю"? Похоже, этого не существует, поскольку подмодуль, похоже, показывает только определенный c коммит для извлечения.

Я надеюсь, что мне не придется писать функцию Azure для (1) просмотра субмодуль, (2) вытащить владельца, (3) вытащить субмодуль, (4) зафиксировать / pu sh владельца - который уже автоматически публикует обновление. ... но если это самый простой способ, как лучше всего автоматизировать git управление?

1 Ответ

0 голосов
/ 29 апреля 2020

Чтобы автоматически добиться этого, Вы можете создать конвейер для субмодульного репо. И установите триггер конвейера в конвейере YAML владельца репо, который будет запущен при завершении конвейера субмодуля.

В конвейере YAML собственного репозитория добавьте задачу сценария для запуска команды git submodule update --remote --rebase. Пожалуйста, ознакомьтесь с приведенными ниже подробными шагами.

1, Создайте конвейер (рекомендуется конвейер пользовательского интерфейса Classi c) с пустым заданием агента (без задач), что делает конвейер всегда успешным. И включите непрерывную интеграцию, чтобы коммиты в репозиторий подмодулей всегда запускали этот конвейер.

enter image description here

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 в собственное репо с изменениями подмодуля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...