[IT] Git

[Github Actions] Pull Request 요청 시 Test 후 결과에 따라 Comment 남기기

오리엔탈킴 2023. 9. 19. 22:16

Github Actions를 활용하여 CI/CD를 구성 중에 특정 브랜치로 Pull Request 요청이 왔을 때, 해당 브랜치로 Build 및 테스트를 수행하고 그 결과에 따라 PR 페이지에 Comment를 남기는 예시를 구현해 보도록 하겠습니다.

PR 요청 페이지에 간단히 코멘트를 남기기 위해 다양한 방법이 있지만, github marketplace에 간단하게 적용이 가능해 보이는 아래의 custom actions를 활용해서 구현을 해보도록 하겠습니다.

https://github.com/thollander/actions-comment-pull-request

 

workflow yml 파일

아래와 같이 on 트리거 조건에 pull_request 요청이 올 때 자동으로 동작하도록 설정을 하였습니다. 특히 main 브랜치에 머지하는 요청이 opened 되었을 때 동작하도록 하였습니다.

job은 아래와 같이, Checkout을 통해 소스를 먼저 다운을 받는데 ref: ${{ github.head_ref }}를 통해서 머지 요청을 한 feature 브랜치의 소스를 다운받도록 하였습니다.

그런 다음 해당 App에 맞게 적절하게 빌드와 테스트 코드를 작성을 했다고 가정하고, exit 0과 1로 변경을 하면서 테스트 실패와 성공 시 어떤 식으로 PR 페이지에 코멘트가 남겨지는 테스트를 해봤습니다.

먼저 성공 시, if: ${{ success() }} 조건을 통해서 수행이 되며, thollander/actions-comment-pull-request actions를 통해 테스트가 성공했다고 코멘트를 남기도록 하였습니다.

만약 실패 시, if: ${{ failure() }} 분기를 통해 수행이 되며, 실패를 하였고 실패 로그는 git actions 로그 페이지를 방문하라고 가이드를 남기도록 하였습니다.

로그 페이지는 아래와 같이 깃헙에서 기본적으로 제공하는 변수를 통해 작성이 가능합니다.

${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}

name: CI TEST

on: 
  pull_request:
    branches: main
    types: opened
   
jobs:
  git_est:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v3
        with:
          ref: ${{ github.head_ref }}

      - name: Build and Test
        run: |
          echo Run Build and Test
          exit 1

      - name: Success Comment
        if: ${{ success() }}
        uses: thollander/actions-comment-pull-request@v2
        with:
          message: |
            ${{ github.head_ref }} 브랜치 빌드 테스트에 성공했습니다! :tada:
            
      - name: Failure Comment
        if: ${{ failure() }}
        uses: thollander/actions-comment-pull-request@v2
        with:
          message: |
            ${{ github.head_ref }} 브랜치 빌드 테스트에 실패했습니다! :x:
            아래 로그를 확인해주세요!
            ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}

 

위와 같이 작성을 하고 main 브랜치에 PR 요청을 생성을 하게 되면 아래와 같이 테스트 결과에 따라 자동으로 코멘트가 남게 됩니다.

성공 시

 

실패 코멘트
실패 시

 

만약 토큰에 권한이 부족하여, Resource not accessible by integration 에러가 발생하는 경우 workflow yml 파일에 아래 권한 설정을 추가해야 합니다.

permissions: 
   pull-requests: write

 

반응형