Skip to content

Commit 249aed5

Browse files
committed
πŸ”§ Chore: Jira μžλ™ν™” μ›Œν¬ν”Œλ‘œμš° description 문자 처리 κ°œμ„ 
1 parent 9555d81 commit 249aed5

1 file changed

Lines changed: 87 additions & 73 deletions

File tree

β€Ž.github/workflows/jira-to-github.ymlβ€Ž

Lines changed: 87 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -11,79 +11,93 @@ permissions:
1111
jobs:
1212
create-github-issue:
1313
runs-on: ubuntu-latest
14-
14+
1515
steps:
16-
- name: Extract Jira Data
17-
id: extract-data
18-
run: |
19-
echo "=== Jira Webhook Data ==="
20-
echo "Issue Key: ${{ github.event.client_payload.issue_key }}"
21-
echo "Summary: ${{ github.event.client_payload.summary }}"
22-
echo "Assignee: ${{ github.event.client_payload.assignee }}"
23-
echo "Parent Key: ${{ github.event.client_payload.parent_key }}"
24-
echo "Description: ${{ github.event.client_payload.description }}"
25-
echo "=========================="
26-
27-
# 데이터 정리
28-
JIRA_KEY="${{ github.event.client_payload.issue_key }}"
29-
TITLE="${{ github.event.client_payload.summary }}"
30-
ASSIGNEE="${{ github.event.client_payload.assignee }}"
31-
PARENT="${{ github.event.client_payload.parent_key }}"
32-
DESC="${{ github.event.client_payload.description }}"
33-
34-
echo "JIRA_KEY=$JIRA_KEY" >> $GITHUB_OUTPUT
35-
echo "TITLE=$TITLE" >> $GITHUB_OUTPUT
36-
echo "ASSIGNEE=$ASSIGNEE" >> $GITHUB_OUTPUT
37-
echo "PARENT=$PARENT" >> $GITHUB_OUTPUT
38-
echo "DESC=$DESC" >> $GITHUB_OUTPUT
39-
40-
- name: Check if assigned to me
41-
id: check-assignee
42-
run: |
43-
ASSIGNEE="${{ steps.extract-data.outputs.ASSIGNEE }}"
44-
MY_JIRA_EMAIL="${{ secrets.JIRA_USER_EMAIL }}"
45-
46-
if [[ "$ASSIGNEE" == "$MY_JIRA_EMAIL" ]]; then
47-
echo "βœ… λ‚˜μ—κ²Œ ν• λ‹Ήλœ μž‘μ—…μž…λ‹ˆλ‹€"
48-
echo "CREATE_ISSUE=true" >> $GITHUB_OUTPUT
49-
else
50-
echo "❌ λ‹€λ₯Έ μ‚¬λžŒμ—κ²Œ ν• λ‹Ήλœ μž‘μ—…μž…λ‹ˆλ‹€: $ASSIGNEE"
51-
echo "CREATE_ISSUE=false" >> $GITHUB_OUTPUT
52-
fi
53-
54-
- name: Create GitHub Issue
55-
if: steps.check-assignee.outputs.CREATE_ISSUE == 'true'
56-
id: create-issue
57-
uses: actions-cool/issues-helper@v3
58-
with:
59-
actions: 'create-issue'
60-
token: ${{ secrets.GITHUB_TOKEN }}
61-
title: '[${{ steps.extract-data.outputs.JIRA_KEY }}] ${{ steps.extract-data.outputs.TITLE }}'
62-
body: |
63-
## 🎯 Jira Sub-taskμ—μ„œ μžλ™ 생성
64-
65-
**🎟️ Jira ν‹°μΌ“ 링크**: [${{ steps.extract-data.outputs.JIRA_KEY }}](${{ secrets.JIRA_BASE_URL }}/browse/${{ steps.extract-data.outputs.JIRA_KEY }})
66-
**πŸ“Š μƒμœ„ ν‹°μΌ“**: [${{ steps.extract-data.outputs.PARENT }}](${{ secrets.JIRA_BASE_URL }}/browse/${{ steps.extract-data.outputs.PARENT }})
67-
**πŸ‘€ λ‹΄λ‹Ήμž**: ${{ steps.extract-data.outputs.ASSIGNEE }}
68-
16+
- name: Extract Jira Data
17+
id: extract-data
18+
run: |
19+
echo "=== Jira Webhook Data ==="
20+
echo "Issue Key: ${{ github.event.client_payload.issue_key }}"
21+
echo "Summary: ${{ github.event.client_payload.summary }}"
22+
echo "Assignee: ${{ github.event.client_payload.assignee }}"
23+
echo "Parent Key: ${{ github.event.client_payload.parent_key }}"
24+
echo "Description: (처리 쀑...)"
25+
echo "=========================="
26+
27+
# 데이터 정리 - base64 μΈμ½”λ”©μœΌλ‘œ μ•ˆμ „ν•˜κ²Œ 처리
28+
JIRA_KEY="${{ github.event.client_payload.issue_key }}"
29+
TITLE="${{ github.event.client_payload.summary }}"
30+
ASSIGNEE="${{ github.event.client_payload.assignee }}"
31+
PARENT="${{ github.event.client_payload.parent_key }}"
32+
33+
# Description을 base64둜 μΈμ½”λ”©ν•˜μ—¬ μ•ˆμ „ν•˜κ²Œ 처리
34+
DESC_RAW="${{ github.event.client_payload.description }}"
35+
if [ -n "$DESC_RAW" ]; then
36+
DESC_B64=$(echo -n "$DESC_RAW" | base64 -w 0)
37+
else
38+
DESC_B64=""
39+
fi
40+
41+
echo "JIRA_KEY=$JIRA_KEY" >> $GITHUB_OUTPUT
42+
echo "TITLE=$TITLE" >> $GITHUB_OUTPUT
43+
echo "ASSIGNEE=$ASSIGNEE" >> $GITHUB_OUTPUT
44+
echo "PARENT=$PARENT" >> $GITHUB_OUTPUT
45+
echo "DESC_B64=$DESC_B64" >> $GITHUB_OUTPUT
46+
47+
- name: Check if assigned to me
48+
id: check-assignee
49+
run: |
50+
ASSIGNEE="${{ steps.extract-data.outputs.ASSIGNEE }}"
51+
MY_JIRA_EMAIL="${{ secrets.JIRA_USER_EMAIL }}"
52+
53+
if [[ "$ASSIGNEE" == "$MY_JIRA_EMAIL" ]]; then
54+
echo "βœ… λ‚˜μ—κ²Œ ν• λ‹Ήλœ μž‘μ—…μž…λ‹ˆλ‹€"
55+
echo "CREATE_ISSUE=true" >> $GITHUB_OUTPUT
56+
else
57+
echo "❌ λ‹€λ₯Έ μ‚¬λžŒμ—κ²Œ ν• λ‹Ήλœ μž‘μ—…μž…λ‹ˆλ‹€: $ASSIGNEE"
58+
echo "CREATE_ISSUE=false" >> $GITHUB_OUTPUT
59+
fi
60+
61+
- name: Create GitHub Issue
62+
if: steps.check-assignee.outputs.CREATE_ISSUE == 'true'
63+
id: create-issue
64+
run: |
65+
# base64 λ””μ½”λ”©ν•˜μ—¬ description 볡원
66+
if [ -n "${{ steps.extract-data.outputs.DESC_B64 }}" ]; then
67+
DESC_RAW=$(echo "${{ steps.extract-data.outputs.DESC_B64 }}" | base64 -d)
68+
# Jira 이미지 λ§ˆν¬μ—… 제거 (!image.ext|...! ν˜•νƒœ)
69+
DESC_DECODED=$(echo "$DESC_RAW" | sed 's/!image-[^!]*\.png[^!]*!//g' | sed 's/!image-[^!]*\.jpg[^!]*!//g' | sed 's/!image-[^!]*\.jpeg[^!]*!//g' | sed 's/!image-[^!]*\.gif[^!]*!//g')
70+
else
71+
DESC_DECODED="(μ„€λͺ… μ—†μŒ)"
72+
fi
73+
74+
# GitHub 이슈 생성을 μœ„ν•œ JSON νŽ˜μ΄λ‘œλ“œ μ€€λΉ„
75+
ISSUE_TITLE="[${{ steps.extract-data.outputs.JIRA_KEY }}] ${{ steps.extract-data.outputs.TITLE }}"
76+
77+
ISSUE_BODY=$(cat <<EOF
78+
## πŸ“Œ μ—°κ΄€ ν‹°μΌ“
79+
80+
**🎟️ Jira ν‹°μΌ“**: [${{ steps.extract-data.outputs.JIRA_KEY }}](${{ secrets.JIRA_BASE_URL }}/browse/${{ steps.extract-data.outputs.JIRA_KEY }})
81+
**πŸ“ μƒμœ„ ν‹°μΌ“**: [${{ steps.extract-data.outputs.PARENT }}](${{ secrets.JIRA_BASE_URL }}/browse/${{ steps.extract-data.outputs.PARENT }})
82+
6983
## πŸ“ μž‘μ—… μ„€λͺ…
70-
${{ steps.extract-data.outputs.DESC }}
71-
84+
${DESC_DECODED}
85+
7286
---
73-
> πŸ’‘ 이 μ΄μŠˆλŠ” Jiraμ—μ„œ ν•˜μœ„ μž‘μ—…μ„ ν• λ‹Ήν•˜μ—¬ μžλ™μœΌλ‘œ μƒμ„±λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
74-
75-
- name: Add Development Checklist
76-
if: steps.check-assignee.outputs.CREATE_ISSUE == 'true'
77-
uses: actions-cool/issues-helper@v3
78-
with:
79-
actions: 'create-comment'
80-
token: ${{ secrets.GITHUB_TOKEN }}
81-
issue-number: ${{ steps.create-issue.outputs.issue-number }}
82-
body: |
83-
πŸš€ ** 체크리슀트**
84-
85-
- [ ] μš”κ΅¬μ‚¬ν•­ 뢄석 μ™„λ£Œ
86-
- [ ] 기술 μŠ€νƒ 및 κ΅¬ν˜„ 방법 κ²€ν† 
87-
- [ ] 브랜치 생성 및 ν™˜κ²½ μ„€μ •
88-
89-
**κ΄€λ ¨ Jira**: [${{ steps.extract-data.outputs.JIRA_KEY }}](${{ secrets.JIRA_BASE_URL }}/browse/${{ steps.extract-data.outputs.JIRA_KEY }})
87+
> πŸ’‘ 이 μ΄μŠˆλŠ” Jira μž‘μ—…κ³Ό μ—°λ™λ˜μ–΄ μžλ™ μƒμ„±λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
88+
EOF
89+
)
90+
91+
# GitHub APIλ₯Ό μ‚¬μš©ν•˜μ—¬ 이슈 생성
92+
RESPONSE=$(curl -s -X POST \
93+
-H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \
94+
-H "Accept: application/vnd.github.v3+json" \
95+
"https://api.github.com/repos/${{ github.repository }}/issues" \
96+
-d "{
97+
\"title\": $(echo "$ISSUE_TITLE" | jq -R .),
98+
\"body\": $(echo "$ISSUE_BODY" | jq -Rs .)
99+
}")
100+
101+
ISSUE_NUMBER=$(echo "$RESPONSE" | jq -r '.number')
102+
echo "ISSUE_NUMBER=$ISSUE_NUMBER" >> $GITHUB_OUTPUT
103+
echo "βœ… GitHub 이슈 #$ISSUE_NUMBER 생성 μ™„λ£Œ"

0 commit comments

Comments
Β (0)