Github User Guide

GitHub 기초

Why Github?

git 기초학습 참고자료

https://git-scm.com/book/ko/v2

https://backlog.com/git-tutorial/kr/

git 의 대표적인 workflow 3가지

https://vntgcorp.github.io/Git

Git 기능 참고

Git 저장소 안에 다른 Git 저장소를 디렉토리로 분리해 넣는 것이 서브모듈이다. 다른 독립된 Git 저장소를 Clone 해서 내 Git 저장소 안에 포함할 수 있으며 각 저장소의 커밋은 독립적으로 관리한다. Git - 서브모듈

git submodule init git submodule udpate

github 설정

GitHub 인증 정보

https://docs.github.com/en/github/authenticating-to-github/keeping-your-account-and-data-secure/about-authentication-to-github

계정을 안전하게 유지하려면 GitHub의 특정 리소스에 액세스하기 전에 인증해야 합니다. GitHub에 인증할 때 자신이 선언한 사람이 정확히 누구인지 증명하기 위해 고유한 자격 증명을 제공하거나 확인합니다.

브라우저, GitHub 데스크톱 또는 다른 데스크톱 애플리케이션, API 또는 명령줄 등 다양한 방법으로 GitHub의 리소스에 액세스할 수 있습니다. GitHub에 액세스하는 각 방법은 서로 다른 인증 모드를 지원합니다.

 

배포스크립트 자동화를 할 때는 여러 가지 방법이 있으며 가장 간단한 방법 중 하나는 deploy key를 이용하는 방법임(ssh key 이용)

https://docs.github.com/en/github/authenticating-to-github/keeping-your-account-and-data-secure/reviewing-your-deploy-keys

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

  • 전화번호 확인용 코드 수신 후 등록

참고자료 : https://docs.github.com/en/github/authenticating-to-github/securing-your-account-with-two-factor-authentication-2fa/configuring-two-factor-authentication

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 생성 : https://docs.github.com/en/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent

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/pricing

https://github.com/features/packages
2GB of Packages storage 까지는 github teams에 제공되어서 무료입니다.  Data transfer out outside of Actions 10G까지는 무료입니다.  (github 에서 패키지 다운로드)

 

https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-docker-registry

$ 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.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-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이 가능합니다.

https://docs.github.com/en/organizations/managing-access-to-your-organizations-repositories/repository-permission-levels-for-an-organization

Package 사용

기본 Private과 Internal에 대해 package 사용을 할 수 있음. 개발중에 필요에 따라 자유롭게 package 생성이 가능합니다.