La foret rouge
Published on

Jenkins를 처음 시작할 때 알아야 할 것

Authors
  • avatar
    Name
    Shin Juyong

팀을 구성해 프로젝트를 하며 역할 분담을 하는데 갑자기 인프라를 맡게 되었습니다. 지금까지는 인텔리제이에서 실행 버튼을 누르면 스프링 서버가 알아서 실행 됐는데, AWS EC2라는 Ubuntu Linux에 Pem 키를 사용해 SSH로 접속해서 서버를 올리고 방화벽을 열어줘야 한답니다. 이게 다 무슨 소리인가 싶습니다. 그런데 주변에 다른 팀에서는 Jenkins를 설치하면 CI/CD가 되고 좋다고 얘기를 하니 왠지 그것도 써야 될 것 같은 느낌이 듭니다.
Jenkins에 대해 조금 구글링을 해보니 자동으로 빌드를 해준다고 합니다. 잘 모르겠지만 자동으로 해줘서 편하다고 하니 써야될 것 같습니다. 그런데 CI/CD가 뭔지, Pipeline은 또 뭔지, Step에서 Docker로 Build를 뭘 해줘야 한다는데 막막합니다.

프로젝트를 하면서 Jenkins를 처음 접한 이런 상황에 놓인 동료들을 자주 보게 됩니다.

주니어 수준에서 Jenkins 전문가가 될 것이 아니라면 Jenkins를 아주 깊게 공부하지는 않아도 될겁니다. 그 정도로 깊게 공부할 충분한 시간을 내기도 쉽지 않고요. 그래서 우선은 Jenkins를 가장 많이 사용하는 이유인 '빌드 자동화' 측면에서 이야기를 해보려고 합니다. Jenkins로 빌드 자동화만 해둬도 일이 많이 줄어들고 프로젝트 진행에도 도움이 되기 때문입니다. (이와 관련된 제 경험은 이 글을 참고해주세요.)

제가 Jenkins로 빌드 자동화를 처음 시작하려는 분들께 하고 싶은 말은 크게 두 가지입니다.

로컬 터미널 환경에서 먼저 실행하세요.

우선 빌드 자동화를 할 때 꼭 인지해야 할 내용은 '내가 수동으로 할 줄 알아야 한다'는 점입니다. 윈도우만 써보신 분이라면 (리눅스랑 약간 다르긴 하지만) Powershell을 쓰든, WSL을 설치해서 우분투 리눅스를 써보든, 로컬(내 컴퓨터)의 터미널 환경에서 서버를 실행해 보세요. 서버를 내가 원하는 대로 띄우기 위해 어떤 명령어를 어떤 순서로 실행해야 하고, 어떤 인자를 넣어줘야 하고, 설정 파일들은 어느 경로에 있고... 이런 것들에 익숙해지세요.

팀원들과 친해지세요.

본인이 FE 개발도 해봤고, BE 개발도 해봤다면 상관 없지만, 그게 아니라면 다른 포지션의 개발자 동료들과 친해지세요. 그리고 물어보세요. 어느 경로에 들어가서 어떤 파일이 있어야 되고 그 경로에서 어떤 명령어를 실행하고 정상 실행을 확인하려면 어떤 로그가 출력되어야 하는지... 이런 것들을 그것을 직접 만들고 관리한 동료에게 먼저 물어보세요. 물론 구글에는 수많은 정보가 있고 요즘은 ChatGPT나 Gemini 같은 성능 좋은 챗봇도 있지만, 그 프로젝트를 직접 만들고 관리하는 동료가 옆에 있는데 서로 다른 말을 하는 수많은 개발자들의 지식을 보며 머리 아플 필요는 없잖아요?

Jenkins로 빌드 자동화를 할 때 이것만 알면 된다는 뜻은 아닙니다. 당연히 Jenkins에 대한 공부도 해야될 것이고, 처음 말했던 시나리오처럼 리눅스 등에 대한 배경지식도 차차 갖춰나가야 할겁니다. 그래도 그 전에 이 두 가지를 먼저 생각하면 조금은 도움이 되지 않을까 생각합니다.