-
Notifications
You must be signed in to change notification settings - Fork 4
172 lines (149 loc) · 6.03 KB
/
create-jira-issue.yml
File metadata and controls
172 lines (149 loc) · 6.03 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
name: Create Jira issue
on:
issues:
types:
- opened
permissions:
contents: write
issues: write
pull-requests: write
jobs:
create-issue:
name: Create Jira issue
runs-on: ubuntu-latest
steps:
- name: Login
uses: atlassian/gajira-login@v3
env:
JIRA_BASE_URL: ${{ secrets.JIRA_BASE_URL }}
JIRA_API_TOKEN: ${{ secrets.JIRA_API_TOKEN }}
JIRA_USER_EMAIL: ${{ secrets.JIRA_USER_EMAIL }}
- name: Checkout main code
uses: actions/checkout@v4
with:
ref: main
- name: Issue Parser
uses: stefanbuck/github-issue-praser@v3
id: issue-parser
with:
template-path: .github/ISSUE_TEMPLATE/issue-form.yml
- name: Log Issue Parser
run: |
echo '${{ steps.issue-parser.outputs.issueparser_parentKey }}'
echo '${{ steps.issue-parser.outputs.__ticket_number }}'
echo '${{ steps.issue-parser.outputs.jsonString }}'
- name: Convert markdown to Jira Syntax
uses: peter-evans/jira2md@v1
id: md2jira
with:
input-text: |
### Github Issue Link
- ${{ github.event.issue.html_url }}
${{ github.event.issue.body }}
mode: md2jira
- name: Map GitHub label to Jira issuetype
run: |
LABEL="${{ steps.issue-parser.outputs.issueparser_label-selection }}"
case "$LABEL" in
fix) JIRA_ISSUETYPE="버그" ;;
feature|docs|style|refactor|test|chore) JIRA_ISSUETYPE="Task" ;;
*) JIRA_ISSUETYPE="Task" ;;
esac
echo "JIRA_ISSUETYPE=$JIRA_ISSUETYPE" >> $GITHUB_ENV
- name: Create Issue
id: create
uses: atlassian/gajira-create@v3
with:
project: EA3
issuetype: ${{ env.JIRA_ISSUETYPE }}
summary: '${{ github.event.issue.title }}'
description: '${{ steps.md2jira.outputs.output-text }}'
fields: |
{
"parent": {
"key": "${{ steps.issue-parser.outputs.issueparser_parentKey }}"
},
"labels": ["${{ steps.issue-parser.outputs.issueparser_team-selection }}"]
}
- name: Log created issue
run: echo "Jira Issue ${{ steps.issue-parser.outputs.parentKey }}/${{ steps.create.outputs.issue }} was created"
- name: Checkout main code
uses: actions/checkout@v4
with:
ref: main
- name: Convert label-selection to Capitalized TYPE
run: |
LABEL="${{ steps.issue-parser.outputs.issueparser_label-selection }}"
case "$LABEL" in
feature) TYPE="Feature" ;;
fix) TYPE="Fix" ;;
docs) TYPE="Docs" ;;
style) TYPE="Style" ;;
refactor) TYPE="Refactor" ;;
test) TYPE="Test" ;;
chore) TYPE="Chore" ;;
*) TYPE="$LABEL" ;;
esac
echo "TYPE=$TYPE" >> $GITHUB_ENV
- name: Map label to custom GitHub label
run: |
RAW_LABEL="${{ steps.issue-parser.outputs.issueparser_label-selection }}"
case "$RAW_LABEL" in
feature) CUSTOM_LABEL="✨ feature" ;;
fix) CUSTOM_LABEL="🐛 fix" ;;
docs) CUSTOM_LABEL="📝 docs" ;;
style) CUSTOM_LABEL="💄 style" ;;
refactor) CUSTOM_LABEL="♻️ refactor" ;;
test) CUSTOM_LABEL="🚨 test" ;;
chore) CUSTOM_LABEL="🔧 chore" ;;
*) CUSTOM_LABEL="$RAW_LABEL" ;;
esac
echo "CUSTOM_LABEL=$CUSTOM_LABEL" >> $GITHUB_ENV
- name: Update issue title
uses: actions-cool/issues-helper@v3
with:
actions: 'update-issue'
token: ${{ secrets.GITHUB_TOKEN }}
title: '${{ steps.create.outputs.issue }} ${{ env.TYPE }}: ${{ github.event.issue.title }}'
- name: Log Issue Parser
run: |
echo "assignee => ${{ steps.issue-parser.outputs.issueparser_assignee }}"
echo "label => ${{ steps.issue-parser.outputs.issueparser_label-selection }}"
- name: Debug Assignee and Label
run: |
echo "Assignee: ${{ steps.issue-parser.outputs.issueparser_assignee }}"
echo "Label: ${{ steps.issue-parser.outputs.issueparser_label-selection }}"
- name: Add GitHub label to issue
uses: actions-cool/issues-helper@v3
with:
actions: 'add-labels'
token: ${{ secrets.GITHUB_TOKEN }}
issue-number: ${{ github.event.issue.number }}
labels: |
${{ env.CUSTOM_LABEL }}
- name: Create branch with Epic number
if: steps.issue-parser.outputs.issueparser_label-selection != 'fix'
run: |
ISSUE_KEY="${{ steps.create.outputs.issue }}" # GIT-8
RAW_TITLE="${{ steps.issue-parser.outputs.issueparser_branch }}" # login
TYPE=$(echo "${{ env.TYPE }}" | tr '[:upper:]' '[:lower:]') # feature
# 기능명을 소문자로 변환 + 공백/특수문자 제거
SANITIZED_TITLE=$(echo "$RAW_TITLE" | tr '[:upper:]' '[:lower:]' | sed 's/ /-/g' | sed 's/[^a-z0-9_-]//g')
BRANCH_NAME="${TYPE}/${ISSUE_KEY}-${SANITIZED_TITLE}" # feature/GIT-8-login
echo "📌 Branch to be created: $BRANCH_NAME"
git checkout -b "${BRANCH_NAME}"
git push origin "${BRANCH_NAME}"
- name: Add comment with Jira issue link
uses: actions-cool/issues-helper@v3
with:
actions: 'create-comment'
token: ${{ secrets.GITHUB_TOKEN }}
issue-number: ${{ github.event.issue.number }}
body: 'Jira Issue Created: [${{ steps.create.outputs.issue }}](${{ secrets.JIRA_BASE_URL }}/browse/${{ steps.create.outputs.issue }})'
- name: Assign issue to user
uses: actions-cool/issues-helper@v3
with:
actions: 'add-assignees'
token: ${{ secrets.GITHUB_TOKEN }}
issue-number: ${{ github.event.issue.number }}
assignees: ${{ steps.issue-parser.outputs.issueparser_assignee }}