본문 바로가기
프로그래밍 툴(Programming Tools)

[Intellj] Github을 이용한 프로젝트 관리

by 보배곰 2020. 11. 9.

개인 프로젝트를 진행하는데 어떻게 하면, 할 일 관리가 편할까 찾다가 Github issue 관리를 이용하게 되었습니다. 

해야할 일을 등록하고, 개발하고, 잘 되는지 확인하려고 합니다. 

 

진행 순서

  1. Github에서 이슈 등록하기
  2. IntelliJ에서 이슈 기반의 Task와 브랜치 만들기
  3. 개발하기
  4. commit, push 하기
  5. Github 혹은 IntelliJ에서 Pull Request 생성하여 코드리뷰 하기 
  6. Merge 하기, 해당 이슈의 branch 삭제하기

 

1. Github에서 이슈 등록하기 

repository에 [Issues] 탭에 [New issue]를 클릭합니다. 

작성해 놓은 템플릿이 있다면, 작성해놓은 템플릿을 선택할 수도 있습니다. 

내용을 작성합니다. 

 

Projects 와 Milestone 은 미리 등록해놓아야 설정 가능합니다. Labels은 이미 등록된 내용을 써도 좋고, 추가도 가능합니다.

 

새로운 이슈를 등록하고 나면 제목 옆에 #숫자가 적혀있습니다. 해당 번호가 이슈 번호가 됩니다. 

 

 

참고 1. Projects 만들기

Projects는 상단 탭 Projects에서 설정 가능합니다. 

템플릿은 칸반보드 형태입니다. 

Basic kanaban은 To do, In Progress, Done이 포함된 일반적인 칸반 보드입니다. 

Automated kanban은 이슈가 open, close 로 상태가 변화할 때 자동으로 To do, Done으로 옮겨줍니다. 

Automated kanban with reviews 는 Automated kanban과 비슷한데 여기서 Review in progress 와 Reviewer approved 컬럼이 추가됩니다. 

 

저는 개인 프로젝트를 진행하고 있기 때문에 Automated kanban으로 충분하여 해당 템플릿으로 프로젝트를 만들었습니다. 만들어진 컬럼 이외의 필요한 컬럼이 있다면 편하게 추가됩니다. 

 

참고 2. Milestone 만들기

마일스톤은 이슈 탭 마일스톤에서 만들 수 있습니다. 

 

마일스톤으로 등록하면 아래와 같이 관련 이슈는 몇개 있는지 진행도는 어떻게 되는지 한 눈에 확인이 가능합니다. 

그렇기 때문에 큰 작업 개념을 넣어도 좋고, version 을 등록해도 좋을 것 같습니다. 

참고 3. Label 만들기

Label은 이슈 탭에서 New label을 눌러 새로 등록이 가능 합니다. Label을 통한 필터 검색이 가능합니다. 

 

참고 4.  Issue template 만들기

이슈 템플릿을 만들어 등록할 수도 있습니다. 

 

원하는 템플릿을 선택합니다. 사실 어떤걸 선택해도 상관없습니다. 

 

원하는 내용으로 수정해줍니다. 

 

수정 후, [Propose changes] 를 클릭 후, 커밋합니다. 

다음에 이슈 등록할 때 원하는 템플릿을 선택해서 등록할 수 있습니다.

 

 

2. IntelliJ에서 이슈 기반의 브랜치 만들기 

브랜치를 만들기 전에 Task와 Github을 연결해줍니다. 

[Preferences...] -> [Tools] -> [Tasks] -> [Servers] 에서 [+] 를 클릭해 Github을 등록해줍니다. 

연결하고자 하는 Repository 를 등록하고, API token을 발급받아 등록해줍니다. 

 

Commit Message 를 클릭해서 커밋내용을 수정할 수도 있습니다. 

(  Github update 한번 합니다~ )

 

인텔리제이 우상단 Default task 영역을 클릭 후, Open Task...를 클릭합니다. 

 

위에서 계정 연결을 해주었기 때문에, 저희가 방금 등록한 이슈가 task에 뜨게 됩니다. 

"campsns-admin"은 제 프로젝트 이름이고, "6"은 위에서 본 이슈 번호입니다. "소스관리 계획 추가"는 등록한 이슈 제목입니다. 

클릭해서 Task를 만들어줍니다. 

브랜치는 master에서 만들겁니다.

저는 브랜치 이름만 [ 이슈번호-간단 텍스트 ] 로 바꿔주었습니다. 

 

등록하고나면 아래와 같이 바뀌게 되는데, 우상단 Default Task는 위에서 Create changelist에 등록한 이름으로 바뀌게 됩니다. 

우하단에서 위에서 만든 브런치로 바뀐걸 확인할 수 있습니다. 

 

 

즉, 이슈를 기반으로 Task 와 브랜치를 같이 만들었습니다. 

 

3. 개발하기 

이 상태에서 개발을 합니다. 

타라락타앋ㄱ 

타닥

 

저는 README.md를 수정해줄겁니다. 

 

