본문 바로가기
Infra/Jenkins

[Jenkins] Jenkins 소개

by 진꿈청 2024. 7. 1.

Jenkins

 

 

 

Jenkins는 먼저 지속적인 통합, 지속적인 배포라는 의미를 갖고 있는 CI/CD 작업에 있어,
시스템의 자동화 파이프라인 또는 워크플로우를 설계하는 데 사용되는 도구이다.

 

 

지속적인 통합과 배포

  • Continuous Intergration Server 
    • Continuous Development, Build, Test, Deploy

다양한 Plugins 연동

  • Build Plugins: Maven, Ant, Gradle ....
  • VCS Plugins: Git, SVN ....
  • Language Plugins: Java, Python, Node.js ....

 

2005년부터 Jenkins 사용이 시작되었으며,

젠킨스 자체는 오픈소스이기에 수많은 래퍼런스와 플러그인을 갖고있다.

 

 

Jenkins의 구동 순서

  1. Build
  2. Test
  3. Deploy

 

Git과 같은 소스코드 형상관리 코드로부터 코드를 가져온 뒤

빌드 및 컴파일을 진행한다.

그 후, 단위 테스트를 진행하고 패키징을 하여 배포를 한다.

 

 

다른 CI/CD Tools과의 비교

  • 유일한 오픈소스 및 무료
  • 내장되어 있는 기능은 다른 도구보다 적음
  • 플러그인 및 통합 부분은 다른 도구에 비해 좋음
  • 자체적으로 직접 구축 가능 및 클라우드 서비스에서 사용 가능

 

Jenkins Pipeline

그림의 순서

VCM, SCM에서 코드 저장 -> 개발환경에서 빌드 -> 단위 테스트 -> 통합 테스트 -> UAT -> PROD

 

Jenkins 이렇게 각 단계로 넘어가는 과정을 수작업으로 처리해주는 것이 아니라,

자동으로 처리해서 넘어갈 수 있게끔 구성해준다.

 

 

Jenkins의 기본 용어

  • 아이템
    • Jenkins에서 작업하려고 하는 기본적인 단위 
  • 파이프라인
    • 아이템들을 여러개 묶어서 진행하는 일련의 작업
    • CD 작업에 의해서 필요한 파이프라인을 실제로 구현을 하고 통합하는 것을 지원하는 플러그인
  • DSL
    • Domain Specific Language
      • 도메인에서 정의한 특화되어 있는 언어
      • 다른 쪽이랑 관계없이 그 서비스, 그 아이템에서 새롭게 정의해서 만드는 언어
    • Jenkins만의 고유한 문법 체계
    • 파이프라인 스크립트 생성 가능
      • 스크립트의 파일명은 Jenkinsfile 파일명과 2가지의 형태를 가짐
        • 선언형 방식
        • 스크립트 방식
        • 추후에 자세히 설명

 

 

Jenkins 기본 구축

 

Jenkins 구동

docker run -d -p 8080:8080 -p 50000:50000 --name jenkins-server --restart=on-failure jenkins/jenkins

 

 

 

Jenkins 잠김

초기에는 Jenkins가 잠겨있다. 따라서, docker logs <컨테이너ID> 를 사용하여 초기 비밀번호를 확인하자.

 

 

초기 Jenkins 비밀번호 확인

 

로그를 보면 해시값처럼 적혀있는 것이 초기 비밀번호이므로 입력해주면 된다.

 

그 후, 제안된 플러그인은 전부 설치해주자(몇분 소요)

그리고 적절하게 자기 계정을 만들면 된다.

(이때, 중요한점이 우리는 컨테이너는 8080포트로 열었으므로 URL 설정은 전부 8080으로 해주자)

 

새로운 아이템 생성

 

 

빌드 스텝 작성

 

지금 빌드 클릭

 

 

결과

 

정상적으로 빌드가 잘 된것을 확인할 수 있다.

 

 

 

포인트

 

아래와 같이 컨테이너에 직접 접속하면 당연하게도 아무런 파일이 존재하지 않는다.

 

우리는 현재 Java를 빌드하고 패키지화 한것이 아닌 그냥 단순히 스크립트만 작성했으므로 아무것도 생성되지 않는다.

 

 

 

정리

간단하게 Jenkins에 대한 소개를 진행했다. 아직 매우 초기단계이므로 더 구체적인 내용은 다음 포스팅에서 다룰 예정이다.

 

 

참고

이도원 강사님의 Jenkins 강의

'Infra > Jenkins' 카테고리의 다른 글

[Jenkins] 젠킨스 스터디 시작  (0) 2024.06.28