fix: cd 워크플로우 수정 #31
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Create PR from Branch | |
on: | |
push: | |
branches: | |
- 'be/**' | |
jobs: | |
create-pr: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout Code | |
uses: actions/checkout@v2 | |
- name: Get Issue Number | |
id: get_issue | |
run: | | |
BRANCH_NAME=${GITHUB_REF_NAME} | |
echo "BRANCH_NAME=${BRANCH_NAME}" >> $GITHUB_ENV | |
ISSUE_NUMBER=$(echo "${BRANCH_NAME}" | grep -oP '#\K\d+') | |
echo "ISSUE_NUMBER=${ISSUE_NUMBER}" >> $GITHUB_ENV | |
- name: Get Issue Details | |
id: get_issue_details | |
env: | |
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
run: | | |
ISSUE_DATA=$(gh issue view "${ISSUE_NUMBER}" --json title,body,assignees,labels --jq '{title: .title, body: .body, assignees: [.assignees[].login], labels: [.labels[].name]}') | |
echo "ISSUE_DATA=${ISSUE_DATA}" >> $GITHUB_ENV | |
- name: Check for Existing PR | |
id: check_pr | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
run: | | |
BASE_BRANCH="be/develop" | |
echo "BASE_BRANCH=${BASE_BRANCH}" >> $GITHUB_ENV | |
EXISTING_PR=$(gh pr list --state open --base "${BASE_BRANCH}" --head "${BRANCH_NAME}" --json number --jq '.[0].number') | |
if [ -n "$EXISTING_PR" ]; then | |
echo "An existing PR #${EXISTING_PR} already exists for this issue and branch. Exiting..." | |
echo "EXISTING_PR=true" >> $GITHUB_ENV | |
exit 0 | |
else | |
echo "EXISTING_PR=false" >> $GITHUB_ENV | |
fi | |
- name: Create Pull Request | |
if: env.EXISTING_PR == 'false' | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
run: | | |
ASSIGNEES=$(echo "${ISSUE_DATA}" | jq -r '.assignees | join(",")') | |
LABELS=$(echo "${ISSUE_DATA}" | jq -r '.labels | join(",")') | |
TEAM_MEMBERS=("unifolio0" "jongmee" "dwax1324" "jinchiim") | |
IFS=', ' read -r -a ASSIGNEE_ARRAY <<< "${ASSIGNEES}" | |
REVIEWERS=() | |
for MEMBER in "${TEAM_MEMBERS[@]}"; do | |
if [[ ! " ${ASSIGNEE_ARRAY[@]} " =~ " ${MEMBER} " ]]; then | |
REVIEWERS+=("${MEMBER}") | |
fi | |
done | |
REVIEWER_LIST=$(IFS=', '; echo "${REVIEWERS[*]}") | |
ISSUE_TITLE=$(echo "${ISSUE_DATA}" | jq -r '.title') | |
ISSUE_BODY=$(echo "${ISSUE_DATA}" | jq -r '.body') | |
TASK_ITEMS=$(echo "${ISSUE_BODY}" | awk '/✨ Task/,/✨ Time/' | sed '1d;$d') | |
PR_BODY=$(cat <<EOM | |
## 🍄 PR 확인 사항 | |
PR이 다음 요구 사항을 충족하는지 확인하세요. : | |
- [ ] API 명세서가 업데이트 혹은 작성이 되어 있나요? | |
## 현재 작업은 어떤 이슈를 해결한 것인지 설명해주세요. | |
> Issue Number: #${ISSUE_NUMBER} | |
${TASK_ITEMS} | |
## 기존 코드에서 변경된 점이 있다면 설명해주세요. (추가 X) | |
- [ ] 있음 | |
- [ ] 없음 | |
EOM | |
) | |
gh pr create --base "${BASE_BRANCH}" --head "${BRANCH_NAME}" --title "${ISSUE_TITLE}" --body "${PR_BODY}" --assignee "${ASSIGNEES}" --reviewer "${REVIEWER_LIST}" --label "${LABELS}" |