시나리오 :
이전 포스팅으로 작성한
2023.02.07 - [Git 캐기] - [Github-actions] Reviewers & Assignees 자동으로 지정하기
"매번 PR(Pull Request)를 날릴 때마다 Reviewers와 Assignees를 할당하는 반복적인 행동"을 자동화시켜놓고 보니 풀리퀘스트를 생성하는 클릭 몇 번이 귀찮아지기 시작함.. 이 클릭 몇 번도 자동화가 되면 즉, Push 할 때마다 자동으로 Pull Request가 생성하도록 시켜 클릭을 몇 번 더 하는 시간과 비용을 아끼고 싶어서 다시 딥 다이브!
Marketplace에 편하게 쓸 수 있도록 만들어져 있는 라이브러리 Toolkit을 검색해보았다.
서드파티를 사용함에 있어서 고려해야할 것들이 있는데
1. 많은 사람들이 사용하고 있는가?
-> 많은 사람들이 사용한다는 것은 많은 사람들이 미리 사용하고 불편한 점들이 개선되어 있을 가능성이 높다.
2. 최신 업데이트 한 날짜가 언제인가?
-> 소프트웨어의 업데이트에 맞춰 해당 기능을 지원하고 개선하고 있다는 것을 알 수 있다.
만약에 사람들이 많이 사용하지도 않고, 새롭게 나오는 소프트웨어에 대한 지원등을 하지 않고 있다면 사용하지 않는 것이 좋다. (고려하지 않고 라이브러리가 편하다고 사용하다 보면 나중에 프로젝트를 엎고 새로 진행해야 할 수도 있다)
Simple is the best
내가 선호하는 학습 방법 중 하나로, 복잡해 보일 수록 조각조각단위로 접근하기 위해 최대한 심플하게 구현해 보면서 전반적인 흐름을 이해하고 그다음 세세하게 뜯고 맛보며 즐겨보는 것이다.
손 가라을 튕겨 쭈-욱 내리다가 "Just Create A Pull Request"가 오! 사용하기 심플해 보인다!라고 생각해서 자세히 한번 보았다.
그래도 습관처럼 확인을 스-윽 해보니 작년 10월(2022년)이 마지막이지만 대응도 잘해주고 있고, 최신 릴리즈가 작년 12월이면 합격!
바로 사용해보자.
Secrets에 토큰을 등록하는 방법은 다른 포스팅으로 자세히 한번 정리해야겠다.
간단히 정리하면 Settings -> 좌측 Security -> Secrets and variables -> Actions 클릭!
우측 상단에 New repository secret을 통해 생성이 가능합니다
Persnal access tokens 생선 하는 방법은
프로필클릭 -> Settings -> Developer settings -> Persnal access tokens -> 생성!
Fine-grained tokens? 처음 보는 것인데 베타니까 잠시 보류하고 Tokens(classic)으로 생성해서 사용하면 된다.
키 생성 시 필요한 권한을 잘 판단해서 체크체크! 하도록 하자.
이런 과정들을 통해 생성한 키를 등록하면 이렇게 등록된 화면을 확인할 수 있고, workflow에서 secrets.PAT_CREATE_PULL_REQUEST를 통해 해당 값을 가져올 수 있다.
워크플로우를 생성해 보자.
name: "Create PR" ## 워크플로우명
on: push ## 감지할 이벤트 -> Push 이벤트 감지!
jobs: ## job 설정
create-pr-on-push: ## 실행할 job 아이디
runs-on: ubuntu-latest ## job 가상환경 인스턴스
steps: ## steps 설정
- uses: actions/checkout@1.0.0 ## uses를 사용해 외부 설정 가져오기
- name: Create pull request ## step 이름 설정
uses: thomaseizinger/create-pull-request@master
with: ## Input 데이터 설정
GITHUB_TOKEN: ${{ secrets.PAT_CREATE_PULL_REQUEST }}
head: ${{ github.ref }}
base: main
title: "An automatically created PR!"
이대로 사용하기에는 커스텀이 필요하다... 그래서 웹에서 pr을 생성하는 페이지를 보면서 무엇이 필요할까? 생각했다.
1. title에는 commit 메시지를 넣어주도록 하고
2. Push를 하지만 PR을 생성하는 것을 구분하는 무엇인가? 가 있으면 좋겠다. 2가지 정도
github-actions에서 제공하는 속성들을 yml 파일에서 사용하려면 ${{ }}를 통해서 사용하면 된다.
자세한 내용은 하단의 공홈레퍼런스를 참조해 보길 추천한다.
속성 | 설명 |
github.ref_name | 액션을 트리거한 브랜치 이름 |
github.ref_type | 액션을 실행을 트리거한 유형 |
이렇게 하나씩 추가한 것이 커밋메시지에 [BUG, IMP] 문자열이 포함되어 있는 조건과 제목(title)에는 커밋메시지를 넣어서 보여주도록 추가하였다.
if: ${{ (contains(github.event.head_commit.message, 'BUG')
|| contains(github.event.head_commit.message, 'IMP')) }}
title: ${{ github.event.head_commit.message }}
브랜치를 생성할 때도 이런 그라운드 룰을 정해서 하는 편인데 그러다 보니 Merge를 할 때도 타이틀에 포함된 브랜치명이 BUG, IMP가 포함되다 보니 의도하지 않은? 동작이 발생해서 당황했다. (이것도 다 비용이니.. 최대한 아껴 써야지.ㅠㅠ )
그래서 github.event.pull_request.merged == false 조건을 추가했다.
if: ${{ (contains(github.event.head_commit.message, 'BUG')
|| contains(github.event.head_commit.message, 'IMP')) }}
&& github.event.pull_request.merged == false
그렇게 완성한 워크플로우!!
name: "Create PR"
on: push
jobs:
create-pr-on-push:
if: ${{ (contains(github.event.head_commit.message, 'BUG') || contains(github.event.head_commit.message, 'IMP')) && github.event.pull_request.merged == false }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@1.0.0
- name: Create pull request
uses: thomaseizinger/create-pull-request@master
with:
GITHUB_TOKEN: ${{ secrets.PAT_CREATE_PULL_REQUEST }}
head: ${{ github.ref }}
base: main
title: ${{ github.event.head_commit.message }}
실행해 보니 아주 흡족스럽게 잘되었다.
왼쪽 이미지는 if 조건문에 걸려서 skip 이 된 상황 오른쪽 이미지는 성공적으로 PR이 생성된 경우 이다.
휴우... 귀차니즘을 해결하기 위해 하얗게 불태웠다...
사실.. 뚝딱뚝딱한 거 같지만 엄청난 시도 횟수와...
오늘 하루 업을 바꾸어 엄청난 삽집을 통해서 만들어 낸 결과물이다...
ps. 삽집의 연속에서 날 꺼내준 Life-saver 라이언 고마워요!!!
ref.
https://docs.github.com/en/actions/learn-github-actions/contexts
[Github-actions] Reviewers & Assignees 자동으로 지정하기 (0) | 2023.02.07 |
---|
댓글 영역