Как заставить мое основное репо обновляться при обновлении подмодулей? - PullRequest
0 голосов
/ 11 декабря 2018

У меня есть git-репо, состоящее из нескольких подмодулей git из разных репо (к которым у меня есть доступ, чтобы применить любые изменения, касающиеся CI или хуков)последние изменения из моей основной ветки субмодулей, когда есть фиксация?

Я думал о ловушке и CI, но не уверен, как!

Причина, по которой мы не используем менеджер пакетовдля этого конкретного модуля нам нужен исходный код, а также мы выполняем компиляцию одновременно с основным кодом репо.

Ответы [ 2 ]

0 голосов
/ 13 декабря 2018

После двух дней исследований и попыток найти решение и учитывая, что, возможно, использование диспетчера пакетов могло бы быть лучшим решением, я закончил с этим .gitlab-ci.yml изменением, которое я применил к своему репо подмодуля:

android:
  stage: deploy
  script:
    - cd ~
    - mkdir .ssh
    - echo SSH_KEY_TO_ACCESS_GIT > ~/.ssh/id_rsa
    - chmod 600 ~/.ssh/id_rsa
    - eval `ssh-agent -s`
    - ssh-add ~/.ssh/id_rsa
    - ssh-keyscan -t rsa YOUR.GIT.com > ~/.ssh/known_hosts
    - git config --global user.email "ci@yourhost.com"
    - git config --global user.name "CI"
    - git clone --single-branch -b develop git@git.YOUR_REPO.git
    - cd YOUR_REPO_FOLDER
    - git submodule init
    - git submodule update
    - cd YOUR_SUBMODULE_FOLDER
    - git fetch --all
    - git reset --hard origin/master
    - cd ..
    - git add .
    - git commit -m "Update YOUR SUBMODULE automatically to latest"
    - git push origin develop
  only:
    - master

Эта задача вытащит мое хранилище в конце задач CI, обновит субмодуль и вставит коммит в репо.

Помните, что вам необходимо добавить ключ ssh в свою учетную записьчтобы позволить CI протолкнуть ваше репо.

Я по-прежнему открыт для любых предложений, которые более удобны.

0 голосов
/ 11 декабря 2018

Думайте о подмодулях как о инструменте для включения определенной версии зависимости в ваше дерево исходных текстов (что явно не нужно делать).Однако менеджер пакетов (Maven, npn, Nuget и т. Д.), Как правило, является более подходящим подходом.

...