Windows 환경에서 발생하는 Jenkins 에러를 Linux 환경으로 전환하여 해결

윤준혁·2024년 7월 21일

문제 상황

  • Windows 환경에서 Jenkins를 실행할 때, 여러 가지 에러로 인해 CI/CD 파이프라인이 중단되는 문제가 발생
  • Jenkins 빌드가 불안정하게 실행되거나 특정 작업이 실패하는 상황이 자주 발생

(개인정보때문에 자세한 로그는 비공개 하겠습니다..)

원인 분석

  1. Windows와 Linux 간의 파일 경로 차이로 인한 스크립트 실행시 문제가 발생

    Windows(로컬 환경) <-> Linux(배포 환경)

  2. Bash 스크립트와 같은 Linux 전용 스크립트가 Windows 환경에서 제대로 작동하지 않음

    명령어의 차이가 너무 큼 - ex) Windows : bat = Linux : ssh

초기 대응 방법

  • 처음엔 Windows와 Linux 간의 파일 경로 차이나 명령어의 차이를 분명히 인지하고, 계속 빌드를 시도하며 막히는 부분마다 수정( ex) '\' 대신 '/'를 사용)
  • Bash 스크립트를 PowerShell 스크립트로 변환( ex) 'ssh' 대신 'bat' 사용)

지속적인 문제 발생

해결 방법

  • Windows 환경 자체가 문제가 되는 상황이니 Linux환경에서 빌드해보면 어떨까?
    그래서 찾은게 WSL(Windows Subsystem for Linux)이다

설치 명령어 : wsl --install

  • 위의 명령어는 Microsoft의 공식 문서에서 확인할 수 있다(https://learn.microsoft.com/ko-kr/windows/wsl/install)

  • 위의 명령어를 실행하고, 재부팅 후 초기 설정(사용자 이름, 비밀번호)를 완료하면 사용 가능

  • 현재 젠킨스를 빌드하기 위해서 필요한 프로그램(Jenkins, Docker, etc..)들을 설치한 후 실행

  • 성공하는 것을 확인한 후 윈도우에 깔려있던 프로그램들은 다 삭제했다

결과

  • Windows는 GUI 기반 운영 체제이므로 Jenkins의 설치와 설치 과정이 직관적이고, 사용자 친화적이고, .NET, ASP.NET 등 Windows 전용 개발 도구와 애플리케이션을 빌드하고 테스트할 때 적합
  • Linux는 서버 운영 체제로서 리소스 관리가 효율적이라 Jenkins는 Linux 환경에서 더 나은 성능, 메모리와 CPU 사용량이 높은 작업도 원활하다. Bash, cron 등 자동화 도구를 기본적으로 지원하며, 안정성과 신뢰성이 높음

사용자의 요구 사항과 환경에 맞게 사용하면 될 듯. 장단점을 잘 비교하여 최적의 환경을 선택하는 것이 중요할 듯하다

0개의 댓글