@@ -11,79 +11,93 @@ permissions:
1111jobs :
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