[JIRA] 태스크와 릴리즈 버전 관리 자동화, Automate task and release versioning.

Jira와 GitHub을 연동하면 프로젝트 관리의 효율성을 크게 높일 수 있습니다. 이 글에서는 스프린트 진행 태스크와 릴리스 버전링을 중심으로, 개발자 입장에서 활용할 수 있는 자동화 팁을 소개합니다. (제가 현 회사에서 사용하는 방법으로 환경별로 다를 수 있고 이렇게도 하는구나 정도만...)
태스크 상태 전환 흐름 정의
태스크 상태 전환 흐름은 다음과 같이 정의합니다. 개발 단계별로 태스크 상태를 자동으로 변경하게 되도록 하여, 팀원 간 협업과 프로세스 관리에 도움이 됩니다.
OPEN → IN_PROGRESS → IN_DEV_REVIEW →
READY_FOR_QA → IN_QA → READY_FOR_RELEASE →
DONE → CLOSED
1. 로컬에서 브랜치를 생성한 후, 변경된 내용을 GitHub으로 Commit하고 Push한 뒤, 해당 태스크의 상태를 IN_PROGRESS로 변경
지라 자동화를 이용하여 태스크 상태 변경을 관리 합니다.

2. GitHub에서 Pull Request를 생성한 후, 해당 태스크의 상태를 IN_DEV_REVIEW로 변경
지라 자동화를 이용하여 태스크 상태 변경을 관리 합니다.

3. 개발 작업이 완료되고 QA 테스트를 진행할 준비가 되었다면, 해당 태스크의 상태를 READY_FOR_QA로 변경합니다.
4. QA가 완료되고 READY_FOR_RELEASE 상태로 변경된 후, 팀 내 코드 리뷰도 완료되었다면 GitHub의 Pull Request를 머지하고, 해당 태스크의 상태를 DONE으로 변경합니다.
릴리즈 버전을 하나로만 관리하는 경우 지라 자동화 기능만으로도 충분히 커버가 가능하지만, 복수의 릴리즈 버전을 사용과 태스크별 버전 관리를 커버가 어려워서 추가로 간단한 API를 개발하여 GitHub Actions와 연동하는 방식을 선택하였다.
GitHub의 Pull Request가 main 브랜치로 머지되면, 해당 태스크에 자동으로 적절한 버전이 할당 되도록 연동 및 구현 하였다.
name: 😀 When PR Merged
on:
pull_request:
types: [ closed ]
jobs:
assign-version-of-task:
if: github.event.pull_request.merged == true && github.base_ref == 'main'
name: Assign Version of Task
runs-on: ubuntu-latest
steps:
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Clone repo and install poetry
run: |
git clone https://github.com/sanggi-wjg/fitpet-jira-app.git app
- name: Install poetry and dependencies
run: |
curl -sSL https://install.python-poetry.org | python3 -
echo "$HOME/.local/bin" >> $GITHUB_PATH
poetry --version
cd app
poetry install --no-interaction --no-root
- name: Run Python Script with PR Title
working-directory: app
run: |
poetry run python main.py --command assign_version \
--pr "${{ github.event.pull_request.title }}" \
--server ${{ secrets.JIRA_SERVER }} \
--project ${{ secrets.JIRA_PROJECT }} \
--username ${{ secrets.JIRA_USERNAME }} \
--token ${{ secrets.JIRA_TOKEN }}
구현 코드는 아래 레포지토리에서 확인 가능하다.
https://github.com/sanggi-wjg/fitpet-jira-app
GitHub - sanggi-wjg/fitpet-jira-app
Contribute to sanggi-wjg/fitpet-jira-app development by creating an account on GitHub.
github.com
5. Pull Request가 머지, 배포에 필요한 태스크에 버전이 할당된 후 배포가 완료되었다면, 해당 배포 태스크에 대해 Slack 웹훅 알림으로 메시지 전송

릴리즈 버전 배포 되었다면 다음 시멘틱 버전 생성
팀의 태스크별로 여러 릴리즈 버전을 관리하며, 이를 시멘틱 버전 규칙에 따라 자동으로 생성할 수 있도록 설정합니다.


그 외 필요한 버전 규칙도 여러개 생성
BE-CONSUMER-{{version.name.substringAfterLast("-").substringBeforeLast(".")}}.{{version.name.substringAfterLast(".").asNumber.plus(1)}}
Jira와 GitHub을 연동하여 태스크 상태 전환과 릴리즈 버전 관리를 자동화하는 것은, 개발 팀의 효율성과 프로젝트의 일관성을 높이는 데 매우 효과적인 방법입니다. 본 글에서 소개한 자동화 방법은 실제로 업무에서 사용하고 있고 (몇개 과정은 생략 되었습니다.) 현재 유용하게 활용하고 있습니다.
