본문 바로가기
IT

GitLab CICD 도입기 ①

by uzzing' 2023. 4. 15.


gitlab 과 github

회사에서 gitlab 을 도입하여 사용하기로 했다.

github는 써봤는데 gitlab 이라니 같은 회사인줄 알았는데 아니더라!

  • 깃랩은 깃랩사가 만들었다.
  • 깃허브는 마이크로소프트가 인수했다.

공통점으로 둘다 git 이라는 분산 버전 관리 시스템를 이용하여 소스코드를 관리하는 것이다.


첫번째 난관

예시 파일을 주셨다. 가이드도 주셨다. 기존에 svn 을 사용해서 svn을 끊고 gitlab 연동하는 거는 어렵지 않았다. 형상관리 툴을 연동하는 거니까~ git 을 써봐서 나름 능숙하다.

(아직도 svn 을 쓰는 회사가 있다고? 그럴수도 있더라)

 

근데 대망의 CICD 이게 문제다. 몇개월간 나를 괴롭혔다. 예시 가이드에서는 분명 원격 저장소에 파일을 올리고 빌드하고, war 파일을 만들어서 서버에 올리던데 나는 가이드와 맞는게 없었다.

  1. 가이드는 maven 을 사용한다.
  2. 나는 maven 프로젝트가 아니었다.
  3. 나는 빌드 파일도 없었다.
  4. 가이드는 war 로 압축해서 war 파일을 올린다.
  5. 나는 폴더 구조였다.

빌드 파일이 없다는 것부터 난관의 시작이었다.


공부 시작

그래서 일단 공부를 하기 시작했다. cicd 의 개념부터 시작해서 빌드, 배포 등 대충아는 것들을 완전히 이해하고 넘어가야겠다 싶었다.

cicd

https://finduz.tistory.com/entry/gitlab-cicd-개념-및-생각-정리

 

gitlab ci/cd 개념 및 생각 정리

gitlab ci/cd 로 변경하고자 알아본 바를 글로 남겨보고자 합니다. CI/CD 란? 어플리케이션 개발 단계부터 배포까지 자동화를 통해서 더 효율적이고 빠르게 사용자에게 빈번히 배포할 수 있도록 하는

finduz.tistory.com

빌드

빌드를 해본적은 무수히 많다. 생각해보니까 cicd 를 하면서 왜 빌드를 해야하나 생각을 했다. 빌드는 단순히 java → class 바꿔주는 것이 아니다. 배포 하기전 준비 단계의 과정이다. 무슨뜻이냐함은 컴퓨터가 이해할 수 있는 언어로 변환해주는 건 컴파일이라하는데 이런 것들을 빌드 파일에 작성하여 프로젝트 구조에 대한 배포물 형태로 만들어내는 작업이다.

  1. ant: 자유도가 가장 높아 사용자가 쉽게 만들 수 있지만, 높은 자유도로 인해 사용자가 구조를 잘 파악하여 작성해야한다.
  2. maven: pom.xml 을 자동으로 생성하여 프로젝트 구조를 파악할 수 있다.
  3. gradle: ant 의 장점과 maven 의 장점을 합친거. 안드로이드 프로젝트할 때 많이 봤는데, 잘 몰라봤다.. 과거를 반성한다.

배포

배포는 사용자가 사용할 있게끔 운영시스템에 변경된 파일을 적용하는 것이다. 배포에도 몇가지 방법이 존재한다.

1. .war 또는 .jar 파일 배포

  • 이 파일 하나를 그대로 서버에 올려 따로 압축 해제 하지 않고 내부 경로를 접근할 수 있다.
  • war 파일을 올리고, 서버에서 압축 해제할 수 있다.

프로젝트를 압축물 형태로 만드는 작업이다. .war, .jar 는 압축된 프로젝트물이다.

 

2. /target 폴더 또는 /dist 폴더로 파일 복사

배포될 파일들(예를들어, 컴파일된 class 파일) 을 target 폴더에 저장하여 이 target 폴더를 서버에 배포한다. 보통 target 폴더 혹은 dist 폴더로 명칭을 사용하더라.


정리해보면

이거다. 자 여기까지 공부와 서칭을 통해 알게된 정보다. 배포는 학생 때 해볼일이 없어서 잘 몰랐다 치고, 현재 회사에서도 그냥 배포할 파일만 내부 시스템에 올리면 되었기 때문에 구조를 딱히 몰라도 살아갈 수 있었다. 근데, 알아보니까 회사마다 배포하는 방식도 전부 다르고, 회사 내에서도 조금은 다를 것 같다. 좁은 우물에만 있으니 그게 세상의 전부인 줄 알았던거다. 🐸

다음에는 내가 선택한 방식들과 시행착오들에 대해 기록을 남길 예정!

반응형

댓글