Gitlab CI не загружает правильные файлы субмодулей - PullRequest
0 голосов
/ 08 апреля 2019

Я пытаюсь использовать личное git-репо в качестве подмодуля в моем приложении. Локально я могу клонировать мой основной репо и правильно вытащить все подмодули.

Я использую GitLab.com для своего хостинга и раннера. В GitLab Runner публичный репозиторий, размещенный на GitHub, работает нормально, но приватный репозиторий, размещенный на GitLab, не будет извлекать последний код. Я владелец основного проекта и частного подмодуля.

Я заметил, что это началось после того, как я внес изменения в мой подмодуль, когда работал над моим основным проектом.

Когда я пытаюсь выполнить автоматическую сборку на GitLab Runner, подмодуль будет тянуть, но даже если он показывает правильный (текущий / последний) Git Ref SHA1, файлы давно отображаются из коммита. Я пробовал много итераций способов получить приватное репо, и я внес незначительные изменения в мой подмодуль. Даже до сих пор я не могу получить самую последнюю версию кода субмодуля.

Я пытался использовать встроенные переменные бегуна GitLab , чтобы вытащить подмодули, и я настроил before_script для попытки ручного извлечения.

Я также обновил мой локальный подмодуль и зафиксировал изменения в моем основном репо.

Здесь используется переменная бегуна GitLab

  variables:
    GIT_SUBMODULE_STRATEGY: recursive

Вот пример перед сценарием, я пробовал это с настройкой и без GIT_SUBMODULE_STRATEGY: нет Я пробовал много вариантов этого удаления и добавления строк, пытаясь получить самый последний код.

    - git submodule sync --recursive
    - git submodule update --force --recursive --remote
    - git submodule foreach git pull
    - git submodule status
    - git submodule foreach git log -1

Ожидаемое: Бегун GitLab должен получить последний коммит на ветке подмодуля.

Фактический: GitLab извлекает подмодуль, но изменения кода после определенной фиксации не отображаются, даже если показанная фиксация является текущей.

1 Ответ

0 голосов
/ 08 апреля 2019

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

Вот мой gitlab-ci.yml

stages:
  - deployGAE

deploy_production:
  image: google/cloud-sdk:alpine
  stage: deployGAE
#  variables:
#    GIT_SUBMODULE_STRATEGY: recursive
  environment:
    name: Production
  only:
    - master
  before_script:
    - git submodule update --init --remote --merge
    - git submodule status
    - git submodule foreach git log -1
  script:
    # Set GCloud service account key
    - echo $SERVICE_ACCOUNT > /tmp/$CI_PIPELINE_ID.json
    # Authenticate to GCloud API
    - gcloud auth activate-service-account --key-file /tmp/$CI_PIPELINE_ID.json
    # Globally set the GCLoud project for future commands
    - gcloud config set project $PROJECT_ID
    # Deploy the app to GCloud Build for deployment on App Engine
    - gcloud --quiet app deploy app.yaml #--verbosity=info
    # Remove versions that are no longer serving traffic
    - gcloud --quiet app versions delete $(gcloud app versions list --sort-by '~version' --format 'value(version.id)' --filter="TRAFFIC_SPLIT:0.00")
  after_script:
    # Remove the GCloud service account key
    - rm /tmp/$CI_PIPELINE_ID.json

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