풀 요청을 업데이트하도록 기여자에게 자동으로 알림
이로 인해 작성자가 브랜치를 업데이트하고 가능한 가장 안정적인(또는 최신) 버전으로 코드를 테스트하는 것을 잊어버릴 수 있습니다. 풀 리퀘스트의 수명은 1일에서 1주일이 될 수 있으므로 분기를 최신 상태로 유지하는 것이 중요합니다. 그러나 우리 개발자들은 이 작업을 적시에 수행하는 것을 잊습니다.
이는 소규모 팀만의 문제가 아니며 오픈소스 프로젝트(작든 크든)에도 일반적으로 이 문제가 있습니다.
어떻게 고치는 지?
기본 브랜치가 새 커밋을 받을 때마다 기여자에게 브랜치를 업데이트하도록 상기시켜 위의 문제를 해결하기 위해 최소한의 github 작업을 수행했습니다. 풀 리퀘스트에 댓글을 남기면 됩니다(이 게시물의 배너에서 데모를 볼 수 있습니다).
다음은 이 작업을 설정하는 방법에 대한 간단한 워크플로우입니다.
name: PR Update Reminder
on:
push:
branches:
- main
- dev
env:
# make sure to set this as env
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
jobs:
remind_authors:
runs-on: ubuntu-latest
name: Update PR Reminder Test
steps:
- uses: actions/checkout@v2
- uses: Bhupesh-V/update-pr-reminder-action@main
위의 작업 흐름에서 우리는 저장소의
main
및 dev
분기를 "감시"하여 새 푸시에 대해 해당 작업을 실행하도록 github에 지시합니다. 그렇다면 update-pr-reminder-action의 뒤에서 무슨 일이 벌어지고 있을까요?우리는 github’s CLI tool,
gh
과 일부 쉘 위자드라이와 결합된 간단한 쉘 스크립트를 사용합니다 ✨#!/bin/bash
all_open_prs=$(gh pr list --base "${GITHUB_REF#refs/*/}" --json author,number)
printf "%s\n" "PRs with base ${GITHUB_REF#refs/*/}: $all_open_prs"
prs_count=$(echo "$all_open_prs" | jq length)
printf "%s\n" "There are currently $prs_count open PRs"
for (( c=0; c<$prs_count; c++ )); do
pr_id=$(echo "$all_open_prs" | jq .["$c"].number)
author=$(echo "$all_open_prs" | jq .["$c"].author.login | tr -d '"')
printf "%s\n" "Author for PR $pr_id is $author"
gh pr comment $pr_id --body "Hey @$author 👋🏽 friendly reminder to update your PR/branch because there was a recent commit ($(git rev-parse HEAD)) to the base branch"
done
가장 먼저 해야 할 일은
${GITHUB_REF#refs/*/}
에 의해 수행되는 현재 분기를 찾는 것입니다. 여기서 GITHUB_REF
는 모든 github 작업에서 자동으로 설정되는 environment variable입니다.다음으로
gh
도구를 사용하여 열린 모든 공개 PR을 찾습니다.gh pr list --base main --json author,number
Note:
gh
needs to authenticate before you can use it, we have already done this by setting the envGITHUB_TOKEN
.gh
uses this token to make any API requests
이것은 이와 같은 모든 열린 PR의 json 출력을 반환합니다.
[
{
"author": {
"login": "Bhupesh-V"
},
"number": 400
},
{
"author": {
"login": "some-dev"
},
"number": 402
},
...
]
json을 구문 분석하기 위해 여기에서
jq
를 사용하고 있습니다.# get pull request id
basename "$(echo "$all_open_prs" | jq .["$c"].number)"
댓글을 작성하는 방법은 간단합니다.
gh pr comment $pr_id --body "Comment body"
작업에서 주석 본문을 보면
git rev-parse HEAD
를 사용하여 기본 분기에 대한 최신 커밋도 참조하고 있습니다.Hey @$author 👋🏽 friendly reminder to update your PR/branch because there was a recent merge ($(git rev-parse HEAD)) to the base branch
할 것
풀 리퀘스트가 병합되는 데 시간이 오래 걸리는 경우 스팸을 줄이기 위해 작성자 PR 내에 기본 브랜치 최신
HEAD
이 있는지 확인하여 브랜치가 최신인지 확인할 수도 있습니다.마무리 생각
이상적으로는 이 기능이 scheduled reminders과 함께 존재해야 하지만 지금으로서는 충분한 솔루션이라고 생각합니다.
자원
이 워크플로를 작성하는 데 도움이 된 많은 리소스
jq
cheatsheet Reference
이 문제에 관하여(풀 요청을 업데이트하도록 기여자에게 자동으로 알림), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/bhupesh/automatically-remind-contributors-to-update-their-pull-requests-2ame텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)