jenkins

jenkins - pipe line 사용하기 기본(1)

nerd mix 2020. 3. 30. 22:24

소스코드를 실제 서버에 배포를 하는 작업은

비즈니스 로직을 구현하는 일 만큼이나 복잡한 작업일 때가 있습니다. 

여러가지 job 순차적으로 또는 조건에 따라 다른 작업을 수행할 수 도 있습니다. 

 

저도 이전에 작성한 글에서와 같이 간단한 api 서버를 각각 배포하는 일만 하다가 

최근 블록체인의 여러개 노드를 jenkins로 구성하고 업데이트하는 작업을 한 적이 있습니다. 

각각의 job은 큰 작업이 아니었지만 원격의 6개 서버에 각각 순서에 맞게

docker swarm 세팅을 하고 그 작업이 끝난 후에 master 노드에서 각각의 서버에 

docker를 up 하는 꽤나 번거로운 작업이었습니다. 

 

결과적으로 코드는 단순했지만 이 또한 다른 작업들과 마찬가지로 

"모르면 어렵지만 알면 쉬운 작업" 이었기에 또 한 번 기록을 하기로 하였습니다. 

 

이번 포스팅에서는 간단하게 jenkins가 기본적으로 제공하는 pipeline을 사용해 보고 

실제 배포를 한다기 보다는 각각의 job 안에서 shell script를 실행하여 log를 남겨보는 

작업을 해볼 것입니다. 

 

아직 젠킨스를 세팅하지 않았다면 지난 포스팅을 참고하여 설치하시기 바랍니다. 

jenkins - 배포 자동화 하기 - jenkins 설치(1)

 

젠킨스 메인 화면에 접속하여 "새로운 Item"을 클릭하여 페이지를 이동합니다. 

 

 

젠킨스의 item을 만드는 페이지에서 두가지를 보시면 됩니다. 

1. 이름을 정하고

2. pipeline을 클릭합니다. 

완료하고 "ok" 버튼을 클릭하여 다음 페이지로 이동합니다. 

 

 

pipe line 페이지에서 스크롤을 최 하단까지 내려서 보면 위와같은 화면이 나옵니다. 

위 화면에서 Pipeline이라는 섹션에 script를 작성하면 됩니다. 

 

jenkins에서는 친절하게 샘플 코드를 오른쪽의 선택상자에서 선택하여 볼 수 있게 해줍니다. 

여기서 hello world를 선택합니다. 

 

 

위와같은 코드가 샘플로 제공됩니다. 

샘플로 제공되는 코드는 가장 기본 코드입니다. 

jenkins의 코드는 Declarative Pipeline 코드로 최근에 jenkins에 추가된 문법입니다. 

모든 Declarative 코드는 "pipeline {}" 키워드 안에 선언되어야 합니다. 

1. pipeline :

Declarative 코드에서 가장 큰 단위입니다.

모든 Declarative 코드는 pipeline 안에 선언되어야 합니다. 

2. agent : 

any, none, label, node, docker, dockerfile, kubernetes를 파라미터로 포함할 수 있습니다.

3. stage :

pipeline을 생성했을 때 각각의 job의 단위가 됩니다. 

pipeline을 생성한 후 만들어지는 화면에서 한개의 블럭이 됩니다. 

stage는 여러개를 생성할 수 있는데 "stages"안에 여러개의 "stage"를 정의하게 됩니다. 

4. steps : 

한개의 stage 안에 여러개의 step을 정의하여 나눌 수 있습니다. 

5. echo : 

linux에서와 같이 문자열을 출력하는 키워드입니다.

 

간단하게 샘플만 가지고 생성해보겠습니다. 

 

 

최초 생성하면 위와 같이 화면이 만들어집니다. 

좌측에 "Build Now" 버튼을 클릭하여 build를 진행합니다. 

 

 

위 화면은 build가 완료된 후 화면입니다. 

좌측에 해당 pipeline의 빌드 number와 함께 빌드의 성공 여부가 표시됩니다. 

"빨간공: 실패, 노란공: 불완전, 파란공: 성공"입니다. 

 

중앙에 보면 "pipeline > stages > stage > step"에서 stage 단위로 블록이 생성됩니다. 

stage의 파라미터로 넣어주었던 "Hello"는 stage의 이름이 됩니다. 

 

이번 pipeline에서의 작업은 "echo 'Hello World'"입니다. 

수행한 job의 로그는 왼쪽에 build number를 클릭해서 들어가면 확인할 수 있습니다. 

build number를 클릭합니다. 

 

 

위와같은 빌드 화면에서 "console output" 버튼을 클릭합니다. 

 

 

로그를 확인하면 위와같이 "Hello World"가 찍힌것을 확인할 수 있습니다. 

 

다음 포스팅에서는 pipeline의 조금더 다양한 syntex를 사용하여 

여러가지 작업을 해보겠습니다.