4. commit, push 하기 

Changelist, 브랜치, 수정 내역을 확인 후 Commit해줍니다. 

변화 내용 확인해서 Push해 줍니다. 

push까지 마치고 나면 Github에서 확인 할 수 있습니다. 

내용을 클릭하면, 변화된 소스도 확인할 수 있습니다. 

 

5. Github  혹은 IntelliJ에서 Pull Request 생성하여 코드리뷰 하기

IntelliJ에서 shift 두번 눌러 pull request를 검색해, [ Create Pull Request ] 를 선택합니다. 

 

이런 식으로 만들 수도 있습니다. 

 

 

저희는 Github 페이지에서 만들어보겠습니다. 

 

compare 에 push한 브랜치를 선택해줍니다. 

 

브랜치를 선택하면, 커밋과 커밋한 파일들을 보여줍니다. 

머지가 가능하다고도 뜨네요. [ Create pull request ] 를 눌러줍니다. 

 

pull request도 이슈처럼 내용을 작성해주고 Assignees, labels, projects, milestone 를 넣어줄 수 있습니다. 

이슈와 다른 부분은 Reviewers 입니다. 

 

pull request 는 이슈와 달리 Reviewers 를 지정할 수 있습니다. 

Reviewers를 지정하면 그 사람이 코드를 검토하고, 원하는 코드 라인에 댓글(comment)도 달고 승인(approve)하거나 재검토(request changes)하라고 할 수 있습니다. 

 

저는 1인 개발이기 때문에 따로 등록할 리뷰어가 없어서(ㅠ) 넘어가도록 하겠습니다. 

 

내용에 resolve #이슈번호 를 적어주면 내용이 잘 적용되어 merge 될때, open된 이슈를 close 시켜줍니다. 

 

아래와 같이 pull request가 등록되었습니다. 

해당 프로젝트는 Github의 Action기능을 통해 자동화를 진행하고 있습니다. 그래서 첫번째 빨간 상자에서 테스트하고 있다는 내용이 나오고 있습니다. 

두번째 빨간 상자는 merge가 잘 되었다고 표시해주고 있습니다. 

 

테스트도 잘 마치면, 아래와 같이 Merge pull request 버튼이 초록색으로 활성화됩니다. 

 

참고 1. Github Action

Github Action는 Github에서 제공하는 CI/CD 도구 입니다. build, test, release 등 다양한 이벤트를 기반으로 workflow 를 작성할 수 있습니다. 

직접 만들 수도 있고, 이미 만들어진 내용을 가져다가 쓸 수 있습니다. 제 프로젝트는 Gradle을 기반한 Java 이기 때문에 해당 내용을 클릭합니다. 

 

아래 내용을 바탕으로, 원하는 내용을 더 추가하거나 수정할 수 있습니다. 따로 수정할 내용이 없다면 저 상태 그대로 사용하셔도 가능합니다. 

작성이 완료되면 [ Start commit ] 을 눌러 커밋해줍니다. 

그러면 Actions 탭을 통해 build 내용을 확인 할 수 있고, Workflow 파일도 수정할 수 있습니다. 

 

6. Merge 하기, 해당 이슈의 branch 삭제하기 

이상이 없다면 Merge 해봅시다.

merge 옵션이 3가지가 있습니다.

Create a merge commit : 내 여러 커밋이 master 에 추가됨.

Squash and merge: 내 여러 커밋이 하나로 합쳐져 master 에 추가됨.

Rebase and merge: 내 여러 커밋이 마치 master에서 작업된 것처럼 추가됨.

 

아래 링크에서 보기 쉽게 설명하고 있으니 참고하시면 좋을 것 같습니다. 

https://im-developer.tistory.com/182

 

[Git] Merge 이해하기 (Merge / Squash and Merge / Rebase and Merge)

회사에서 Git을 사용해서 형상 관리를 하고 있다. 그 동안 내가 개인 repository branch에 commit, push등을 해본 적은 많지만 다른 사람과 협업을 하면서 branch를 생성하고 master에 merge를 해본 적은 없어서

im-developer.tistory.com

저희는 깔끔하게 Squash and merge 를 선택합니다. 

 

Merge하고 나면 아래와 같이 변경됩니다. 

그리고 이제 해당 branch는 필요없으므로 Delete branch 를 눌러 브랜치를 삭제해줍니다. 

 

Projects탭에 가면 이슈가 close되어 있고, Done으로 옮겨져 있는 것을 볼 수 있습니다. 

 

매번 해당 작업을 반복해서 개발을 하다보면, 관리가 더 쉬워지지 않을까 싶습니다. 

 

'프로그래밍 툴(Programming Tools)' 카테고리의 다른 글

Gitmoji 사용하기  (0) 2020.11.20
[IntelliJ] 자주 쓰는 단축키 (mac)  (0) 2020.09.10
Macbook Setting (개발자)  (0) 2020.05.26
Windows Terminal  (0) 2020.05.22
TDD, 리펙토링 연습하기 영상  (0) 2020.02.28