ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 누구나 따라할 수 있는 CI/CD구축(2)
    클라우드컴퓨팅 2023. 8. 10. 21:28

    CI/CD구축에서 만나본 에러들을 다뤄볼 것이다.

    필자와 같은 에러가 발생 했다면 좋은 참고가 되길 바란다.

     

     

    이거... Vervose output 무조건 켜두자.

    이거 없으면 output이 잘 안찍혀서 디버깅 하기 무지무지 힘들다. 

    이 기능은...신이야.... 아이 '신'나...

     

     

     

    1. SSH 연결이 안되는 문제

     

    콘솔로그를 보면 SSH 연결시에 바로 종료되는 것을 볼 수 있다.

    Server의 SSH 키 입력이 되지 않은 것이다.   

     

    https://winwin-k9.tistory.com/253

     

    누구나 따라할 수 있는 CI/CD구축

    바빴던 있정이 있던지라 정리하는데 시간이 오래 걸렸다. 여러 프로젝트를 했을때 여러모로 먹었고, 구축했던 아키텍쳐를 정리하려 한다. 백엔드 API서버를 프론트엔드에게 항상 전달하기 위해

    winwin-k9.tistory.com

     

     

    참고해서 Server의 Key설정을 제대로 하고 테스트를 완료한다면 해당 문제는 없을 것이다.

     

     

     

     

     

    2. 디렉토리를 못찾는 문제

    SSH 서버 설정시 remote 디렉토리를 다음과 같이 설정했었다.

     

     

    이후 프로젝트를 생성 후, SSH 서버로 파일을 보내는 과정을 설정하는 부분에서

     

     

    Remote 디렉토리를 한번 더 설정할 수 있다.

    여기서 문제는 SSH에 연결하고 나서 이미 설정한 Remote 디렉토리에 위치하고 있다는 것이다.

    따라서 여기서 설정하는 것은 /home/win9/app/Nutt에서 더 들어가서 더 진입할 디렉토리를 설정하는 것이다.

     

    필자는  /home/win9/app/Nutt을 또 한번 기재했기 때문에  Nutt안에 /home/win9/app/Nutt를 또 들어가려고 해서

    원하던 디렉토리를 찾을 수 없다는 에러가 났다.

    혹여 잘 설정했는데도 불구하고 에러가 난다면, 디렉토리의 권한설정을 변경해보는 것을 권장한다.

     

     

     

    3. 쉘 스크립트를 실행하지 못함

     

    리모트 디렉토리에 위치한 쉘스크립트를 실행하지 못하였다.

    따라서 쉘스크립트의 소유자를 ssh연결시의 사용자로 변경하고, 쉘 스크립트의 절대경로를 명시하였다.

     

     

     

    Properties의 설정

    위 3가지 에러를 해결하였다.

    이제 spring의 properties 파일을 설정하는 방법을 알아보자.

     

    properties 파일은 깃허브에 올리면 안된다.

    개인정보와 DB정보등등 서비스를 운용하는데 외부로 발혀지면 안되는 정보들이 기술되어 있기 때문이다.

    따라서 보통 ignore처리를 할 것이다.

     

    그러나 젠킨스는 해당 repository를 깃허브에서 가져온다.

    그럼 배포파일은 properties가 없이 서버로 전달되는 것이다.

    따라서 원격서버에서 properties를 작성하고 properties를 적용시키고 실행시켜야 한다.

     

     

     

     

    필자가 새로 작성한 properties파일들이다.

     

     

    위 내용은 application.properties인데 include로 swagger와 S3파일도 같이 설정시켜주었다.

    이렇게 되면 swagger.propeties와 S3.properties도 같이 동시에 적용이 된다.

     

     

    #!/bin/bash
    
    repository=/home/win9/app
    cd $repository/Nutt
    
    jarFile='Nutt-0.0.1-SNAPSHOT'
    
    fuser -k 8080/tcp # 8080포트 종료
    
    if [ $? -eq 0 ]; then
        echo "8080 port successfully terminated"
    else
        echo "8080 port not terminated"
    fi
    
    echo Nutt-Server execution
    
    nohup java -jar -Dspring.config.location=application.properties $jarFile.jar 2>/dev/null 2>&1 &

     

    본인이 적용한 deploy.sh의 내용이다.

    쉘스크립트 문법은 찾아보면 금방 습득이 가능하니 찾아보기 바란다.

     

    nohup내용을 보면 Dspring.config.locaiton 옵션으로 적용시킬 propeties의 경로를 명시해주면 해당 파일로 실행이 가능하다.

    쉘 스크립트와 설정파일의 위치가 같으므로 파일 이름만 명시해주었다.

     

     

    위 설정대로 하면 무사히 무중단 배포가 가능해진다.

    main브랜치가 변경이되면 이를 감지하여  웹훅으로 빌드, 테스트... 배포 등등의 과정을 한번에 자동으로 해결해 주는 것을 볼 수 있다.

    728x90

    댓글

Designed by Tistory.