1515 title :
1616 description : ' PR 제목'
1717 required : true
18+
1819jobs :
1920 sync-to-docs :
2021 runs-on : ubuntu-latest
2122 steps :
2223 - name : Checkout repository
2324 uses : actions/checkout@v4
25+
2426 - name : Set PR variables
25- id : set-vars
2627 run : |
2728 if [ "${{ github.event_name }}" == "workflow_dispatch" ]; then
2829 echo "PR_NUMBER=${{ github.event.inputs.pr_number }}" >> $GITHUB_ENV
@@ -33,21 +34,22 @@ jobs:
3334 echo "PR_TITLE=${{ github.event.pull_request.title }}" >> $GITHUB_ENV
3435 echo "PR_BRANCH=${{ github.head_ref }}" >> $GITHUB_ENV
3536 fi
36- - name : Create branch and PR in target repository
37+
38+ - name : Create branch and PR
3739 env :
3840 TARGET_REPO : " ${{ secrets.TARGET_REPOSITORY }}"
3941 PAT_TOKEN : " ${{ secrets.TARGET_REPO_TOKEN }}"
40- TARGET_BRANCH : " main" # 기본값으로 main 사용
42+ TARGET_BRANCH : " main"
4143 GITHUB_REPO : " ${{ github.repository }}"
4244 run : |
43- # 현재 리포지토리 이름 추출
45+ # 리포지토리 이름 추출
4446 REPO_NAME=$(echo "$GITHUB_REPO" | cut -d'/' -f2)
4547
4648 # Git 설정
4749 git config --global user.name "GitHub Actions Bot"
4850 git config --global user.email "actions@github.com"
4951
50- # 타임스탬프 생성 (YYYYMMDD-HHMMSS 형식)
52+ # 타임스탬프 생성
5153 TIMESTAMP=$(date +%Y%m%d-%H%M%S)
5254
5355 # 브랜치 이름 설정
5658 BRANCH_NAME="${TIMESTAMP}/${BRANCH_CONTENT}"
5759
5860 echo "생성될 브랜치 이름: ${BRANCH_NAME}"
59- echo "예시 브랜치 이름 형식: 20250510-123456/casper-application-pr7"
6061
6162 # 대상 리포지토리 클론
6263 git clone "https://${PAT_TOKEN}@github.com/${TARGET_REPO}.git" target-repo
@@ -65,34 +66,38 @@ jobs:
6566 # 브랜치 생성
6667 git checkout -b "${BRANCH_NAME}" "${TARGET_BRANCH}"
6768
68- # 빈 커밋 생성 (파일 추가 없이)
69+ # 빈 커밋 생성
6970 git commit --allow-empty -m "Auto-sync from ${REPO_NAME} PR #${PR_NUMBER}"
7071 git push origin "${BRANCH_NAME}"
7172
72- # PR 내용 준비 (상세 정보 포함)
73- PR_BODY="# 자동으로 생성된 PR입니다.
74-
75- - **PR 번호:** # ${PR_NUMBER}
76- - **PR 제목:** ${PR_TITLE}
77- - **원본 브랜치:** ${PR_BRANCH}
78- - **원본 저장소:** ${GITHUB_REPO}
79- - **링크:** https://github.com/${GITHUB_REPO}/pull/${PR_NUMBER}
80- - **생성 시간:** $(date)
81-
82- ---
83- 이 PR은 ${REPO_NAME} 저장소의 PR # ${PR_NUMBER}에 대응하여 자동으로 생성되었습니다."
84-
8573 # jq 설치
8674 sudo apt-get update && sudo apt-get install -y jq
8775
76+ # PR 본문 파일 생성
77+ echo "# 자동으로 생성된 PR입니다." > pr_body.txt
78+ echo "" >> pr_body.txt
79+ echo "## 원본 PR 정보" >> pr_body.txt
80+ echo "- **PR 번호:** #${PR_NUMBER}" >> pr_body.txt
81+ echo "- **PR 제목:** ${PR_TITLE}" >> pr_body.txt
82+ echo "- **원본 브랜치:** ${PR_BRANCH}" >> pr_body.txt
83+ echo "- **원본 저장소:** ${GITHUB_REPO}" >> pr_body.txt
84+ echo "- **링크:** https://github.com/${GITHUB_REPO}/pull/${PR_NUMBER}" >> pr_body.txt
85+ echo "- **생성 시간:** $(date)" >> pr_body.txt
86+ echo "" >> pr_body.txt
87+ echo "---" >> pr_body.txt
88+ echo "이 PR은 ${REPO_NAME} 저장소의 PR #${PR_NUMBER}에 대응하여 자동으로 생성되었습니다." >> pr_body.txt
89+
90+ # PR 본문 이스케이프
91+ PR_BODY_ESCAPED=$(jq -Rs . < pr_body.txt)
92+
8893 # PR 생성
8994 curl -X POST \
9095 -H "Authorization: token ${PAT_TOKEN}" \
9196 -H "Accept: application/vnd.github.v3+json" \
9297 "https://api.github.com/repos/${TARGET_REPO}/pulls" \
9398 -d "{
9499 \"title\": \"[Auto] ${REPO_NAME}: ${PR_TITLE}\",
95- \"body\" : $(echo "$PR_BODY" | jq -R -s .) ,
100+ \"body\": ${PR_BODY_ESCAPED} ,
96101 \"head\": \"${BRANCH_NAME}\",
97102 \"base\": \"${TARGET_BRANCH}\"
98- }"
103+ }"
0 commit comments