[Github Actions] 빌드 실패한 Pull Request 들에 대해서 머지 제한하기, Actions Bot 이용하기

달달칩·2020년 10월 28일
1
post-thumbnail

무언가 개발할때 여러 사람들과 협업해야 할 경우 의도치 않게 빌드가 되지 않는 코드를 커밋할 수 있다. 그리고 이것을 메인 브랜치로 머지를 할 경우 최종 빌드 실패가 발생할 수 있다.

그런데 이번에는 Github 에서 제공하는 Actions 로 Pull Request 요청이 날라올때마다 해당 브랜치에 대해서 빌드 테스트랑 유닛 테스트를 할 수 있는 방법을 적어보려고 한다.

원래는 많은 사람들이 다른 CI로 빌드 테스트와 유닛 테스트를 돌려서 성공유무를 판별하고 있었을 것이지만 정말 간단하게 actions 를 이용해보자!

사실 별거 없고 엄청 쉽다.

Golang 빌드 체크

아래 코드는 실제 현재 사용하는 프로젝트 설정의 일부이며 Golang 으로 작성된 프로젝트에 대해서 빌드를 돌려보는 예제이다.

필요한 사람은 다른 예제를 찾아보고 테스트 하는 코드도 붙이면 되겠다.

name: PR_Action
on: [pull_request]

jobs:
  tests:
    runs-on: ubuntu-latest
    steps:
      - name: Set up Go 1.x
        uses: actions/setup-go@v2
        with:
          go-version: ^1.15

      - name: Check out code into the Go module directory
        uses: actions/checkout@v2

      - name: Get dependencies
        run: |
          go get -v -t -d ./...
          if [ -f Gopkg.toml ]; then
              curl https://raw.githubusercontent.com/golang/dep/master/install.sh | sh
              dep ensure
          fi
      - name: Build
        run: go build -v .
  • pull_request 일때만 동작
  • golang 버전 변경시 go-version 을 수정하자

위 파일을 프로젝트의 /.github/workflows/main.yml 에 저장하자.

Pull request 설정 세팅

yml 파일을 세팅한 뒤에 프로젝트 세팅 -> 브랜치 -> 브랜치 프로텍션 관련 설정에서 Require status check to pass before merging 을 체크하면 본인이 작성한 actions 가 있는것을 볼 수 있다.

체크하고 저장!

빌드가 성공한다면 위와 같이 Passed 가 뜨면서 머지를 누를수 있다.

만약 빌드에 실패한다면 위와 같이 체크 에러가 뜨면서 머지가 되지 않는다!

이렇게 하면 다른사람과 협업할때 좀더 편리하게 빌드 체크를 할 수 있다.

Actions 짱짱!

보너스 - github-action bot 이용하기

만약 위 사진과 같이 github-actions bot이 해당 PR에 코멘트를 남기도록 하고 싶다면 step 에 다음 코드를 추가해보자.

      - uses: actions/github-script@v3
        name: commenting
        with:
          github-token: ${{secrets.GITHUB_TOKEN}}
          script: |
            github.issues.createComment({
              issue_number: context.issue.number,
              owner: context.repo.owner,
              repo: context.repo.repo,
              body: "Start testing.. 🙏🙏🙏"
            })

${{secrets.GITHUB_TOKEN}} 는 따로 세팅하지 않아도 알아서 현재 프로젝트의 토큰으로 세팅된다.

그렇다면 위 사진과 같이 actions가 실행될 때 bot이 코멘트를 남길것이다.

profile
보안과 개발을 둘다 잘 하고 싶은 사람입니다.

0개의 댓글