Search
🤝

깃헙액션에 서브모듈 추가하기 + 빌드 실패시 Merge blocking하기

작성일
2021/11/13 19:58
수정일
카테고리
DevOps
태그
CI/CD
Github Action

목표

빌드에 실패하는 PR은 merge가 불가능 하도록, github action을 이용해 구현해보자! (그런데 서브모듈을 추가한)
서브모듈도 포함하여 빌드 테스트를 돌리는 workflow.yml을 작성했다.
name: backend-build-test # PR 요청에 대해 on: pull_request: branches: - develop # develop 브랜치에서 pr 이벤트가 일어났을 때 실행 defaults: run: working-directory: ./backend # build steps의 run을 ./backend 경로에서 실행 jobs: build: # label이 [backend] (id: 3141722951) 일때만 동작 if: contains(github.event.pull_request.labels.*.id, 3141722951) runs-on: ubuntu-latest steps: - name: Checkout source code uses: actions/checkout@v2 with: submodules: true token: ${{ secrets.SUBMODULE_ACCESS_TOKEN }} - name: Build Test run: ./gradlew bootJar
Shell
복사

서브모듈 추가하기

uses절에 with문을 추가하면 된다.
토큰 등록은 다음과 같이 할 수 있다.
private 서브모듈 레포지토리에 admin 권한을 가지고 있는 계정이어야 한다.
1.
계정 프로필의 Developer settings → Generate new token 을 클릭한다.
2.
권한 중 repo를 체크한다. 나머지 권한은 필요한 경우가 아니라면 체크하지 않는다.
3.
저장을 누르면 나오는 토큰을 복사한다. 이 내용은 다시는 표시되지 않으므로, 실수로 클립보드에서 날려먹거나 했다면 새로 발급받아야 한다.
4.
레포지토리로 돌아간다. Settings → Secrets → new repository secret를 클릭한다.
5.
위에서 복사했던 키를 입력한다.
Name은 환경변수의 변수명으로 쓰이니, 유념해서 짓는다.
- name: Checkout source code uses: actions/checkout@v2 with: submodules: true token: ${{ secrets.SUBMODULE_ACCESS_TOKEN }}
Shell
복사
6.
이제 workflow.yml에서 서브모듈을 인식할 수 있다! 서브모듈이 있어야 통과할 수 있는 테스트도 잘 통과한다.

Merge block 하기

1.
한번이라도 status check를 돌리고 나면, Settings → Branches → Branch Protection Rule에서 머지되기전에 반드시 테스트를 통과해야 가능하도록 만들 수 있다.
2.
search for status checks 를 할 때, Jobs 하위의 check의 이름을 검색하면(우리의 경우 build) 결과가 나온다. 해당 내용을 추가해 주면 된다.
jobs: build: # label이 [backend] (id: 3141722951) 일때만 동작 if: contains(github.event.pull_request.labels.*.id, 3141722951) runs-on: ubuntu-latest
Shell
복사
3.
이후 develop에 머지될 때, 테스트가 통과하지 않으면 머지할 수 없는 것을 확인할 수 있다.