Jenkins Pipeline

Violet_Evgadn·2023년 4월 24일
0

CI&CD 자동화

목록 보기
2/28

  • 출처 : Jenkins를 이용한 CI/CD Pipeline 구축(인프런)

Jenkins를 활용한 CI/CD 과정

Dev 과정

개발팀은 고객의 요구사항을 만족시키기 위한 Service에 대한 개발을 수행할 것이다.

그리고 서비스 개발이 완료될 경우 VCS, 버전 관리 시스템에 개발한 코드를 Push(Check in/commit)할 것이다.

코드가 특정 Branch에 Push될 경우 이를 Trigger로 Build 과정과 Unit Test과정을 수행한다. 만약 Build가 성공적으로 완료되었으며 모든 Unit Test를 통과했다면 다음 단계로 넘어간다.

다음 단계는 Integration Test인데, 이전에 말한 인수 테스트이다.

이전에 배웠듯 인수 테스트 과정에서는 모든 단위 테스트를 한번에 수행해보고 성능 등을 확인해보며 고객의 요구사항을 모두 만족시키는지 확인해봄으로써 고객에게 실제 Production을 전달하기 전 최종 테스트를 수행하는 것이다.

UAT(User Acceptance Tests)

인수 테스트가 성공적으로 완료되었다면 UAT 과정을 거친다.

UAT는 고객이 수행하는 테스트라는 뜻으로, 말 그대로 인수 테스트까지 종료한 서비스를 고객에게 제공하여 고객이 직접 서비스 동작을 확인할 수 있는 과정을 의미한다.

만약 이 과정에서 고객측에서 문제점을 발견한다면 다시 개발팀에게 문제점을 수정해달라고 요청할 것이고 개발팀은 다시 CI/CD 과정을 수행해야 한다.

Release

실제 Proudction을 운영 서버에 올리는 것이다.

이전 UAT에서 고객이라고 했지만 여기서 말하는 고객은 서비스 개발을 요청한 고객을 의미한다.

그리고 개발을 요청한 고객이 만족할만한 서비스가 만들어졌을 경우 개발한 서비스를 실제로 활용할 사람들에게 만든 서비스를 제공해야 할 것이다.

따라서 Release 과정은 실제 유저가 서비스를 활용할 수 있도록 운영 서버에 개발한 코드를 올려 개선된 서비스를 제공하는 과정을 의미한다.

당연하게도 위에서 설명한 모든 과정은 자동화되어야 한다.


Jenkins Pipeline

Jenkins에서는 Item이라는 작업 단위가 존재한다.

Item이란 Jenkins를 통해 빌드할 작업을 의미하는데, 쉽게 말하자면 위 그림에서 나온 화살표(Commit, Trigger, Approval 등) 과정 각각을 Item이라고 생각할 수 있을 것이다.

나중에 Jenkins에 대해 실제로 활용해보면 Item이라는 개념 이해가 쉬울 것이기 때문에 지금은 Jenkins에서 수행하는 작업의 최소 단위 정도로만 알고 있자.

Jenkins Pipeline이란 Item 여러 개를 묶어 CD 작업에서 수행되는 연속적인 과정들을 한번에 관리할 수 있게 해주는 플러그인이다.

이 때 DSL(Domain-Specific Language)을 활용하여 Piepline Script를 작성할 수 있는데 이를 통해 코드를 작성하는 것과 유사한 방식으로 Pipeline 기능을 이용할 수 있게 되는 것이다.

이렇게 생성한 Pipeline Script를 Jenkinsfile이라고 하는데 Jenkinsfile을 작성하는 방식은 Declarative(선언형 방식), Scripted 방식이 존재한다.

Jenkinsfile의 경우 나중에 자세히 다룰 것이기에 일단은 이정도로만 이해하고 넘어가자.

profile
혹시 틀린 내용이 있다면 언제든 말씀해주세요!

0개의 댓글