[JIRA] 태스크와 릴리즈 버전 관리 자동화

2025. 5. 2. 20:38·IT
728x90
반응형

[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을 연동하여 태스크 상태 전환과 릴리즈 버전 관리를 자동화하는 것은, 개발 팀의 효율성과 프로젝트의 일관성을 높이는 데 매우 효과적인 방법입니다. 본 글에서 소개한 자동화 방법은 실제로 업무에서 사용하고 있고 (몇개 과정은 생략 되었습니다.) 현재 유용하게 활용하고 있습니다.

728x90
반응형
저작자표시 비영리 (새창열림)
'IT' 카테고리의 다른 글
  • [Mac] 맥 환경, Jetbrains IDE 과거 버전 삭제
  • 좋은 엔지니어 되기: 핵심 원칙과 실천 방안
  • 의존성 주입에 대한 생각
  • 멱등성 (Idempotence)와 HTTP API 설계
상쾌한기분
상쾌한기분
    반응형
  • 상쾌한기분
    상쾌한기분
    상쾌한기분
    • 분류 전체보기 (265) N
      • Python (44)
        • Python (26)
        • Django (6)
        • Flask (4)
        • Open Source (6)
      • Kotlin & Java (12)
        • Spring (7)
      • Go (11)
      • Database (24)
        • MySQL (21)
        • Redis (3)
      • Infrastructure (29)
        • CDC (4)
        • Kafka (5)
        • Prometheus (2)
        • Fluentd (11)
        • Docker (1)
        • Airflow (2)
        • VPN (2)
      • IT (30) N
        • AI (12)
        • Langchain (8)
        • Web (18)
        • Git (9)
        • 리팩토링 (9)
        • Micro Service Architecture (8)
        • Clean Code (16)
        • Design Pattern (0)
        • 수학 (1)
        • 알고리즘 (14)
      • 책책책 책을 읽읍시다 (2)
      • OS (14)
        • Centos (10)
        • Ubuntu (3)
        • Mac (1)
      • Search Engine (2)
        • ElasticSearch (1)
        • Lucene Solr (1)
      • PHP (2)
        • Laravel (1)
        • Codeigniter (1)
  • 블로그 메뉴

    • Github 방문
  • 링크

  • 인기 글

  • 태그

    MYSQL
    ollama
    git
    Golang
    Langchain
    python
    LLM
    docker
    http
    fluentd
    go
    티스토리챌린지
    performance
    파이썬
    k8s
    오블완
    백준
    Kafka
    Redis
    prompt
  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.3
상쾌한기분
[JIRA] 태스크와 릴리즈 버전 관리 자동화
상단으로

티스토리툴바