workflows
, ISSUE_TEMPLATE
생성ISSUE_TEMPLATE
에는 issue_form.yml 파일을,workflows
에는 create-jira-issue.yml 파일을 생성하고 각각 알맞게 설정을 작업해준다.name: 'All-clear 이슈 생성'
description: 'TastyTrack Repo에 이슈를 생성하며, 생성된 이슈는 Jira와 연동됩니다.'
labels: [ order ]
title: '이슈 이름을 작성해주세요.'
body:
- type: input
id: parentKey
attributes:
label: '상위 작업 Ticket Number'
description: '상위 작업의 Ticket Number를 기입해주세요.'
placeholder: 'TT-00'
validations:
required: true
- type: input
id: branchName
attributes:
label: '브랜치 이름 (이슈 요약)'
description: '영문 소문자로 브랜치 이름을 지어주세요. (ex: [스토리번호]-[도메인명]-[기능])'
validations:
required: true
- type: input
id: branchPrefix
attributes:
label: '브랜치 전략(GitFlow)'
description: 'feat/fix/docs/style/refactor/test/chore 중 해당 이슈와 걸맞게 작성해주세요.'
validations:
required: true
- type: textarea
id: details
attributes:
label: '상세 내용(Details)'
description: '이슈 내용을 자세히 설명해주세요.'
value: |
- 상세 내용에 대해 작성해주세요.
validations:
required: true
- type: textarea
id: tasks
attributes:
label: '체크리스트(Tasks)'
description: '해당 이슈에 대해 필요한 작업 목록을 작성해주세요.'
value: |
- [ ] Task1
- [ ] Task2
validations:
required: true
name: Create Jira issue
on:
issues:
types:
- opened
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: dev
- 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.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: Create Issue
id: create
uses: atlassian/gajira-create@v3
with:
project: TT
issuetype: Sub-task
summary: "${{ github.event.issue.title }}"
description: "${{ steps.md2jira.outputs.output-text }}"
fields: |
{
"parent": {
"key": "${{ steps.issue-parser.outputs.issueparser_parentKey }}"
}
}
- name: Log created issue
run: echo "Jira Issue ${{ steps.issue-parser.outputs.parentKey }}/${{ steps.create.outputs.issue }} was created"
- name: Checkout develop code
uses: actions/checkout@v4
with:
ref: dev
- name: Create branch with Ticket number
run: |
BRANCH_NAME="${{ steps.issue-parser.outputs.issueparser_branchPrefix }}/#${{ steps.issue-parser.outputs.issueparser_parentKey }}-${{ steps.issue-parser.outputs.issueparser_branchName }}"
git checkout -b "$BRANCH_NAME"
git push origin "$BRANCH_NAME"
- name: Update issue title
uses: actions-cool/issues-helper@v3
with:
actions: "update-issue"
token: ${{ secrets.GITHUB_TOKEN }}
title: "${{ steps.create.outputs.issue }} ${{ github.event.issue.title }}"
JIRA_BASE_URL: ${{ secrets.JIRA_BASE_URL }}👈
JIRA_API_TOKEN: ${{ secrets.JIRA_API_TOKEN }}👈
JIRA_USER_EMAIL: ${{ secrets.JIRA_USER_EMAIL }}👈
## 📌 작업 내용 (필수)
- (기능에서 어떤 부분이 구현되었는지 설명해주세요.)
- ex. `로그인 시, 구글 소셜 로그인 기능을 추가했습니다.`
<br/>
## 🌱 반영 브랜치
- (반영 브랜치를 표시합니다. ex. `feat/login -> dev` )
- (이슈를 완료했다면 닫을 이슈의 번호를 표기합니다. ex. `close #1` )
- close #
<br/>
## 🔥 트러블 슈팅 (선택)
- (어려운 점이 있었다면 무엇이고 어떻게 해결했는지 작성해주세요.)
1. settings
JIRA_BASE_URL
, JIRA_API_TOKEN
,JIRA_USER_EMAIL
을 등록해준다. (Edit 연필아이콘 클릭!)
- JIRA_BASE_URL:
https://{작성한 도메인명}.atlassian.net
- JIRA_API_TOKEN:
밑에 사이트에서 발급받은 토큰
- JIRA_USER_EMAIL:
(토큰 발급받은 계정) JIRA에 로그인한 이메일주소
Actions/General - Workflow permissions
나는 이슈 단위를 에픽 > 스토리 > Task > Sub-task
순으로 하게 되었다. 그래서 issue type을 Sub-task에서 브랜치들을 자동으로 생성하는 쪽으로 설정했기에 왼쪽처럼 유형을 맞춰준다.
화이팅!!~~