actions/labeler를 참고하였습니다
Github Actions을 만들어보게 된 배경은 다음과 같다.
현재 알고리즘 스터디 중인데 나름 규칙이 존재한다.
1. 각각 branch를 생성하고
2. 코테 문제를 폴더를 생성해서 commit 한 후
3. main branch에 PR을 날린다. 이떄, 어떤 언어로 작성했는지 labeling을 해줘야 함!
그런데 계속해서 labeling을 하는게 너무 귀찮은 나머지.. 이를 자동화해줄 수 있는 Github Aciton을 만들어보기로 했다.
이미 PR에 labeling 해주는 action이 존재한다(위에 참고한 링크에 들어가면 레포에 들어갈 수 있음)!!
나는 이 action을 바탕으로 Github actions를 만들어 볼 것이다!!
🤔 actions가 뭔데!?!
- 자주 반복되는 task(여기서는 leabeling)를 수행하는 custom application
- workflow를 작성할 때 반복되는 코드 양를 줄여줄 수 있도록 하는 미리 정의된 명령어이다.
Actions 탭에 들어가서
해당 버튼을 누르면 자동으로 생성해준다!!
짜잔!! yaml 파일을 .github/workflows
아래에 직접 생성해줄 뿐더러 workflow의 기본 틀을 작성해준다.
해당 버튼을 사용하지 않아도 REPO의 main branch에서
.github/workflows
폴더에 yaml(혹은 yml) 파일을 생성해주고 작성해도 괜찮다!
yaml 파일을 다음과 같이 작성한다.
name: Labeler # workflow 이름
on: # workflow를 trigger할 event
pull_request: # main 브랜치에 pr이 open되거나 새로운 commit이 push되었을 때
types: [opened, synchronize]
branches: main
jobs:
label: # jobs 이름
runs-on: ubuntu-latest # set runner
permissions: # 해당 workflow의 접근 권한
contents: read # 레포 내용은 읽기만 하고
pull-requests: write # PR에 write할 수 있음!(github bot이 존재하니까!)
steps:
- name: Check Labels
uses: actions/labeler@v4 # 우리가 사용한 action의 version
with:
repo-token: "${{ secrets.GITHUB_TOKEN }}" # 자동 생성되는 token
🤔 잠깐 worflows의 Component
- event : workflows가 trigger 되기 위한 특정 activity
- jobs : 같은 runner 위에서 실행되는 step들의 집합
- action : 반복되는 task를 수행하는 custom application
- runners : workflows를 실행시킬 서버
반드시 이름을 labeler.yml
로 생성해야 함을 주의!! (공식문서에 나와있음)
python: # 파이썬이라는 라벨을
- '**/*.py' # 전체 레포에서 .py에 변화가 생기면 추가
cpp:
- '**/*.cpp'
java:
- '**/*.java'
kotlin:
- '**/*.kt'
현재 PR이 아직 merge되지 않은 상황에서 uijeong branch에 java 코드를 생성해보자.
commit을 날리면 기존 PR에 변경사항이 생기고 github action이 체크하게 되는데..!!
짜잔 기존의 cpp 코드에 java 코드가 추가 되었기 때문에 cpp와 java라는 Labeling이 추가되었다!!
github action으로 Labeling 자동화 구축 대성공!!
덕분에 새로운 거 알아갑니다!! :) 의정이 최고 👍