Windows 서버로 진행을 하는 프로젝트를 몇번 진행을 해봤지만 우리 생활에 밀접하게 있는 OS라 친숙하면서도 SSH, FTP, 방화벽 등등 리눅스보다 다루기 어려운 부분들이 많이 있었다. 이 Windows 서버에 개발서버가 올라가고 이에 대한 CI/CD 환경을 구성을 해야 했는데 이때 Jenkins를 통해 배포 및 서버에 설치된 tomcat을 재기동을 시켜야 했다. 윈도우에 설치된 tomcat은 bat 파일을 실행시켜서 동작시킨다. 윈도우상에서 이 파일을 눌러서 실행시키면 cmd 창이 나오면서 톰캣이 기동되는 모습을 확인할 수 있다. 그리고 그 cmd 창은 계속 떠 있어야지 이 창을 종료시키면 tomcat 도 중지된다. 이는 실제 서버를 운영하는 입장에서도 굉장히 거슬리는 점이 아닐수 없다. 하지만 ..
Jenkins에서 master-slave node로 구성하는건 분산 빌드라던지 원격지에서 원격지로의 배포 등 여러가지 용도로 사용될 수 있다. Jenkins를 사용한다면 실제 빌드는 모두 Jenkins가 위치한 서버에서만 가능한데 이런 master-slave node로 구성을 한다면 이런 환경에 대해 조금 더 유연하게 대처할 수 있다. 즉 agent를 빌드나 배포를 할 서버에 심어놓으면 그 서버들은 각각 Jenkins가 설치된것 같은 효과를 누리게 되는 것이다. 이를 어떻게 구성하고 사용하는지 살펴보자. 가장 먼저 해야할일은 jenkins plugin 설치이다. plugin은 SSH Slaves plugin 을 설치하면 된다. 설치를 하고 나면 Jenkins 관리 > 노드 관리 라는 메뉴가 활성화가 될것..
전에 Jenkins 내에서 pipeline script 작성을 하여 Jenkins Pipeline으로 Job 병렬처리 하는것을 해보았다. 말 그대로 Jenkins Job을 구성할때 Pipeline 영역에 DSL을 작성을 하는 것이다. Jenkins Pipeline 으로 Job 병렬처리하기 Jenkins를 사용하다보면 비슷한 성격의 Job들을 병렬로 처리하기를 원하는 경우가 있을수 있다. 이럴 경우는 pipeline 을 사용하여 간단하게 처리할 수 있다. pipeline이란 전용 DSL을 통해 코드로 빌드 � oingdaddy.tistory.com 이번에는 위와 동일한 일을 하지만 약간 다른 방식은 Pipeline script from SCM 방식에 대해서 알아보겠다. SCM은 git이나 svn과 같은 소..
Jenkins를 사용하다보면 비슷한 성격의 Job들을 병렬로 처리하기를 원하는 경우가 있을수 있다. 이럴 경우는 pipeline 을 사용하여 간단하게 처리할 수 있다. pipeline이란 전용 DSL을 통해 코드로 빌드 과정을 나타내는것을 말한다. pipeline의 핵심은 JenkinsFile 이고 이 JenkinsFile을 작성하는 방법은 여러가지가 있지만 가장 간단한 Jenkins Job에서 직접 JenkinsFile을 작성하는 방법에 대해 알아보겠다. Pipeline Job 만들기 new Item > Pipeline 을 통해 Job을 생성한다. Pipeline Job (JenkinsFile) 작성하기 Pipeline Job이라 Pipeline을 사용할 수 있다. Pipeline script를 선택(..
Jenkins를 통해 배포환경을 구성하고 실제 운영을 할 때 빌드 및 배포를 한 버전의 application이 문제가 생겼을 경우 급하게 이전 버전으로 복구를 하고 싶은 경우가 있다. 예전에 nexus를 통해서 이와 비슷한 방식으로 복구를 할수 있었는데 nexus를 이용하지 않는 환경에서 방법에 대해 알아보도록 하겠다. 예전에 소개한 nexus를 사용하는 방법은 다음과 같다. Nexus에 deploy하고 Jenkins에서 deploy 된 목록 가지고 오기 이번에 소개할 내용은 소스를 빌드하여 nexus에 배포를 하고 그 배포된 파일 목록을 Jenkins에서 가져와 원하는 파일로 was에 배포를 하는 것이다. 이게 뭐하는 일인가 싶을수도 있지만 was에 배포한 oingdaddy.tistory.com 모든 ..
Jenkins에서 빌드를 하던지 배치를 돌리던지 할때 오류가 발생을 할 수 있다. 이때 오류에 대해서 즉각 noti를 받고 싶은 경우라면 일반적으로는 Jenkins와 연동이 되는 email noti를 받던지 slack을 통해서 noti를 받을 수 있다. 하지만 이렇게 하지 못하는 상황도 있을수 있다. 폴스타(polestar) 라는 솔루션을 사용해서 error에 대한 noti를 받고 싶다는 요구사항이 있었다. 폴스타는 여러가지 기능이 있지만 특정 경로에 특정 파일이 생성되면 그걸 인지하고 알려주는 기능도 있어서 Jenkins에서 오류가 발생하면 특정 위치에 오류 내용을 담은 로그파일을 생성해 주기로 하였다. 가장 먼저 할일은 Jenkins에서 job을 돌리다가 오류가 난걸 캐치해 내는것이다. Jenkins..
이번에 소개할 내용은 소스를 빌드하여 nexus에 배포를 하고 그 배포된 파일 목록을 Jenkins에서 가져와 원하는 파일로 was에 배포를 하는 것이다. 이게 뭐하는 일인가 싶을수도 있지만 was에 배포한 파일이 잘못되어서 긴급하게 예전 버전으로 복원을 하고 싶을때 아주 유용하게 사용할 수 있다. 일단은 빌드를 할때 nexus에 배포를 하는 부분을 pom.xml에 추가를 해야 한다. pom.xml sample-repository-snapshot Public Repository http://repo.sample.co.kr:9090/repository/maven-releases/ sample-repository Public Repository(snapshot) http://repo.sample.co.kr:..
Spring Batch 를 통해 Batch Job을 만들었으면 이걸 주기적으로 돌려주는 무언가가 필요하다. 배치와 스케쥴러를 혼동하는 사람들이 종종 있는데 이것은 완전히 다른 개념이다. 배치는 실시간으로 처리를 하는것이 아닌 일괄 처리를 뜻하며 보통은 특정 시간에 행해진다. 이 특정 시간을 정의해 주는 것은 스케쥴러의 역할이다. 내가 만든 Batch Job을 어느 스케쥴러를 통해서 동작시킬지 먼저 결정을 해야 한다. 선택을 할수 있는건 다음과 같았다. 상용으로 나온 배치 전문 솔루션 Control-M Jenkins의 Schedule(Build Periodically)를 사용하는 방법 Quartz 를 사용해서 자체 제작하는 방법 배치 어플리케이션이 올라갈 서버(linux)의 crontab 을 사용하는 방법..