젠킨스 ssh를 사용해서 .Net 단일파일 배포하기

by 최진용

기존 젠킨스 Transfer Set - Exec command


pkill -9 -efx 'dotnet Server.dll'

nohup dotnet Server.dll &> nohup.out &


>>> 변경 후

pkill -9 -efx './Server'

nohup ./Server &> nohup.out &


- 원인 파악

C# 단일 파일 빌드를 적용하기 위해서 기존 프로세스 종료 및 서버 기동 커맨드를 위한 command 작성

SSH Publishers 탭에서 Verbose output in console 를 활성화 시켜서 어느 부분에 문제가 생기는지 확인하기로 했습니다.


- 문제 상황

기존에 단일 파일 빌드가 아니었던 이전 버전에서는 Server.dll 파일이 실행되는 상태에서 Server.dll이 복사되어도 문제 없이 진행이 되었다.

하지만 단일 파일로 빌드 이후 버전에서는 ./Server 파일이 실행되는 상태에서 Server를 복사하면 작업이 중지되는 이슈가 생김


- 해결

실행 파일 복사하는 로그에서 중단이 발생하고 빌드 실패처리가 되는 것을 파악함

복사 전에 실행파일을 미리 종료하고 복사하면 해결 될거라고 상정하고 별도의 Transfer Set를 생성해서 Exec command로 프로세스 종료만 실행


- 새로 추가한 Exec command 예제


function checkCode(){

if [ $1 -eq 0 ]

then

echo "one or more processes matched the criteria"

elif [ $1 -eq 1 ]

then

echo "no processes matched"

elif [ $1 -eq 2 ]

then

echo "syntax error in the command line"

elif [ $1 -eq 3 ]

then

echo "fatal error"

else

echo Return Code : $1

echo UNEXPECTED

fi

}


pkill -9 -efx './Server'

checkCode $?


- 기존 Exec command 예제

nohup ./Server &> nohup.out &


성공적으로 ssh로 배포 성공 (매 실행시 기존 프로세스 종료 후에 새로 실행합니다.)

keyword
작가의 이전글CODE 코드 책읽기