Github User Guide
- 1 GitHub 기초
- 1.1 Why Github?
- 1.2 git 기초학습 참고자료
- 1.3 git 의 대표적인 workflow 3가지
- 1.4 Git 기능 참고
- 2 github 설정
- 2.1 GitHub 인증 정보
- 2.2 MFA 설정
- 2.3 git config
- 2.4 github ssh 인증
- 2.5 git repo 이름 규칙 (선택)
- 3 github actions
- 4 docker registry, container registry
- 5 기타
- 5.1 team으로 관리하기
- 5.2 Package 사용
GitHub 기초
Why Github?
git 기초학습 참고자료
git 의 대표적인 workflow 3가지
Github에 개발자/운영자가 익숙해질때까지 가장 간단한 workflow 사용을 추천
Github flow: 초기 개발중으로 운영환경에 대한 고려가 필요없는 프로젝트
Gitlab flow: GA된 이후 꾸준히 버전업이 진행되는 프로젝트
github 의 기본 branch는 main입니다. 신규로 만들 때는 main으로 설정을 하고 사용을 합니다.(예전에는 master 이었음)
2020년도에 기존의 IT 용어 중 master, slave, blacklist, and whitelist 와 같은 인종차별적인 단어들을 바꾸려는 움직임이 있었습니다. 그러면서 Github도 기본 branch를 master에서 main으로 변경했습니다.
Git 기능 참고
Git 저장소 안에 다른 Git 저장소를 디렉토리로 분리해 넣는 것이 서브모듈이다. 다른 독립된 Git 저장소를 Clone 해서 내 Git 저장소 안에 포함할 수 있으며 각 저장소의 커밋은 독립적으로 관리한다. Git - 서브모듈
git submodule init
git submodule udpate
github 설정
GitHub 인증 정보
계정을 안전하게 유지하려면 GitHub의 특정 리소스에 액세스하기 전에 인증해야 합니다. GitHub에 인증할 때 자신이 선언한 사람이 정확히 누구인지 증명하기 위해 고유한 자격 증명을 제공하거나 확인합니다.
브라우저, GitHub 데스크톱 또는 다른 데스크톱 애플리케이션, API 또는 명령줄 등 다양한 방법으로 GitHub의 리소스에 액세스할 수 있습니다. GitHub에 액세스하는 각 방법은 서로 다른 인증 모드를 지원합니다.
이중 인증을 사용하는 사용자 이름 및 비밀번호
개인 액세스 토큰(PAT) : GitHub API 또는 명령줄을 사용할 때 GitHub 인증에 암호를 사용하는 대신 사용할 수 있습니다 . https://docs.github.com/en/github/authenticating-to-github/keeping-your-account-and-data-secure/creating-a-personal-access-token
SSH 키
배포스크립트 자동화를 할 때는 여러 가지 방법이 있으며 가장 간단한 방법 중 하나는 deploy key를 이용하는 방법임(ssh key 이용)
https://docs.github.com/en/developers/overview/managing-deploy-keys#deploy-keys
MFA 설정
보안을 위해서 반드시 MFA 설정을 해야 합니다.
스마트폰에 OTP 프로그램 설치 (구글 OTP 등) → https://github.com/settings/security → Two-factor authentication enable 설정하여 OTP 등록. OTP 분실에 대비해서 OTP 등록시 나오는 Recovery code 를 보관하고 있으면 좋습니다. 추가로 Fallback SMS number 를 등록해두면 OTP 분실시 SMS 를 이용할 수 있습니다. 또한 OTP 앱 대신 SMS를 이용할 수도 있습니다.
South Korea +82
010-0000-0000
전화번호 확인용 코드 수신 후 등록
git config
git config --global user.name "tjmoon"
git config --global user.email "tjmoon@example.com"
git config --global init.defaultBranch main
github ssh 인증
https://docs.github.com/en/github/authenticating-to-github/connecting-to-github-with-ssh
ssh key : ssh key 생성 후 public key를 github에 등록해주어야 함. 그러고나서 ssh 테스팅을 하여 접속이 문제가 없는지 확인을 함.
ssh key 생성시 rsa, dsa, ecdsa, ed25519 등의 알고리즘을 이용할 수 있으며 ed25519 를 추천함. Ed25519 는 2014년 1월 OpenSSH 6.5 에 도입되었습니다 . " Ed25519는 ECDSA 및 DSA보다 더 나은 보안과 우수한 성능을 제공하는 타원 곡선 서명 체계입니다 ."
https://www.ssh.com/academy/ssh/keygen
https://wiki.archlinux.org/title/SSH_keys#Choosing_the_authentication_key_type
$ ssh-keygen -t ed25519 -C "your_email@example.com"
ssh test
github 계정이 여러 개 있는 경우 ssh 의 설정을 통해서 사용을 할 수 있다.
ssh config 작성
확인
git repo 이름 규칙 (선택)
필수는 아니지만 가능한한 프로젝트의 성격을 나타낼 수 있는 이름으로 정한다.
소문자로 구성
문자 사이는 - 로 연결
예) sample-backend
참고 : https://github.com/orgs/aws/repositories
github actions
https://sysadmin.atlassian.net/wiki/spaces/sysadmin/pages/2277539924
docker registry, container registry
https://github.com/features/packages
2GB of Packages storage 까지는 github teams에 제공되어서 무료입니다. Data transfer out outside of Actions 10G까지는 무료입니다. (github 에서 패키지 다운로드)
$ docker login https://docker.pkg.github.com -u tjmoon-sample
$ docker build -t docker.pkg.github.com/tjmoon-sample/action_test/docker_test:1.0 .
$ docker push docker.pkg.github.com/tjmoon-sample/action_test/docker_test:1.0
현재는 package namespace 를 사용하는 Docker registry 를 지원하고 있는데 향후에는 Container Registry 로 대체를 할 것이라고 함. Container Registry 는 사용자 또는 조직에 대해서 설정을 하며 아직은 베타버전임. https://docs.github.com/en/packages/working-with-a-github-packages-registry/enabling-improved-container-support-with-the-container-registry
Docker registry는 Container registry 에 의해 대체가 되었다.
https://docs.docker.com/get-started/02_our_app/ 참고하여 아래 repo의 파일 받음. Dockerfile 에서 LABEL 에 해당 git repo 를 넣어주어야 컨테이너 이미지가 만들어지고 나서 해당 git repo와 연동이 된다. (안그러면 웹에서 수동으로 해야 함)
docker login 에서 비밀번호는 personal access token 을 이용하면 된다.
https://github.com/docker/getting-started/tree/master/app
컨테이너 빌드하고 github Container registry 에 push 하기
기타
team으로 관리하기
신규사용자가 등록되면 관리자는 해당 사용자를 조직도에 맞춰 팀에 편성합니다.
sample Github의 repo는 기본적으로 모든 sample사용자에게 read권한으로 공개됩니다. (물론 외부사용자에게는 public repo만 공개되며, private repo는 외부사용자가 접근하면 404가 반환됩니다)
read 권한은 소스코드를 자유롭게 pull 할 수 있으나 수정과 관련된 액션, 즉 PR이 불가능합니다.
repo의 담당 팀/사용자는 write 혹은 admin권한이 부여되며, PR이 가능합니다.
Package 사용
기본 Private과 Internal에 대해 package 사용을 할 수 있음. 개발중에 필요에 따라 자유롭게 package 생성이 가능합니다.