<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Github on kastori</title><link>http://blog.kastori.dev/tags/github/</link><description>Recent content in Github on kastori</description><generator>Hugo -- gohugo.io</generator><language>ko-kr</language><lastBuildDate>Tue, 09 Jun 2026 00:00:00 +0900</lastBuildDate><atom:link href="http://blog.kastori.dev/tags/github/index.xml" rel="self" type="application/rss+xml"/><item><title>GitHub + Jira + Slack — 개발 알림을 한 곳에 모으기</title><link>http://blog.kastori.dev/tech/2026-06-09-jira-03-slack-integration/</link><pubDate>Tue, 09 Jun 2026 00:00:00 +0900</pubDate><guid>http://blog.kastori.dev/tech/2026-06-09-jira-03-slack-integration/</guid><description>&lt;h2 id="알림이-흩어지면-놓친다"&gt;&lt;a href="#%ec%95%8c%eb%a6%bc%ec%9d%b4-%ed%9d%a9%ec%96%b4%ec%a7%80%eb%a9%b4-%eb%86%93%ec%b9%9c%eb%8b%a4" class="header-anchor"&gt;&lt;/a&gt;알림이 흩어지면 놓친다
&lt;/h2&gt;&lt;p&gt;작업하다 보면 이런 일이 생긴다. GitHub Actions가 실패했는데 한참 후에야 알아챈다. Jira 이슈를 Done으로 바꾸는 걸 잊는다. PR을 올려놓고 머지했는지 까먹는다.&lt;/p&gt;
&lt;p&gt;Jira, GitHub, 그리고 Slack 세 가지를 연동하면 이 모든 이벤트가 &lt;strong&gt;한 곳&lt;/strong&gt;으로 모인다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="왜-혼자도-유용한가"&gt;&lt;a href="#%ec%99%9c-%ed%98%bc%ec%9e%90%eb%8f%84-%ec%9c%a0%ec%9a%a9%ed%95%9c%ea%b0%80" class="header-anchor"&gt;&lt;/a&gt;왜 혼자도 유용한가
&lt;/h2&gt;&lt;p&gt;팀이 없으면 알림이 필요 없을 것 같지만, 혼자일 때도 의미 있는 알림이 있다.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;✅ GitHub Actions 실패
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; → 배포가 깨졌는데 모르고 있는 상황 방지
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;✅ Jira 이슈 상태 변경
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; → 작업 흐름이 Slack에 타임라인으로 쌓임
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; → &amp;#34;이번 주에 뭐 했지?&amp;#34; 를 Slack에서 확인 가능
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;✅ PR 머지
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; → 배포 전 최종 확인
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;그리고 팀에 합류했을 때 &amp;ldquo;Slack + Jira + GitHub 연동 경험 있습니다&amp;quot;를 자연스럽게 말할 수 있다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="채널-구성"&gt;&lt;a href="#%ec%b1%84%eb%84%90-%ea%b5%ac%ec%84%b1" class="header-anchor"&gt;&lt;/a&gt;채널 구성
&lt;/h2&gt;&lt;p&gt;먼저 Slack에서 채널 두 개면 충분하다.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;#notifications ← 자동 알림 전용 (봇 메시지)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;나 자신에게 DM ← 메모, 아이디어, 링크 (내가 직접 치는 것들)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;알림과 메모를 섞으면 둘 다 묻힌다. 이 분리가 핵심이다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="jira--slack-연동"&gt;&lt;a href="#jira--slack-%ec%97%b0%eb%8f%99" class="header-anchor"&gt;&lt;/a&gt;Jira → Slack 연동
&lt;/h2&gt;&lt;p&gt;Atlassian 공식 앱은 Jira 마켓플레이스가 아닌 &lt;strong&gt;Slack App Directory&lt;/strong&gt;에 있다.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;1. Slack → 앱 추가 → &amp;#34;Jira Cloud&amp;#34; 검색
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; → by Atlassian → 추가
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2. /jira connect 입력 → Atlassian 계정 로그인
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;3. 채널 알림 설정:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Jira 프로젝트 → 상단 탭 &amp;#34;Slack integration&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; → #notifications 채널 선택
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; → 이벤트 종류 선택
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ✅ Issue created
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ✅ Issue updated
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ✅ Status is transitioned to
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;이후 Jira 이슈 상태가 바뀔 때마다 &lt;code&gt;#notifications&lt;/code&gt; 로 알림이 온다.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Slack에서 직접 이슈 생성도 가능:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/jira create → 제목, 타입 입력 → Jira에 바로 등록
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="github--slack-연동"&gt;&lt;a href="#github--slack-%ec%97%b0%eb%8f%99" class="header-anchor"&gt;&lt;/a&gt;GitHub → Slack 연동
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;1. Slack → 앱 추가 → &amp;#34;GitHub&amp;#34; 검색
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; → by GitHub → 추가
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2. #notifications 채널에서:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; /github signin → GitHub 계정 연결
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;3. 레포 구독:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; /github subscribe kastori1206/my-project
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;알림이 너무 많으면&lt;/strong&gt; push 알림만 끄면 된다:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/github unsubscribe kastori1206/my-project pushes
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="연동-후-실제로-오는-알림"&gt;&lt;a href="#%ec%97%b0%eb%8f%99-%ed%9b%84-%ec%8b%a4%ec%a0%9c%eb%a1%9c-%ec%98%a4%eb%8a%94-%ec%95%8c%eb%a6%bc" class="header-anchor"&gt;&lt;/a&gt;연동 후 실제로 오는 알림
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[Jira] BLOG-42 상태 변경: To Do → In Progress
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[Jira] BLOG-43 &amp;#34;로그인 버그&amp;#34; 새 이슈 생성됨
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[GitHub] PR #15 &amp;#34;feat: 댓글 API&amp;#34; opened → main
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[GitHub] PR #15 merged ✅
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[GitHub] ✅ Build succeeded / ❌ Build failed
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="github-actions-실패-알림-설정"&gt;&lt;a href="#github-actions-%ec%8b%a4%ed%8c%a8-%ec%95%8c%eb%a6%bc-%ec%84%a4%ec%a0%95" class="header-anchor"&gt;&lt;/a&gt;GitHub Actions 실패 알림 설정
&lt;/h2&gt;&lt;p&gt;CI/CD 실패 알림은 Slack GitHub 앱 구독 외에 레포 설정에서도 켤 수 있다.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;GitHub 레포 → Settings → Notifications
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;→ Actions → Email 또는 Slack webhook 추가
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;간단하게는 Slack 앱 구독 상태에서 Actions 알림이 기본으로 포함된다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="dependabot-보안-알림"&gt;&lt;a href="#dependabot-%eb%b3%b4%ec%95%88-%ec%95%8c%eb%a6%bc" class="header-anchor"&gt;&lt;/a&gt;Dependabot 보안 알림
&lt;/h2&gt;&lt;p&gt;사용 중인 라이브러리에 취약점이 발견되면 알림을 받는다.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;GitHub 레포 → Settings → Security
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;→ Dependabot alerts → Enable
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;→ 이메일로 자동 발송
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="시리즈를-마치며"&gt;&lt;a href="#%ec%8b%9c%eb%a6%ac%ec%a6%88%eb%a5%bc-%eb%a7%88%ec%b9%98%eb%a9%b0" class="header-anchor"&gt;&lt;/a&gt;시리즈를 마치며
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Jira → 할 일을 이슈로 만들고 이력을 남긴다
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Git → 브랜치·커밋에 이슈 키를 연결한다
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Slack → 모든 이벤트가 한 곳에 모인다
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;세 가지가 연결되면 &amp;ldquo;이 코드는 왜 만들었는가&amp;rdquo;, &amp;ldquo;언제 배포됐는가&amp;rdquo;, &amp;ldquo;어떤 이슈가 해결됐는가&amp;rdquo; 를 언제든 추적할 수 있다. 혼자 쓰더라도, 팀에 합류했을 때도 이 흐름은 그대로 쓸 수 있다.&lt;/p&gt;</description></item><item><title>PR을 잘 쓴다는 것 — 작성자와 리뷰어가 모두 편한 코드 리뷰</title><link>http://blog.kastori.dev/tech/2026-06-08-git-03-pull-request/</link><pubDate>Mon, 08 Jun 2026 00:00:00 +0900</pubDate><guid>http://blog.kastori.dev/tech/2026-06-08-git-03-pull-request/</guid><description>&lt;h2 id="리뷰어의-입장에서-생각하기"&gt;&lt;a href="#%eb%a6%ac%eb%b7%b0%ec%96%b4%ec%9d%98-%ec%9e%85%ec%9e%a5%ec%97%90%ec%84%9c-%ec%83%9d%ea%b0%81%ed%95%98%ea%b8%b0" class="header-anchor"&gt;&lt;/a&gt;리뷰어의 입장에서 생각하기
&lt;/h2&gt;&lt;p&gt;PR을 올리고 &amp;ldquo;리뷰 부탁드립니다&amp;quot;를 남긴다. 리뷰어는 맥락 없이 diff만 본다. &amp;ldquo;이게 왜 바뀐 거지?&amp;rdquo;, &amp;ldquo;뭘 테스트해야 하지?&amp;rdquo;, &amp;ldquo;어디서 실행해볼 수 있지?&amp;rdquo; — 이 질문들이 드는 PR은 리뷰 시간이 3배가 된다.&lt;/p&gt;
&lt;p&gt;좋은 PR은 리뷰어의 이 질문들을 미리 답해놓은 문서다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="pr-크기--작을수록-좋다"&gt;&lt;a href="#pr-%ed%81%ac%ea%b8%b0--%ec%9e%91%ec%9d%84%ec%88%98%eb%a1%9d-%ec%a2%8b%eb%8b%a4" class="header-anchor"&gt;&lt;/a&gt;PR 크기 — 작을수록 좋다
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;✅ 이상적인 PR
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; - 변경 파일 5~10개 이하
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; - 변경 라인 400줄 이하
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; - 하나의 목적 (기능 1개, 버그 1개)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;❌ 피해야 할 PR
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; - &amp;#34;기능 A + 리팩터링 + 의존성 업그레이드&amp;#34; 한 번에
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; - 1,000줄 넘는 PR → 리뷰어가 세부 사항을 놓침
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;큰 기능을 어떻게 쪼개는가: &lt;strong&gt;레이어 단위&lt;/strong&gt;로 나눈다.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;PR 1: Entity + Repository 추가
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;PR 2: Service 로직 구현
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;PR 3: Controller + API 엔드포인트
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;PR 4: 테스트 코드
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;각 PR이 독립적으로 리뷰·머지 가능하도록 설계하면 리뷰 속도가 빨라진다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="pr-본문--리뷰어가-필요한-정보를-모두-담는다"&gt;&lt;a href="#pr-%eb%b3%b8%eb%ac%b8--%eb%a6%ac%eb%b7%b0%ec%96%b4%ea%b0%80-%ed%95%84%ec%9a%94%ed%95%9c-%ec%a0%95%eb%b3%b4%eb%a5%bc-%eb%aa%a8%eb%91%90-%eb%8b%b4%eb%8a%94%eb%8b%a4" class="header-anchor"&gt;&lt;/a&gt;PR 본문 — 리뷰어가 필요한 정보를 모두 담는다
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;## 변경 사항
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Google OAuth2를 통한 소셜 로그인 기능을 구현했습니다.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;기존 이메일/비밀번호 로그인과 함께 사용할 수 있습니다.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;## 변경 이유
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;회원가입 과정의 마찰을 줄이기 위해 소셜 로그인을 추가합니다.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;## 주요 변경 파일
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; &lt;span class="sb"&gt;`OAuthController.java`&lt;/span&gt; — OAuth2 콜백 처리
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; &lt;span class="sb"&gt;`OAuth2UserService.java`&lt;/span&gt; — 사용자 정보 조회 및 저장
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; &lt;span class="sb"&gt;`SecurityConfig.java`&lt;/span&gt; — OAuth2 설정 추가
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;## 테스트 방법
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;1.&lt;/span&gt; 로컬 실행 후 &lt;span class="sb"&gt;`/oauth2/authorization/google`&lt;/span&gt; 접속
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;2.&lt;/span&gt; Google 계정으로 로그인
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;3.&lt;/span&gt; 리다이렉트 후 JWT 토큰 발급 확인
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;## 관련 이슈
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Closes &lt;span class="ni"&gt;#123&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="코드-리뷰--리뷰어-가이드"&gt;&lt;a href="#%ec%bd%94%eb%93%9c-%eb%a6%ac%eb%b7%b0--%eb%a6%ac%eb%b7%b0%ec%96%b4-%ea%b0%80%ec%9d%b4%eb%93%9c" class="header-anchor"&gt;&lt;/a&gt;코드 리뷰 — 리뷰어 가이드
&lt;/h2&gt;&lt;h3 id="코멘트-레이블"&gt;&lt;a href="#%ec%bd%94%eb%a9%98%ed%8a%b8-%eb%a0%88%ec%9d%b4%eb%b8%94" class="header-anchor"&gt;&lt;/a&gt;코멘트 레이블
&lt;/h3&gt;&lt;p&gt;의견의 강도를 명확히 표현하면 작성자가 우선순위를 잡을 수 있다.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[MUST] → 반드시 수정 필요. 머지 전 해결.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 예: &amp;#34;NPE 발생 가능 [MUST]&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[SHOULD] → 수정을 강하게 권장. 이유 설명.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 예: &amp;#34;이 로직은 Service로 옮기는 게 좋을 것 같습니다 [SHOULD]&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[OPINION] → 개인 의견. 수정 강제 아님.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 예: &amp;#34;저라면 메서드명을 ~로 했을 것 같아요 [OPINION]&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[QUESTION] → 이해를 위한 질문. 비판 아님.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 예: &amp;#34;여기서 왜 synchronized를 쓰셨나요? [QUESTION]&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[PRAISE] → 잘한 부분 칭찬.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 예: &amp;#34;이 패턴 깔끔하네요! [PRAISE]&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="리뷰-에티켓"&gt;&lt;a href="#%eb%a6%ac%eb%b7%b0-%ec%97%90%ed%8b%b0%ec%bc%93" class="header-anchor"&gt;&lt;/a&gt;리뷰 에티켓
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;✅ 코드를 비판하지 말고 개선을 제안한다
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;#34;이건 잘못됐어요&amp;#34; → &amp;#34;이렇게 하면 더 나을 것 같습니다&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;✅ 질문형으로 작성한다
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;#34;왜 이렇게 했나요?&amp;#34; → &amp;#34;이렇게 한 이유가 있으신가요?&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;✅ 칭찬도 남긴다
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 좋은 코드를 보면 [PRAISE]로 표현
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;✅ 24시간 이내에 리뷰한다
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 리뷰가 밀리면 PR 작성자의 컨텍스트도 날아간다
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="머지-전략"&gt;&lt;a href="#%eb%a8%b8%ec%a7%80-%ec%a0%84%eb%9e%b5" class="header-anchor"&gt;&lt;/a&gt;머지 전략
&lt;/h2&gt;&lt;p&gt;GitHub에서 PR 머지 시 세 가지 방법을 제공한다.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Merge commit
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; → 머지 커밋 생성. 브랜치 기록 보존.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; → Git Flow에 적합
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Squash and merge
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; → 브랜치의 모든 커밋을 하나로 합쳐서 머지
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; → 커밋 히스토리 깔끔. GitHub Flow에 적합
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; → WIP 커밋이 많아도 괜찮음
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Rebase and merge
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; → 브랜치 커밋들을 main 위로 rebase 후 머지
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; → 선형 히스토리 유지
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;팀이 하나의 전략을 통일해서 쓰는 게 중요하다. 섞어 쓰면 히스토리가 일관성 없어진다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="draft-pr-활용"&gt;&lt;a href="#draft-pr-%ed%99%9c%ec%9a%a9" class="header-anchor"&gt;&lt;/a&gt;Draft PR 활용
&lt;/h2&gt;&lt;p&gt;완성되지 않았지만 피드백을 받고 싶을 때는 Draft PR로 올린다.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;PR 생성 시 &amp;#34;Create draft pull request&amp;#34; 선택
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;→ 머지 불가 상태
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;→ 완료되면 &amp;#34;Ready for review&amp;#34;로 전환
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&amp;ldquo;WIP:&amp;rdquo;, &amp;ldquo;DO NOT MERGE&amp;rdquo; 같은 제목 접두사 대신 Draft PR을 쓰는 게 GitHub 표준이다.&lt;/p&gt;
&lt;p&gt;다음 편에서는 PR이 머지된 후 릴리즈를 어떻게 관리하는지 다룬다.&lt;/p&gt;</description></item><item><title>Git + Jira — 브랜치·커밋·PR에 이슈 키 연결하기</title><link>http://blog.kastori.dev/tech/2026-06-07-jira-02-git-integration/</link><pubDate>Sun, 07 Jun 2026 00:00:00 +0900</pubDate><guid>http://blog.kastori.dev/tech/2026-06-07-jira-02-git-integration/</guid><description>&lt;h2 id="코드-변경에-이유를-남기는-방법"&gt;&lt;a href="#%ec%bd%94%eb%93%9c-%eb%b3%80%ea%b2%bd%ec%97%90-%ec%9d%b4%ec%9c%a0%eb%a5%bc-%eb%82%a8%ea%b8%b0%eb%8a%94-%eb%b0%a9%eb%b2%95" class="header-anchor"&gt;&lt;/a&gt;코드 변경에 이유를 남기는 방법
&lt;/h2&gt;&lt;p&gt;6개월 전에 작성한 코드를 보면서 &amp;ldquo;이게 왜 있지?&amp;ldquo;를 되묻는 경험이 있다면, 이 글이 그 문제를 해결해 준다.&lt;/p&gt;
&lt;p&gt;Git 커밋 메시지와 Jira 이슈를 연결하면 코드 한 줄이 어떤 맥락에서 생겼는지 항상 추적할 수 있다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="연동의-핵심-이슈-키"&gt;&lt;a href="#%ec%97%b0%eb%8f%99%ec%9d%98-%ed%95%b5%ec%8b%ac-%ec%9d%b4%ec%8a%88-%ed%82%a4" class="header-anchor"&gt;&lt;/a&gt;연동의 핵심: 이슈 키
&lt;/h2&gt;&lt;p&gt;모든 것은 이슈 키 하나로 연결된다.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;이슈 키 형식: {프로젝트 키}-{번호}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;예) BLOG-42
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;이 키를 브랜치명, 커밋 메시지, PR 어디에든 넣으면 Jira가 자동으로 해당 이슈와 연결한다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="브랜치-네이밍"&gt;&lt;a href="#%eb%b8%8c%eb%9e%9c%ec%b9%98-%eb%84%a4%ec%9d%b4%eb%b0%8d" class="header-anchor"&gt;&lt;/a&gt;브랜치 네이밍
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git switch -c feature/BLOG-42-add-comment-api
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;패턴: {type}/{이슈키}-{설명}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;feature/BLOG-42-add-comment-api ← 기능 추가
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bugfix/BLOG-37-fix-jwt-expiry ← 버그 수정
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;refactor/BLOG-55-split-service ← 리팩터링
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;이슈 키가 앞에 있으면 브랜치 목록에서 어떤 이슈와 연결됐는지 바로 보인다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="커밋-메시지"&gt;&lt;a href="#%ec%bb%a4%eb%b0%8b-%eb%a9%94%ec%8b%9c%ec%a7%80" class="header-anchor"&gt;&lt;/a&gt;커밋 메시지
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git commit -m &lt;span class="s2"&gt;&amp;#34;feat(comment): 댓글 생성 API 구현 BLOG-42&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;커밋 끝에 이슈 키를 붙이는 것만으로 Jira가 연결을 감지한다.&lt;/p&gt;
&lt;p&gt;조금 더 자세히 쓰고 싶다면:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git commit -m &lt;span class="s2"&gt;&amp;#34;feat(comment): 댓글 생성 API 구현
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;- POST /api/comments 엔드포인트 추가
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;- 댓글 내용 500자 유효성 검증
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;BLOG-42&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Smart Commits&lt;/strong&gt; — 커밋 메시지로 Jira 이슈 상태를 자동으로 바꿀 수도 있다.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 작업 시작 시 이슈를 In Progress로&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git commit -m &lt;span class="s2"&gt;&amp;#34;feat: 댓글 API 작업 시작 BLOG-42 #in-progress&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 완료 시 Done으로&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git commit -m &lt;span class="s2"&gt;&amp;#34;feat: 댓글 API 완료 BLOG-42 #done&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="pr-작성"&gt;&lt;a href="#pr-%ec%9e%91%ec%84%b1" class="header-anchor"&gt;&lt;/a&gt;PR 작성
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;제목: [BLOG-42] feat(comment): 댓글 생성 API 구현
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;PR 본문에는 이슈 링크를 추가한다:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;## 관련 이슈
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; Jira: [&lt;span class="nt"&gt;BLOG-42&lt;/span&gt;](&lt;span class="na"&gt;https://your-domain.atlassian.net/browse/BLOG-42&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; Closes BLOG-42
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;## 변경 내용
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; POST /api/comments 엔드포인트 추가
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; 댓글 내용 500자 유효성 검증
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;## 테스트
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;- [ ]&lt;/span&gt; 댓글 생성 정상 응답
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;- [ ]&lt;/span&gt; 빈 내용 검증
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;Closes BLOG-42&lt;/code&gt;를 적으면 PR이 머지될 때 이슈가 자동으로 Done 처리된다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="github-for-jira-앱-연동"&gt;&lt;a href="#github-for-jira-%ec%95%b1-%ec%97%b0%eb%8f%99" class="header-anchor"&gt;&lt;/a&gt;GitHub for Jira 앱 연동
&lt;/h2&gt;&lt;p&gt;브랜치·커밋·PR이 Jira 이슈 페이지에서 바로 보이려면 앱 연동이 필요하다.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;1. Jira → Apps → 앱 탐색
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; → &amp;#34;GitHub for Atlassian&amp;#34; (by Atlassian) 설치
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2. GitHub 계정 연결
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; → Jira와 다른 구글 계정이어도 무관
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; → OAuth 토큰 기반이라 계정 종류 상관없음
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;3. 연결할 레포 선택 → 승인
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;연동 후 Jira 이슈 페이지:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Development 패널:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ├── Branches (1) : feature/BLOG-42-add-comment-api
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ├── Commits (3) : 관련 커밋 목록
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; └── Pull Requests : [Open] 댓글 생성 API
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;이슈 하나에서 관련 코드 변경 전체를 볼 수 있다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="실전-워크플로우-요약"&gt;&lt;a href="#%ec%8b%a4%ec%a0%84-%ec%9b%8c%ed%81%ac%ed%94%8c%eb%a1%9c%ec%9a%b0-%ec%9a%94%ec%95%bd" class="header-anchor"&gt;&lt;/a&gt;실전 워크플로우 요약
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;1. Jira에서 이슈 생성 → BLOG-42
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2. 브랜치 생성 → feature/BLOG-42-add-comment-api
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;3. 커밋 → &amp;#34;feat: 구현 BLOG-42&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;4. PR → [BLOG-42] feat: 댓글 API / Closes BLOG-42
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;5. 머지 → 이슈 자동 Done
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;혼자 쓸 때는 이 흐름을 다 지키기보다 &lt;strong&gt;브랜치명 + 커밋에 이슈 키&lt;/strong&gt;만 챙겨도 충분하다. 나중에 &lt;code&gt;git log&lt;/code&gt;에서 이슈 키로 검색하면 그 작업의 전체 맥락을 찾을 수 있다.&lt;/p&gt;
&lt;p&gt;다음 편에서는 Slack과 연동해서 Jira + GitHub 알림을 한 곳에 모으는 방법을 다룬다.&lt;/p&gt;</description></item></channel></rss>