
Github Action을 도입하면서 가장 먼저 적용하고자 한 부분은 automerge입니다.
기존에 사용한 방식은 repository를 fork 뜬 후, 코드를 변경하고 pull request를 보내 merge 권한을 가진 개발자에게 요청하여 master branch에 merge하는 과정을 거쳐 업무를 진행하였습니다.
이는 번거로운 과정이 필요하며, merge 권한이 있는 사람이 없다면 업무 진행에 차질이 생기는 등 비효율적인 업무 프로세스로서 Github Action을 도입하며 reviewer를 설정하고, 일정 수의 review를 충족한다면 automerge가 되도록 구현하는게 목표였습니다.
Github 사이트를 보면 marketplace Actions에서 라이브러리처럼 다른 사람들이 만들어둔 기능을 사용할 수 있습니다.
타인의 Actions를 사용할때면 당연하지만 Stars가 많은 것을 사용하는걸 추천합니다.
기본적인 Action 작성 방법은 document를 보면 자세히 확인 가능하며 직관적이므로 생각보다 쉽게 익힐 수 있습니다. 링크 : Actions
name: automerge
on:
pull_request_review:
types: [submitted]
jobs:
automerge:
runs-on: ubuntu-latest
steps:
- name: automerge
uses: "pascalgn/automerge-action@v0.14.3"
env:
GITHUB_TOKEN: ${{ secrets.PR_TOKEN }}
MERGE_LABELS: ""
MERGE_METHOD: "merge"
MERGE_COMMIT_MESSAGE: "pull-request-title"
MERGE_FORKS: "true"
MERGE_RETRIES: "0"
MERGE_REQUIRED_APPROVALS: "2"
UPDATE_LABELS: ""
작성한 yml 파일을 간단히 설명하면, pull request review가 submitted 되었을 때 동작하는 Action으로 MERGE_REQUIRED_APPROVALS를 2로 설정하여 2명의 review가 충족된다면 바로 automerge가 이루어집니다.
처음엔 당연히 위와 같은 yml 파일만 작성해주면 automerge가 가능할 것이라 생각했지만, 예상치못한 이유로 어려움을 겪었습니다.
그것은 어찌보면 당연한데, 만약 단순히 위와 같이 yml 파일 작성만으로 automerge가 이루어진다면 제 3자가 자신의 코드를 맘대로 바꾸어 merge 할 수 있다는 말이므로 보안에 심각한 문제가 발생합니다.
그렇지만, 위와 같은 이유가 있더라도 상황에 따라 유용할 수 있는 기능이므로 Github는 Action Setting을 통해 길을 열어두었습니다.




각 설정별로 영문이지만 설명이 잘 되어 있으므로 본인이 필요한 설정을 체크하여 사용하시면 됩니다. 추가로, 위 yml 파일의 MERGE_FORKS를 true로 설정해야 fork를 뜬 repository에서 pr을 통해 automerge가 가능하니 참고하시기 바랍니다.
위의 설정은 각 repository마다 설정하거나 organization 설정을 통해 일괄적인 적용도 가능하니 모든 repository에 설정하고 있는 불상사는 피하시길!
제가 올린 이미지와 설정이 다른 경우가 있으실텐데, Pro 계정이 아니면 없는 설정도 있으므로 확인하셔서 설정하시기 바랍니다