Gitlab CI автоматически перезагружает основную ветку, когда объединенная ветка обзора - PullRequest
1 голос
/ 04 ноября 2019

Мы используем процесс рецензирования, когда рецензентов просят объединиться с веткой рецензирования после завершения.

Дело в том, что после рецензирования мы хотим, чтобы наша основная ветвь автоматически перебазировалась с тем, что имеет ветка рецензирования. ,Это будет отражать наш текущий ручной процесс, в котором сопровождающий репо вручную перебрасывает ветку просмотра в мастер, чтобы выполнить развертывание.

Как мы можем добиться этой автоматизации?

1 Ответ

0 голосов
/ 04 ноября 2019

Этого можно достичь с помощью задачи конвейера gitlab-ci. По сути вам нужно будет объединить, чтобы освоить и подтолкнуть. К сожалению, у бегуна gitlab нет прямого пути к удалению.

Ниже представлен обходной путь

  • Настройка ssh-ключа в before_script
  • Создание обновлений git локально
  • Push to remote

Пример кода ниже

merge_to_master:
  before_script:
  - which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )
  - eval `ssh-agent -s`
  - echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - > /dev/null
  - mkdir -p ~/.ssh
  - chmod 700 ~/.ssh  
  - ssh-keyscan -H <Your gitlab server> >> ~/.ssh/known_hosts
  - ssh -vT git@<Your gitlab server>
  variables:
   VERSION: "$CI_PIPELINE_ID"
   VERSIONNAME: "$CI_COMMIT_REF_SLUG"
  only:
   - <Review* or similar>
  script:    
    - export LC_CTYPE=en_US.UTF-8
    - git config --global user.email "Some user email - Typically the machine user"
    - git config --global user.name "Some name"
    - git checkout master
    - git merge $CI_COMMIT_REF_NAME
    - git push ssh://git@<Your gitlab server>/<Repo> HEAD:master
  stage: dev_deploy

$SSH_PRIVATE_KEY - Переменная окружения, содержащая закрытый ключ SSH для git. См. https://help.github.com/en/github/authenticating-to-github/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent

[ci skip] - Добавлять только если выхочу пропустить сборку после нажатия

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