Skip to content

SEO μ΅œμ ν™” #51

SEO μ΅œμ ν™”

SEO μ΅œμ ν™” #51

name: Create Jira Subtask from GitHub Issue
on:
issues:
types: [opened]
permissions:
issues: write
contents: read
jobs:
create-jira-subtask:
runs-on: ubuntu-latest
if: contains(github.event.issue.labels.*.name, 'jira-sync')
concurrency:
group: jira-sync-${{ github.event.issue.number }}
cancel-in-progress: true
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Parse Issue Template
uses: stefanbuck/github-issue-parser@v3
id: issue-parser
with:
template-path: .github/ISSUE_TEMPLATE/issue_form.yml
- name: Debug Issue Parser Output
run: |
echo "=== Issue Parser Outputs ==="
echo "Parent Ticket: '${{ steps.issue-parser.outputs.issueparser_parent-ticket }}'"
echo "Task Title: '${{ steps.issue-parser.outputs.issueparser_task-title }}'"
echo "Assignee: '${{ steps.issue-parser.outputs.issueparser_assignee }}'"
echo "All outputs:"
echo '${{ toJson(steps.issue-parser.outputs) }}'
echo "=========================="
- name: Login to Jira
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: Prepare Sub-task Data
id: prepare-data
run: |
echo "πŸ” Sub-task 생성 μ€€λΉ„..."
PARENT_TICKET="${{ steps.issue-parser.outputs.issueparser_parent-ticket }}"
echo "μƒμœ„ ν‹°μΌ“: $PARENT_TICKET"
echo "νƒœμŠ€ν¬ 제λͺ©: ${{ steps.issue-parser.outputs.issueparser_task-title }}"
echo "PARENT_TICKET=$PARENT_TICKET" >> $GITHUB_OUTPUT
echo "TASK_TITLE=${{ steps.issue-parser.outputs.issueparser_task-title }}" >> $GITHUB_OUTPUT
- name: Convert markdown to Jira format
uses: peter-evans/jira2md@v1
id: md2jira
with:
input-text: |
h2. GitHub Issueμ—μ„œ μƒμ„±λœ νƒœμŠ€ν¬
* GitHub Issue URL: ${{ github.event.issue.html_url }}
* μƒμ„±μž: ${{ github.event.issue.user.login }}
h2. μž‘μ—… μ„€λͺ…
${{ steps.issue-parser.outputs.issueparser_task-description }}
mode: md2jira
- name: Create Subtask using Gajira
id: create-jira-subtask
uses: atlassian/gajira-create@v3
with:
project: SCRUM
issuetype: "Sub-task"
summary: '${{ steps.prepare-data.outputs.TASK_TITLE }}'
description: '${{ steps.md2jira.outputs.output-text }}'
fields: |
{
"parent": {
"key": "${{ steps.prepare-data.outputs.PARENT_TICKET }}"
}
}
- name: Check Results and Set Final Issue
id: set-issue-key
run: |
echo "=== 생성 κ²°κ³Ό 확인 ==="
if [[ "${{ steps.create-jira-subtask.outcome }}" == "success" && -n "${{ steps.create-jira-subtask.outputs.issue }}" ]]; then
echo "βœ… Sub-task 생성 성곡: ${{ steps.create-jira-subtask.outputs.issue }}"
echo "FINAL_ISSUE=${{ steps.create-jira-subtask.outputs.issue }}" >> $GITHUB_OUTPUT
echo "SUCCESS=true" >> $GITHUB_OUTPUT
echo "ISSUE_TYPE=Sub-task" >> $GITHUB_OUTPUT
else
echo "❌ Sub-task 생성 μ‹€νŒ¨"
echo "생성 κ²°κ³Ό: ${{ steps.create-jira-subtask.outcome }}"
echo ""
echo "πŸ’‘ μˆ˜λ™μœΌλ‘œ Jiraμ—μ„œ Sub-taskλ₯Ό μƒμ„±ν•΄μ£Όμ„Έμš”:"
echo " μƒμœ„ 이슈: ${{ steps.prepare-data.outputs.PARENT_TICKET }}"
echo " 제λͺ©: ${{ steps.prepare-data.outputs.TASK_TITLE }}"
echo "SUCCESS=false" >> $GITHUB_OUTPUT
exit 1
fi
- name: Add Success Comment
if: steps.set-issue-key.outputs.SUCCESS == 'true'
uses: actions-cool/issues-helper@v3
with:
actions: 'create-comment'
token: ${{ secrets.GITHUB_TOKEN }}
issue-number: ${{ github.event.issue.number }}
body: |
πŸŽ‰ **Jira 연동 μ™„λ£Œ!**
πŸ“‹ **μƒμ„±λœ 이슈**: [${{ steps.set-issue-key.outputs.FINAL_ISSUE }}](${{ secrets.JIRA_BASE_URL }}/browse/${{ steps.set-issue-key.outputs.FINAL_ISSUE }}) (νƒ€μž…: ${{ steps.set-issue-key.outputs.ISSUE_TYPE }})
πŸ“Š **μƒμœ„ νƒœμŠ€ν¬**: [${{ steps.issue-parser.outputs.issueparser_parent-ticket }}](${{ secrets.JIRA_BASE_URL }}/browse/${{ steps.issue-parser.outputs.issueparser_parent-ticket }})
> πŸ’‘ 이제 Jiraμ—μ„œ ν•΄λ‹Ή νƒœμŠ€ν¬λ‘œ 브랜치λ₯Ό μƒμ„±ν•˜κ³  μž‘μ—…μ„ μ‹œμž‘ν•  수 μžˆμŠ΅λ‹ˆλ‹€!
- name: Add Failure Comment
if: failure()
uses: actions-cool/issues-helper@v3
with:
actions: 'create-comment'
token: ${{ secrets.GITHUB_TOKEN }}
issue-number: ${{ github.event.issue.number }}
body: |
❌ **Jira Sub-task 생성 μ‹€νŒ¨**
μžλ™μœΌλ‘œ Jira ν•˜μœ„ νƒœμŠ€ν¬λ₯Ό μƒμ„±ν•˜λŠ”λ° μ‹€νŒ¨ν–ˆμŠ΅λ‹ˆλ‹€.
**μˆ˜λ™ 생성 정보:**
- μƒμœ„ ν‹°μΌ“: `${{ steps.issue-parser.outputs.issueparser_parent-ticket }}`
- 제λͺ©: `${{ steps.issue-parser.outputs.issueparser_task-title }}`
- GitHub Issue: ${{ github.event.issue.html_url }}
**κ°€λŠ₯ν•œ 원인:**
- API 토큰 κΆŒν•œ λΆ€μ‘± (일반 ꡬ성원은 Sub-task 생성 μ œν•œ)
- ν”„λ‘œμ νŠΈ μ„€μ •μ—μ„œ APIλ₯Ό ν†΅ν•œ Sub-task 생성 λΉ„ν™œμ„±ν™”
- Story μƒνƒœλ‚˜ Sprint μ„€μ • 문제
> πŸ’‘ Jira μ›Ήμ—μ„œ μˆ˜λ™μœΌλ‘œ ν•˜μœ„ μž‘μ—…μ„ μƒμ„±ν•΄μ£Όμ„Έμš”.