brunch

You can make anything
by writing

C.S.Lewis

by 최진용 Sep 19. 2022

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

기존 젠킨스 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로 배포 성공 (매 실행시 기존 프로세스 종료 후에 새로 실행합니다.)

작가의 이전글 CODE 코드 책읽기
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari