![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/d4dClY/btqQNqhSfF2/gqEYKRnfFm3nQiU9QuvL3k/img.png)
Jenkins의 다양한 기능중 이번에는 Slack과 연동해서 배포 실패 시 또는 배치 수행중 문제가 생겼을 경우 알림을 보내주는 기능에 대해 알아보겠다. 내가 직접 Jenkins에서 빌드 버튼을 눌러서 실패를 하는 경우에는 바로 인지가 가능하고 조치를 하겠지만 스케쥴링 되어있는 Job을 수행중에 문제가 생긴 경우에는 이런 알림 기능이 필요하다. 가장 보편적으로 알려진 Jenkins의 알림은 Email이 있고 요즘에는 Slack을 통한 알림도 많이 사용하는 추세다. Jenkins와 Slack을 연동하려면 물론 두곳 모두에서 설정이 필요하며 설정이 어렵지는 않다. 하나씩 살펴보자. ◈ Slack 에서의 설정 일단 Slack에서는 어떤 설정이 필요한지 알아보자. ▶ 채널 생성 Jenkins Job 수행결과를 ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/dpp4Jd/btqNiVygtWz/RePMKV9jlGzrdLqF4NdBHk/img.png)
프로젝트에서는 보통 서버에 들어가서 작업을 할수 있는 사람과 서버에 대한 접근권한이 없는 개발자들이 있다. 개발자들이 개발서버에 어플리케이션을 올렸을때 로그를 확인하고 싶어하는 경우가 있다. 그럴때 매번 서버에 접근가능한 사람이 들어가서 직접 확인시켜주는것보다는 개발자가 서버에 들어가지 않고 Jenkins를 통해서 로그를 볼수 있게 해주면 된다. 방법은 다음과 같다. 설정방법 Jenkins > Plugin Manager Build Timeout 이라는 plugin을 설치한다. 이건 Optional 한 부분이지만 그래도 미연의 사고를 방지하고자 일단은 설치! 설치가 다 되었으면 새로운 Job을 하나 만든다. FreeStyle Job으로 생성한다. 밑으로 내리다 보면 plugin이 설치가 잘 되었으면 위와 ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/wvRSV/btqLq2Nqtkj/NeYWcwHZi4F2kzpbJdxigk/img.png)
Parameterized Trigger를 사용하면 다양한 Job간의 연계작업을 할 수 있다. 전에 살펴본대로 후속 job으로 parameter 값도 넘길 수 있고 후속 job으로 여러가지 job 동시에 실행시키는것도 가능하다. Parameterized Trigger를 사용하면 아주 간단하게 실행시킬 수 있다. bjob이 실패했을때 다음 job을 cjob과 djob이 동시 실행이 되도록 하고 싶다. bjob의 하단에 빌드 후 조치 부분에 Trigger parameterized build on other projects 를 선택한다. 위와 같이 빌드가 실패(Failed)를 했을때 어떤 프로젝트(cjob, djob)를 수행할것인지 명시해주면 된다. 여러가지 job을 동시에 실행시키고 싶은 경우에는 위처럼 , ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/MN0BR/btqLveM0QOn/ai17gEoRkyWNIzk0XNW6Vk/img.png)
Parameterized Trigger 를 사용하면 후속 작업을 지정 및 수행할 수 있을뿐만이 아니고 현재 job의 param값, 넘기고 싶은 변수값도 넘겨줄 수 있다. 다음은 bjob에서 cjob으로 param값을 넘기는 예제이다. Parameterized Trigger Plugin 설치 방법은 여기를 참고하도록 한다. 일단은 bjob과 cjob에 각각 위와 같이 String Parameter로 값을 넣어준다. 하나씩 해도 되지만 여러개의 param을 보낸다고 가정하고 두개씩 보내는걸로 테스트 환경을 꾸렸다. cjob 설정 및 수행결과 cjob만 단독으로 수행을 한 결과이다. 당연히 위에서 param을 설정한대로 testparam1, testparam2에 대한 출력을 해준다. 설정한대로 cjob par..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/cpJeKA/btqLyL3JJnM/0WFD6Gh7Btg0r58tdkIpUK/img.png)
Jenkins를 사용하다가 실패한 Job에 대해서는 어떻게 처리를 하는게 가장 좋을까 고민을 하고 있다. 전에 다뤘던 pipeline을 사용해서 실패한 job에 대한 처리를 하는 방법도 있지만 이건 pipeline job을 한셋 더 만들어야 하는 불편함이 있었다. (물론 안만들고도 script에 다 때려 박는 방법도 있지만..) 그러던 중 Parameterized Trigger plugin를 사용하여 아주 간단하게 고민을 해결할 수 있었다. 사용법에 대해서 알아보자. Parameterized Trigger plugin 설치 Jenkins 관리 > 플러그인 관리 > Parameterized Trigger 검색하여 Parameterized Trigger plugin 설치를한다. 설치가 되었다면 사용할 수 있..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/cKxmk9/btqLq4DuVnF/hSxWrobsNUCg0mF5hZtY7k/img.png)
Pipeline으로 Job을 실행하고 실행결과에 따라 분기처리를 하고 싶은 경우가 생겼다. 예를 들면 a라는 job이 실행이 되었고 이 job이 성공을 하면 b라는 job을 수행하고 실패를 하면 c라는 job을 수행하도록 하고 싶다. 이렇게 구성을 하는건 여러가지 방법이 존재하지만 내가 좋아하는 if else 구문을 사용해서 구성해보겠다. 대략 이런 그림이다. pipeline project를 하나 만들어서 이를 구성해보자. Pipeline project 생성 새로운 Item 을 눌러서 Pipeline을 지원하는 프로젝트를 생성한다. Pipeline job을 하나 생성하면 위와 같이 groovy 문법을 사용하여 Pipeline Script를 작성할 수 있다. Pipeline Script 작성 node{ s..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/sK2Th/btqLq4bH2ei/dMt6ZaaoZneSjpLkhahN1K/img.png)
엄청나게 편리한 Jenkins이지만 불편한점도 있다. 예를 들자면 Jenkins를 이용해 batch를 처리할때 분명 batch job은 내가 원하는대로 수행되지 않고 Error가 발생했는데 Jenkins job은 이를 Success 처리를 하는 경우이다. 오류가 발생을 하면 slack이든 email이든 noti를 보내야 하는데 오류가 발생하지 않았다고 판단하여 아무런 후속조치를 하지 않는다. 이럴 경우에 Log Parser 라는 Jenkins plugin을 사용해서 해결할 수 있다. 설치부터 어떻게 사용하는지 알아보자. Jenkins Log Parser 설치 Jenkins 관리 > 플러그인 관리 > 설치 가능 > Log Parser 선택 > 재시작 없이 설치하기 Log Parser Rule 파일 생성 (..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/r4XoD/btqIasVTNkT/lTuSJVby5DTVDoP1w5TtUK/img.png)
우리가 아는 jenkins의 익숙한 모습이다. 물론 과거 hudson부터 써온지라 이정도 디자인만 되어도 참 훌륭하다고 생각한다. 하지만 뭔가 개발은 하기 싫고 이런걸 꾸미고 싶은 날도 있다. 어제는 티스토리 코드블럭 꾸미는데 오랫만에 css를 다루니 또 참 재미있었다.. 오늘도 개발하기 싫어서(사실은 맨날...) jenkins에 새로운 테마를 적용해보려한다. 간단하다. Jenkins 관리 > Plugin Manager > 설치 가능 tab > Simple Theme 를 검색 후 설치. 혹시나 폐쇄망이라 설치가 안된다면 다음 글을 참고하자. Jenkins 폐쇄망에서 plugin 설치하기 Jenkins가 설치되어 있는 서버가 외부와의 통신이 되는 환경이면 좋겠지만 그렇지 않은 환경이 여지껏 더 많았다. 따..