2. GitLab 한 스푼으로 소스코드 다스리기
🔥2주 차 학습 목표
💡CI/CD는 개발에서 배포까지의 파이프라인을 설계하고 자동으로 실행하는 과정입니다. 이 과정을 수행하기 위해서는 설계 및 자동화를 위한 툴이 필요합니다. CI/CD를 위한 여러 툴 중 가장 널리 사용되는 툴 중 하나인 GitLab을 살펴봅니다.
💡Docker 형태의 애플리케이션을 배포하게 됩니다. 예제 애플리케이션을 Docker image로 build하고 직접 실행해 봅니다. 이렇게 빌드된 docker image를 가상 머신, 로컬 PC, 클라우드에 배포하기 위해서는 docker image 저장소인 docker image registry에 등록해야 합니다. AWS에서 제공하는 docker image registry에 등록하고 이 과정을 GitLab을 이용해서 자동화하겠습니다.
✅ 출처 링크
GitLab을 이용한 CICD Pipeline 구축 - GitLab 설치
GitLab은 코드 저장소와 자동화된 CICD pipeline을 구축할 수 있도록 도와주는 DevOps 소프트웨어다. 여기에서는 GitLab을 설치해서 git 프로젝트를 만들고 git 명령을 이용해서 clone, push, pull 을 해볼 것이
joinc.co.kr
🗨️ GitLab은 세계에서 가장 널리 사용하는 CICD 툴 중 하나로 다른 인기 있는 툴로는 Jenkins와 GitHub이 있다
🗨️ 개발자는 코드를 작성하고 GitLab에 푸시하며, GitLab은 CI/CD 툴이자 기초 저장소의 역할을 한다 (Git 기반으로 소스코드 관리)
🗨️ GitLab은 코드 Push 가 된 것을 확인하고 Docker Image를 만들고 이 Docker Image로부터 docker container를 실행한다
🗨️ 빌드한 애플리케이션을 AWS 도커 이미지 저장소인 ECR에 푸시하여 AWS 클라우드로 도커 이미지 애플리케이션을 배포할 수 있는 환경을 만든다
GitLab 소개
- 버전관리 및 소프트웨어 개발 라이프사이클을 지원하는 오픈소스 소프트웨어
- git 저장소를 이용해서 버전관리 및 협업
- 개발 계획부터 배포, 운영, 모니터까지의 전체 개발 라이프사이클을 지원 (ex 이슈추적시스템)
- GitLab은 GitLab Server와 GitLab Runner로 구성된다
- GitLab Server는 Git 코드 저장소와 웹 기반의 CICD 관리 콘솔을 제공
- 22번 포트를 이용해서 git 작업(clone, pull, push,...)을 할 수 있다.
- 사용자는 브라우저를 이용 80번(혹은 443) 포트에 접근해서 사용자관리, 프로젝트 관리, CICD Pipeline 설계, CICD 과정에 대한 모니터링 등 관리 작업을 수행할 수 있다
- GitLab Runner는 CICD를 실행하는 일을 한다
- GitLab Server에서 CICD를 위한 스크립트를 설정하고 이 스크립트를 Runner가 실행한다
- GitLab Server는 Git 코드 저장소와 웹 기반의 CICD 관리 콘솔을 제공
깃랩 사용하기
1. GitLab 회원가입 하기
The most-comprehensive AI-powered DevSecOps platform
From planning to production, bring teams together in one application. Ship secure code more efficiently to deliver value faster.
about.gitlab.com
2. 프로젝트 생성하기
3. 프로젝트 만들기
새로 만든 git project에 push, pull 명령을 수행하기 위해서는 SSH Key를 등록해야 한다. ssh-keygen을 이용해서 새로운 ssh key를 만든다
$ ssh-keygen -t rsa
private 키와 public 키 2개가 생성된다. 이 공개키를 깃랩에 등록하면 된다.
4. 프로젝트 클론하기
프로젝트에서 SSH 주소를 복사하여 git clone 명령어로 가져온다.
$ git clone ssh://git@gitlab:8022/yundream/hello-world.git
'hello-world'에 복제합니다...
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
오브젝트를 받는 중: 100% (3/3), 완료.
$ cd hello-world
$ ls
README.md
About.md 파일을 만들어서 푸시하기
$ git add About.md
$ git commit -m "Update About.md"
$ git push
오브젝트 나열하는 중: 4, 완료.
오브젝트 개수 세는 중: 100% (4/4), 완료.
Delta compression using up to 12 threads
오브젝트 압축하는 중: 100% (3/3), 완료.
오브젝트 쓰는 중: 100% (3/3), 477 바이트 | 477.00 KiB/s, 완료.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To ssh://gitlab:8022/yundream/hello-world.git
bc7e477..ad359c4 main -> main