Github
낱낱이 파헤쳐보자!

Organizations 구성
개인 프로필 설정에서 Organization을 생성하여 팀 단위로 프로젝트를 관리할 수 있다

무료로도 제공해준다. 우리는 무료로 생성하겠다.

public/private 설정 할 수 있으며, 이름이 도메인 주소가 되며, 중복된 이름을 사용할 수 없다

아래와 같이 Organization이 생성된다

멤버 추가 및 그룹화
멤버 추가
organization에 멤버를 추가할 수 있다
멤버는 Repo 기여, project 관리 등을 수행할 수 있다
해당 Organization이 public 인 경우에 Member 가 public이어야 외부에 노출된다

아래의 방식으로 깃허브 아이디를 이용해 멤버를 초대할 수 있다

팀 구성
초대된 멤버들을 팀을 통해 그룹화 할 수 있다

생성화면은 아래와 같다

생성 후 다음과 같이 멤버를 그룹화할 수 있다

그룹화가 되면 멘션(@) 으로도 활용할 수 있다

Issue
개발 과정에서 발생할 수 있는 버그, 개선 사항, 질문 등을 사항 별로 나누어 이슈로 구분하여 관리한다


PullRequest
각자 담당한 이슈에 대해서 깃 정책에 맞는 구조로 개별 브랜치를 생성하여 작업한 뒤, 작업이 완료되면 main, dev와 같은 통합 라인에 PR을 하게 된다

Branch 보호 Rule
해당 화면에서 Branch 관련 기능을 제어할 수 있다
Merge를 제한하여 팀원에게 코드 리뷰 후 승인 받을 수 있도록 설정할 수 있다

내가 PR요청을 보내면 다른 팀원들에게 review를 요청하는 문구가 생긴다
여기서 설정한 만큼의 인원이 리뷰를 해주어야 나에게 merge에 대한 권한이 생긴다.

설정 이상의 리뷰를 받지 못한 나의 PR 화면을 보게 된다면 이와 같이 merge가 불가능하게 되어있다.

리뷰어로 선정된 멤버가 메시지를 통해 아래의 기능을 수행할 수 있다
Comment : 댓글만 작성합니다. 승인과 무관함
Approve : 댓글과 함께 PR을 승인
Request changes : 댓글과 함께 승인을 거부

변경 사항에 대해 Pull Request가 승인 된다면 Release and merge를 통해 해당 변경 사항을 상위 Branch에 반영할 수 있다

Github Project
깃허브 프로젝트를 사용하면 프로젝트 관리, 이슈 관리에 용이하다
생성 템플릿 종류는 아래와 같다
Table
Board
Roadmap

칸반 보드를 생성하면 기본적으로 세팅이 되어 있다
해당 템플릿을 통해 프로젝트를 관리할 수 있다
Todo : 해야할 이슈
In Progress : 작업 중인 이슈
In Review : 리뷰 받는 중인 이슈
Done : 작업 완료된 이슈

Milestone
Task 수행시 기간을 두고 스프린트를 할 수 있도록 milestone을 지원한다

그룹화해서 이슈를 해결 할 수 있다

Wiki
Readme.md 가 개요라면 위키는 설명서라고 보면 된다
readme 구성은 아래와 같다
README | 일반 정보 |
AUTHORS | 제작 정보 |
THANKS | 도와주신 분들에 대한 정보 |
ChangeLog | 프로그래머들이 참고 할 수 있는 자세한 체인지로그 |
NEWS | 사용자들이 참고할 수 있는 기본적인 체인지로그 |
INSTALL | 설치 안내 |
COPYING/LICENSE | 저작권 및 사용권 정보 |
BUGS | 알려진 버그 및 새로운 버그 보고 방법 안내 |
위키를 이용하면 해당 Repo에 대한 설명을 구체적으로 할 수 있다
문서화하는 프로세스도 줄어들고, 개발자 및 사용자에게 정보를 제공해준다

레포지토리의 위키 탭에서 위키를 생성할 수 있다.

프로젝트의 제목, 소제목, 내용 등을 작성 할 수 있다.

Wiki도 Git 처럼 기록이 남아서 History를 확인할 수 있다.

Template 설정
템플릿을 생성하여 이슈, PR, Discussion 등을 정형화할 수 있다

Repo 설정에서 템플릿을 생성한다
여러 개의 템플릿을 만들어 사용할 수 있다

템플릿을 만들고 나면 이슈에 들어갈 내용을 작성할 수 있다
사용자가 이슈에 대한 설명, 할 일 등에 대한 내용을 작성할 수 있도록 양식을 설정 할 수 있다

템플릿을 만드는 것은 .github폴더 안에 마크다운 형식의 파일로 생성되는 것이므로 생성시 커밋 혹은 pr로 저장을 해줘야한다

.github 폴더 아래 ISSUE_TEMPLATE 폴더와 방금 생성한 템플릿 파일이 저장되어 있는 것을 확인할 수 있다

템플릿을 만들었다면, 이슈를 생성할 때 Get started 버튼을 눌러 원하는 템플릿을 선택하여 사용할 수 있다


Discussion
Issue에서도 대화를 수행할 수 있지만 모든 이야기의 주제를 Issue로 다룰 필요는 없다
Discussion에서 논의를 하여 문제, 개선사항등의 요소를 Issue로도 등록할 수 있다
유명한 포럼이나 오픈소스에서 운영하는 Discourse에서만 볼 수 있던 것이 Github에도 생겼다는것이 기쁘다
Discourse

암튼. Github에서도 된다
Repo 설정에서 활성화 할 수 있다

Organization 자체에도 설정할 수 있다

활성화되면, organization에 설정했다면 자체에 Discussion 탭이 생기고, Repo에 설정했다면 Repo 내 탭이 생겼을 것이다
좌측 기본 카테고리가 있으며, 개발자가 수정할 수 있다
기본 제공은 아래와 같다
Announcements : 공지. Discussions 상단에 상시로 띄워짐
General : 일반적으로 글을 작성할 수 있다. 일반적인 포럼

공지를 한번 띄워보겠다


아래와 같이 공지가 뜨며, Slack등의 협업 도구를 사용하는 분이라면 플러그인으로 연동하여 웹훅 알림을 받을 수도 있다
slack 연동은 아래 링크 참고
https://github.com/integrations/slack

Packages
Docker 처럼 container, image를 hub 대신 팀 내에서만 활용할 수 있도록 github에서도 제공한다
주소가 Docker는 docker.pkg.github.com 를, Container Registry는 ghcr.io 이다.

자세한 내용은 아래의 블로그에 잘 기술되어 있다
GitHub Container Registry 사용하기 :: Outsider's Dev Story
Actions
workflows 설정을 통해 이벤트 발생시 특정 명령을 수행할 수 있도록 자동화 할 수 있다
개인이 별도로 작성할 수 있고, Template도 제공해준다
GitHub Actions 설명서 - GitHub Docs


EC2 배포는 여기에서 자세히 알려준다
github-action 으로 ec2 에 배포하기 - BESPIN Tech Blog (bespinglobal.com)


