Jenkins 느린 빌드 시간 문제

윤준혁·2024년 7월 23일

문제 상황

  • Jenkins 빌드 시 시간이 너무 오래걸림

  • 가장 최근의 빌드인데 'Scheduled to completion 20 min' 20분이나 걸림
  • 편하자고 사용하는 Jenkins인데 오히려 불편하다는 생각이 듦

원인 분석

  • 일단 어떤 부분에서 가장 시간이 오래걸리는지 확인해보자

  • Jenkins의 Plugins에 들어가면 여러가지 플러그인을 설치할 수 있는데 그 중 'Pipeline: Stage View Plugin'을 설치했다
  • Pipeline: Stage View Plugin = 파이프라인의 각 단계를 시각적으로 보여주는 플러그인

  • 설치가 완료되면 각 stage 별로 걸린 시간이 나오면서 어떤 부분에서 오랜 시간을 사용하는지 알 수 있음

해결 방법

  1. 병렬 처리 : 파이프라인은 순차적으로 실행되는데, 서로 의존성을 갖지 않는 stage는 병렬로 실행해 시간을 감소

  • 놀랍게도 시간이 늘어남
  1. Docker 이미지 캐싱 : 이미지 빌드 시 캐시를 활용, 변경이 없는 레이어는 캐시를 사용할 수 있도록 최적화

  • 놀랍게도 시간이 늘어남
  1. rsync 사용 : Deploy to AWS에서 현재는 scp 명령어로 동작하고 있는데 rsync를 사용해 변경된 파일만 전송하여 시간을 절약

  • 전번에 비해 반정도 줄어들었다
  1. 만약 1, 2가 원래 빌드보다 오래걸리게 하는거라면? (rsync만 사용)

  • 시간은 비슷하다

결과

  • 문제를 확인하고, 알맞게 수정하면 올바른 방향으로 수정 가능
  • 코드 수정 후에 빌드 시간을 계속 모니터링하고, 문제가 없다면 빌드 시간이 짧은게 제일 좋을 듯

0개의 댓글