Jenkins의 잦은 shutdown

Jenkins는 뭐니 뭐니해도 자동화를 할 때 graphic user interface를 최소의 노동력으로 굴릴 수 있다는 장점이 있다. cron의 힘을 빌지 않아도 되고, 모든 자동화 작업을 깔끔하게 정리할 수 있다는 장점도 아울러.

더구나 매우 안정적이라 잘 죽지도 않고 robust하다는 장점, 또 작업을 수많은 machine으로 분산할 수 있다는 장점 등등 헤아릴 수 없이 많은 장점을 가지고 있다.

문제는 plugin이 매우 많고 그 기능에 혹해서 자칫 거지같은 것을 사용할 수 있다는 것이다.

thin-backup이라는 plugin이 거기에 해당한다. 이것을 설치하면 자주 백업을 해서 만약 machine이 불의 사태로 날아가더라도 되살릴 수 있겠지 싶은데, 고작해야 설정상태 정도 백업될 뿐이지 결국 복구하려면 아무 백업이 없는 상태에서 새로 셋업하는 것과 차이가 없다. 결국, 모든 게 다 날아가더라도 곧바로 복원이 가능한 수준으로 만드려면 jenkins의 workspace를 cloning해 온 것들 만 빼고 통째로 압축해서 다른 곳에 보관하는 것이 맞다. 이것은 cron의 힘을 빌면 자동으로 알아서 해주니까 멍청한 플러그인에 의존할 필요가 없다.

왜 자꾸 멍청하다고 하냐면 thin-backup이 설치되면 알 수 없는 주기로 jenkins가 shutdown하겠다며 새로운 작업을 실행하지 않는다. 만일 거의 모든 pipeline이 돌아가며 상시 운용중인 상태라면 혹은 여러 날에 걸쳐 돌아가는 pipeline이라면 shutdown은 일어나지 않은 채로 새로운 작업도 받지 않고 거의 좀비상태에 놓이게 된다. 일부러 재가동 시켜놓으면 또 얼마 되지 않아 같은 사태가 벌어진다.

본래의 Jenkins는 주기적인 shutdown이나 restart를 하지 않는다. 이 ㅂㅅ같은 plugin이 설치 되어있으면 backup은 backup대로 제대로 하지 못하면서 멀쩡한 작업들만 방해를 한다고 보면 된다.