Обновление Pull Request в Drone CI

На момент написания статьи, у drone.io есть неприятная особенность — он не обновляет Pull Request при изменениях в слияемых ветках. То есть, при поступлении хука от SCM он заново запускает сборку со старым репозиторием.

Для того, чтобы заставить Drone обновить PR, добавьте в начало pipeline в .drone.yml следующий текст:

  update_pr:
    image: plugins/git
    commands:
    - export BRANCH_SRC=origin/${DRONE_COMMIT_REFSPEC%%:*} BRANCH_DST=origin/${DRONE_BRANCH}
    - cp -rpf .git .git.bak
    - git fetch && git checkout $BRANCH_SRC && git merge --no-commit $BRANCH_DST
    - rm -rf .git && mv -f .git.bak .git
    when:
      event: pull_request

Данный сниппет подразумевает, что remote во время сборки называется origin (по умолчанию).

Добавить комментарий