2023. 2. 16. 22:14ㆍtrouble shoot
2017년도 빌드 업무 시스템 유지보수 업무중 경험한 빌드 장애
빌드 환경
- 윈도우7 환경에서 컴파일(컴파일러 제공사에서 윈도우용 컴파일러만 지원함)
- Jenkins 서버 설치하여 PR, MICOM 이미지 빌드 작업 수시로 빌드 발생함
- 간헐적으로 workspace 하위 임시 폴더 삭제하지 못해 다음 빌드 진행 못하는 문제 발생
- 문제가 발생한 빌드가 아닌 다음 빌드 시작시 문제 인식함(10번 빌드에서 문제 생겨도 컴파일은 정상적으로 되고 이미지도 잘 생성되어 문제 인식을 하지 못함)
Jenkins 빌드중 가장 짜증나는 빌드 장애(퇴근 못하거나 퇴근하다 다시 복귀하게 만드는 에러)가
workspace 삭제가 안되어 발생한다. (workspace가 삭제되어야 다음 빌드를 할수 있으니...)
에러 유형은 크게 2가지로 이고 대부분의 경우 폴더가 잠겨서 발생한다
- 파일이 잠김
- 폴더가 프로세스에 의해 사용중
file locked can not delete
file used by another process
대부분의 경우 컴파일러가 임시로 생성한 폴더나 파일을 사용하는 것으로 인식해서 발생하는 문제다.
(심지어 컴파일러는 이미 종료되었는데도 그렇게 인식하고 있다.!!!)
제일먼저 시도할수 있는 방법은 컴파일러 프로세스 강제 종료인데,
프로세스를 강제종료한 후에도 해당 폴더, 파일은 여전히 같은 에러 메세지가 나오면서 삭제가 되지 않았다.
로컬 환경이면 쉽게 재부팅후 삭제하면 되겠지만, 빌드 서버라 그게 어려웠다.(진행중인 다른 빌드도 있으니..)
이런 장애를 전에는 어떻게 조치했냐고 물어보니..
일과시간중에는 "다른 빌드 끝날때까지 기다렸다가 다시 재부팅해서 넘어갔어요..."
일과시간이후에는 "일단 워크스페이스 이름 임시로 변경후 다시 바꿔야죠."
1,4는 다른 빌드 없는 경우에만 실행
- 임시로 workspace 작업 폴더명을 변경한다.
- 다른 빌드가 없는 시간에 빌드 서버 재부팅
- 삭제안되었던 workspace 폴더 삭제
- 임시로 변경했던 workspace 폴더명 다시 원복
문제는 넘어가지만 그래도 빌드 서버를 재부팅하는게 좋은 방법이 아니라고 생각했다.
구글링 결과 Unlocker 라는 프로그램을 찾았고 그 다음부터는 빌드 서버 재부팅해서 임시 조치하는 경우는 많이 줄었다.
하지만, Unlocker 로 해도 삭제가 안되는 경우가 있어서 그럴때는 할 수 없이 서버 재부팅을 해야 했다.
오래전 일이라 기억이 가물가물....
이제는 Jenkins 에서도 Workspace 정리하는 플러그인이 나와서 이런 고생은 안해도 되겠지...
https://plugins.jenkins.io/ws-cleanup/
Workspace Cleanup
This plugin deletes the project workspace when invoked.
plugins.jenkins.io
'trouble shoot' 카테고리의 다른 글
Runesmith.top 가짜 광고 제거 방법 (2) | 2023.05.03 |
---|---|
[git] 여러 계정을 한 컴퓨터에서 사용시 계정 혼선 발생시 해결 (1) | 2023.02.17 |
[git] 작업전에는 git pull 하고 최신 상태에서 작업해야.. (1) | 2023.02.16 |
[Github] default branch name change (0) | 2023.02.15 |
SQLAlchemy 2 __all__ 메소드 미지원 (1) | 2023.02.14 |