목차
2023.08.22 - [CICD/학부수업내용복습] - 카테고리 생성 이유
앞서 작성했던 글의 내용해서 설명드렸듯 Jira와 Github를 연동한 이유는 이슈 관련 내용을 한 눈에 파악할 수 있도록 하기 위함이었습니다. 관련 작업을 진행해보도록 하겠습니다.
1. Jira와 Github 연동
우선 Jira와 Github를 연동하도록 하겠습니다.
Jira 상단의 [앱]을 클릭한 후 [더 많은 앱 살펴보기]를 클릭합니다.
검색칸에 "Github for Jira"를 입력합니다.
"Github for Jira"를 클릭합니다.
[Get app]을 클릭합니다.
[Get it now]를 클릭합니다.
잠시 기다리시면 완료되었다는 팝업이 뜹니다.
[Get started]를 눌러줍니다.
이후 나오는 화면에서 [Connect Github organization]을 클릭합니다.
다음 화면에서 어떤 GitHub를 연결할지 선택하라고 나옵니다.
저는 Github에서 github.com 도메인을 가진 저장소를 사용하고 있으니 좌측의 [GitHub Cloud]를 선택하도록 하겠습니다.
이후 넘어간 화면에서 Permission을 위해 [Authorize Jira]를 클릭합니다.
[Install GitHub for Jira on a new organization]을 클릭합니다.
어느 곳에 Jira를 설치할건지 선택하라고 주어집니다.
저는 개인 연습용으로 사용할 것이기 때문에 제 개인 Organization을 선택하겠습니다.
연습용으로 사용하기 위한 repository를 선택한 후, [Install]을 눌러줍니다.
이후 연결하고자 하는 Jira site와 연결을 진행합니다.
연결이 완료되었습니다.
연결이 완료된 후, 이슈를 생성해보면 그 동안 못보던 개발 탭에 [브랜치 만들기], [커밋 만들기]가 생긴 것을 확인하실 수 있습니다.
2. branch 생성하기
작업을 하는 팀 내부의 컨벤션에 따라서 다르겠지만 '소프트웨어개발실무' 수업에서 팀 작업을 할 때도 뮤지컬 커뮤니티 사이트를 만드는 프로젝트를 진행할 때도 저는 이슈별로 티켓을 발행하고 티켓마다 branch를 생성해서 해당 branch에서는 해당 이슈만 작업하도록 설정하는 것을 선호하였습니다.
Github와 연동한 Jira를 이용해서 branch를 생성해보겠습니다.
Jira를 이용해서 branch를 만드는 방법은 2가지가 있습니다.
2-1. Github repository에 branch 바로 생성하기
[브랜치 만들기]에 마우스를 올리면 버튼이 2개로 구분되어 있다는 것을 확인하실 수 있습니다.
이 중 첫 번째 버튼을 클릭하면 됩니다.
클릭 후, 이동한 페이지에서 어느 Repository에 branch를 생성할 것인지 어느 branch로부터 분기할 것인지 branch 이름은 무엇으로 할 것인지 정하도록 안내됩니다. 원하시는대로 설정한 후에 [Create branch]를 누르면 됩니다.
생성 후 Github repository에 가서 확인해보시면 branch가 잘 생성되었음을 확인하실 수 있습니다.
2-2. 로컬 Git에서 branch 생성하기
위와 같은 경우 말고 바로 로컬에서 브랜치를 생성해서 작업하는 경우가 더 많다고 생각이 되는데요.
그런 경우에는 [브랜치 만들기]의 2번째 버튼을 클릭하여 제공해주는 명령어를 복사하여 사용하시면 됩니다.
3. 커밋 만들기
커밋을 만들고 Jira 이슈와 연결하고 싶다면 커밋 메시지에 이슈 키를 포함시켜서 커밋을 하면됩니다.
이슈키란 이슈 좌측 상단에 있는 키 값을 뜻합니다.
[커밋 만들기] 버튼을 클릭하면 커밋 메시지 예시를 보여줍니다.
예시를 이용해서 다음과 같은 커밋 메시지를 만들어 보았습니다.
이제 Githug repository에 push를 진행하고 다시 이슈 창을 보면 커밋이 연동되어 있음을 확인할 수 있습니다.
해당 부분을 클릭하시면 이슈 관련 브랜치에 대한 모든 정보를 보기 편리한 형태로 제공되는 창이 나옵니다.
이 곳에서 해당 브랜치와 관련된 모든 커밋을 편리하게 보고 관리할 수 있습니다.
결론
이를 통해 Jira와 Github를 연동하고 칸반 보드 기반으로 이슈 티켓을 발행해 팀원에게 작업을 할당하면 팀원은 해당 이슈를 기반으로 브랜치를 생성하고 작업하면 작업 과정이 보기 편하게 자동으로 정리된다는 점을 알 수 있었습니다.
제가 '소프트웨어개발실무' 수업을 수강했을 때는 저희 팀의 팀장님이 관리자라고 가정하고 팀장님이 칸반보드에 업무를 각 팀원에게 배분하면 각 팀원이 이슈에 맞게 브랜치 생성해서 작업을 진행하고 PR을 날리면 팀장님이 버그가 없는지 확인하고 Merge하는 작업 과정을 설정하고 지켰던 기억이 있습니다.
당시 Confluence도 사용해서 문서를 관리했던 기억이 있는데요. 팀장님과 팀원 분들 모두 열심히 해주셔서 많은 것을 배워갔던 팀플로 기억합니다.
여담
뮤지컬 커뮤니티 사이트 프로젝트 당시에는 오늘 다루었던 내용을 InteliiJ와 Github의 연동을 통해 수행했었습니다. 만약 Slack과의 연동을 포함하여 통합적인 자동화 툴을 다루고자 하는 것이 아니라 오늘의 작업만 다룬다면 IntelliJ와 Github 연동을 통해 작업하는 것도 편하고 괜찮으니 고려해보시는 걸 추천드립니다.
'CICD > 학부수업내용복습' 카테고리의 다른 글
Jira와 Slack 연동 (0) | 2023.08.23 |
---|---|
카테고리 생성 이유 (0) | 2023.08.22 |
목차
2023.08.22 - [CICD/학부수업내용복습] - 카테고리 생성 이유
앞서 작성했던 글의 내용에서 설명드렸듯 Jira와 Slack 연동한 이유는 팀원들의 작업 상태 변화를 빠르게 파악하기 위함이었습니다. 관련 작업을 진행해보도록 하겠습니다.
1. 자동화 규칙 만들기 시작
프로젝트 보드 우측 상단에 보면 번개 모양의 아이콘이 있습니다.
아이콘을 클릭 후 [+ 자동화 만들기]를 눌러주세요.
[+ 자동화 만들기]를 눌러 들어간 곳에서 [규칙 만들기]를 클릭합니다.
2. 트리거 설정하기
먼저 트리거를 설정해야합니다.
트리거는 방아쇠라는 뜻으로 특정 액션을 실행시키는 역할을 맡습니다.
아래와 같이 굉장히 다양한 트리거 장치가 있습니다.
이 중 과거 과제에서의 목적이 팀원의 작업 상태 변화를 파악하는 것이 목적이었기에 "이슈 전환됨" 항목을 선택하겠습니다.
현재 칸반 보드에서 나올 수 있는 상태 변환은 2가지입니다. "해야 할 일 -> 진행 중"과 "진행 중 -> 완료"
이 중 우선 "해야 할 일 -> 작업 중"을 작업하도록 하겠습니다.
아래와 같이 상태 변화가 된 것을 확인할 수 있습니다.
3. 작업 추가하기 (Slack 메시지 보내기 작업)
다음 단계로 넘어가기 위해 [컴포넌트 추가]를 누르시면 아래와 같은 화면을 볼 수 있습니다.
브랜치 만들기, 작업 추가, 조건 추가와 같이 다양한 작업을 추가 할 수 있다는 것을 확인하실 수 있습니다.
저는 슬랙 메시지를 보내는 것이 목표이기 때문에 [THEN: 작업 추가]를 선택하도록 하겠습니다.
앞선 [트리거 만들기]에서 보셨던 것과 같이 다양한 선택을 할 수 있습니다.
이 중 저희는 "Slack 메시지 전송"을 선택하겠습니다.
선택하면 나오는 화면에서 웹후크와 메시지를 작성해주면 됩니다.
3-1. 웹후크 URL 가져오기
웹후크 URL은 Slack 채팅방의 주소라고 생각하시면 됩니다.
앞서 보신 화면에서 "웹후크 URL" 하단의 [수신 웹후크를 구성]을 클릭합니다.
해당 버튼을 클릭하신 후 이동한 페이지에서 (만약 Slack 로그인이 안되어 있다면 로그인 진행 후) 메시지를 보낼 채널을 선택하시면 됩니다.
클릭하여 나온 화면에서 웹후크 URL을 복사합니다.
해당 URL을 앞선 화면의 "웹후크 URL" 입력창에 붙여줍니다.
3-2. 메시지 작성하기
메시지를 통해 우리가 얻고자 했던 부분은 "어떤 팀원"이 "어떤 작업"을 "어떤 작업 상태"를 가지고 있는지 파악하는 것이었습니다.
아래 링크를 참고하시면 원하는 값을 얻을 수 있는 키 값들이 안내되어 있습니다.
Jira smart values - issues | Cloud automation Cloud | Atlassian Support
Use smart values in automation rules to access and manipulate issue data in Jira Work Management Cloud. View the smart values in Jira Work Management Cloud.
support.atlassian.com
"어떤 팀원" = {{issue.assignee.displayName}}
"어떤 작업" = {{issue.summary}}
"어떤 작업 상태" = 일반 메시지로 표현
위 키 값을 이용하여 아래와 같이 메시지를 작성해보았습니다.
앞서 설명드리지 않은 {{issue.toUrl}}을 통해 <링크|텍스트> 양식을 만들어 업무 내용에 링크도 포함시키도록 하였습니다.
4. 마무리
마지막으로 자동화 이름을 지정하고 종료하면 끝입니다.
결과
아래와 같이 이슈를 작업 중으로 옮겼을 때 Slack 메시지를 받을 수 있었습니다.
여담
3년전의 Jira에는 아래와 같은 자동화 템플릿이 없었던거인지 아니면 여러 팀프로젝트를 하며 CI/CD에 관심을 가지다 보니 기능이 눈에 띄는 건지는 모르겠지만 Slack과 관련하여 이미 만들어진 자동화 템플릿이 많더군요.
그 이외에 자동화 템플릿이 많은 것을 보아 Jira를 적극적으로 활용하면 정말 편하고 좋은 자동화 툴이 될 것이라 생각됩니다.
'CICD > 학부수업내용복습' 카테고리의 다른 글
Jira와 Github 연동 (0) | 2023.08.23 |
---|---|
카테고리 생성 이유 (0) | 2023.08.22 |
목차
카테고리 생성 이유
약 3년 전 '소프트웨어개발실무' 라는 수업을 수강한 적이 있습니다. 해당 수업에서는 CI/CD의 중요성을 배우고 해당 내용을 실습하는 것이 목적이었습니다. 실습의 내용은 단순하게 깃허브를 연습하는 내용도 있었습니다. 마지막 과제 내용이 재밌었는데요. '스페이스 인베이더' 게임 코드가 주어졌을 때, 우리는 해당 게임을 유지 보수하는 직원이라는 시나리오가 주어집니다. 이 때, 고객의 요구사항이 주어집니다. "2인 플레이가 가능하게 해주세요.", "일시정지가 가능하게 해주세요", "난이도 선택 기능이 있으면 좋겠어요" 등등 다양한 요구사항이 주어질 때 해당 요구사항들을 잘 처리할 수 있는 CI/CD 환경을 구성하기 위한 방법을 팀원들과 강구해보고 실제로 구성해보며 구성된 CI/CD 환경을 토대로 고객이 주는 요구사항을 해결해보는 것이 과제였습니다.
팀원들과 많은 회의를 하며 CI/CD 환경을 구성하였고 성공적으로 유지 보수를 완료하여 좋은 성적을 받았던 것으로 기억합니다. 하지만 과거 작업했던 깃허브 레포가 삭제되었는지 안보이는 점 등 관련 자료를 정리해 저장해두지 않은 저의 잘못으로 관련 내용에 대해 증명할 근거가 없습니다.
해당 과제를 수행하며 얻은 지식이 굉장히 재밌었고 유익했던 것으로 기억하기에 복습한다는 생각으로 당시의 기억을 떠올리며 CI/CD 환경 구성 작업을 따라가보려합니다. 이 과정에서 기록을 토대로 공부한 증거도 남기고 싶습니다.
작업 종류
제가 기억하고 있는 작업은 아래와 같습니다.
- Jira와 Slack을 연동하여 칸반 보드에서 작업 형태가 변경되었을 때, Slack 메시지로 전달되어 팀원들의 작업 현황을 빠르게 파악할 수 있도록 함
- Jira와 Github를 연동하여 이슈 관련 내용을 한 눈에 파악할 수 있도록 함
- Github와 Jenkins를 연동하여 빌드 배포를 자동화 함
(위 작업 종류 3가지를 한 눈에 담긴 이미지 만들어서 여기에 놓기)
1. Jira와 Slack 연동
Jira와 Slack 연동
2023.08.22 - [CICD/학부수업내용복습] - 카테고리 생성 이유 앞서 작성했던 글의 내용에서 설명드렸듯 Jira와 Slack 연동한 이유는 팀원들의 작업 상태 변화를 빠르게 파악하기 위함이었습니다. 관련
dev-taehee.tistory.com
2. Jira와 Github 연동
Jira와 Github 연동
2023.08.22 - [CICD/학부수업내용복습] - 카테고리 생성 이유 앞서 작성했던 글의 내용해서 설명드렸듯 Jira와 Github를 연동한 이유는 이슈 관련 내용을 한 눈에 파악할 수 있도록 하기 위함이었습니다.
dev-taehee.tistory.com
3. Github와 Jenkins 연동
Github와 Jenkins의 연동은 부트캠프에서 공부할 때 다루었던 내용을 정리한 글이 있습니다.
해당 내용을 시도하려고 했던 이유가 애초에 '소프트웨어개발실무' 팀플에서 다뤄봤던 내용이어서 시도해봤던 것인데요. 이 글을 정리하면서 작업하면서 겪은 이슈나 해결 방법을 잘 정리해두는 것이 얼마나 중요한건지 깨달았습니다.
AWS EC2 환경 사용 시 Jenkins를 이용하여 CI/CD 시도한 내용
개요 Codestates PreProject 진행 시, Github Actions와 AWS Connector를 막아놔서 CI/CD를 쉽게 연결하기가 어려운 상황이 있었습니다. 수업 때 배웠던 내용이 적용이 안되어 당황스러웠지만 언제나 그렇듯이
dev-taehee.tistory.com
'소프트웨어개발실무' 팀플로 CI/CD 환경을 구축하는 경험을 했고 해당 경험 덕분에 CI/CD 환경을 새롭게 구축해야하는 상황에서도 겁먹지 않고 도전할 수 있게 되었습니다.
'CICD > 학부수업내용복습' 카테고리의 다른 글
Jira와 Github 연동 (0) | 2023.08.23 |
---|---|
Jira와 Slack 연동 (0) | 2023.08.23 |