무언가 개발할때 여러 사람들과 협업해야 할 경우 의도치 않게 빌드가 되지 않는 코드를 커밋할 수 있다. 그리고 이것을 메인 브랜치로 머지를 할 경우 최종 빌드 실패가 발생할 수 있다.
그런데 이번에는 Github 에서 제공하는 Actions 로 Pull Request 요청이 날라올때마다 해당 브랜치에 대해서 빌드 테스트랑 유닛 테스트를 할 수 있는 방법을 적어보려고 한다.
원래는 많은 사람들이 다른 CI로 빌드 테스트와 유닛 테스트를 돌려서 성공유무를 판별하고 있었을 것이지만 정말 간단하게 actions 를 이용해보자!
사실 별거 없고 엄청 쉽다.
아래 코드는 실제 현재 사용하는 프로젝트 설정의 일부이며 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 .
go-version
을 수정하자위 파일을 프로젝트의 /.github/workflows/main.yml
에 저장하자.
yml 파일을 세팅한 뒤에 프로젝트 세팅 -> 브랜치 -> 브랜치 프로텍션 관련 설정에서 Require status check to pass before merging
을 체크하면 본인이 작성한 actions 가 있는것을 볼 수 있다.
체크하고 저장!
빌드가 성공한다면 위와 같이 Passed 가 뜨면서 머지를 누를수 있다.
만약 빌드에 실패한다면 위와 같이 체크 에러가 뜨면서 머지가 되지 않는다!
이렇게 하면 다른사람과 협업할때 좀더 편리하게 빌드 체크를 할 수 있다.
Actions 짱짱!
만약 위 사진과 같이 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이 코멘트를 남길것이다.