[ NHN Cloud ] 파이프라인 배포 문제 해결 - 2 (502 Bad Gateway)

2024. 8. 8. 14:53·🌥️Cloud Study🌥️/TroubleShooting

요약 : 경로 오류

앞선 '파이프라인 배포 문제 해결'에서 성공적으로 빌드를 완료한 뒤, 엔드포인트로 접속을 시도했는데 502에러가 출력되었다.

`nohup.log` 파일을 확인해보니 다음과 같은 내용이 출력되었다.

 

아래 상황 설명과는 조금 다른 이미지지만 참고용

++ 나중에 확인해보니까 Test-Build가 아니라 순서가 거꾸로 되어 있었다(위 이미지 참고...ㅎ)
이후에 Test 추가한다고 하다가 이렇게 된 것 같은데 담엔 파이프라인 순서도 주의해서 볼 것..

이것 때문에 계속 동일 시각에 첫 번째 파이프라인은 실패하고 두 번째 파이프라인은 성공하는 원인였다 ....

 

ubuntu@a-private-01:~$ cat nohup.log
Error: Unable to access jarfile /home/ubuntu//var/lib/jenkins/workspace/build_0808/build/custom-libs/logging-sample-prj-240808_1351-no_db.jar

이 오류 코드는 지정된 경로에 JAR 파일이 존재하지 않거나 경로가 잘못되었음을 의미한다.

대충 훑어봐도 /home/ubuntu/var/ ~ 형식이 아니라 중간에 낀 `/` 두 개가 매우 거슬린다 .. (/home/ubuntu//var/lib/ ~ )

 

def deployApp(targetServerIp, targetServerPort, jarFileName) {
    def deployPath = '/home/ubuntu'
    // def runAppCommand = "nohup java -jar $deployPath/$jarFileName > nohup.log 2>&1 &"
    def runAppCommand = "nohup java -jar ${deployPath}${jarFileName} > nohup.log 2>&1 &"
    
    // 서버에 파일을 SCP로 전송
    sshagent(['KDT_Project3_NHN']) { // NHN Cloud에서 발급한 키 페어의 Jenkins Credential ID
        // 기존 애플리케이션 프로세스 종료
        sh "ssh -o StrictHostKeyChecking=no -p $targetServerPort ubuntu@$targetServerIp 'ps -ef | grep java | grep -v grep | awk \'{print \$2}\' | sudo xargs kill -9 || echo \"No process found\"'"

        // 새로운 JAR 파일 배포 및 애플리케이션 시작
        // sh "scp -o StrictHostKeyChecking=no -P $targetServerPort $jarFileName ubuntu@$targetServerIp:$deployPath/"
        sh "scp -o StrictHostKeyChecking=no -P $targetServerPort $jarFileName ubuntu@$targetServerIp:$deployPath"
        sh "ssh -o StrictHostKeyChecking=no -p $targetServerPort ubuntu@$targetServerIp '$runAppCommand'"
    }
}

deployApp의 sshagent 부분을 수정해주자.

 

Groovy의 GString 문법인 `${ ... }`를 사용하였고, `/`가 명시적으로 지정되어 있던 부분을 수정해주었다.

 

`${ ... }`와 `$`의 차이 예시

def name = "World"
println "Hello, $name!" // 출력: Hello, World!
// 올바르지 않은 사용법으로 오류를 발생시킬 수 임음
// println "Hello, $name123" // 이 경우 $name 변수로 인식되지 않음

`$`의 경우 코드가 짧아질 수 있지만 변수 이름 뒤에 바로 문자열이 오게되면 인식이 어려워질 수 있음

 

+ 

나중에 발견한건데, 사실 가장 큰 원인은 private 인스턴스 상에는 저 jenkins ~ 부분의 경로가 아예 없는데 파이프라인에서 위 경로에 있는 .jar 파일을 실행하라고 잘못 작성한 것이었다.

 

앞에 logging~ 부분은 파일 전송 시에 명시적으로 지정해주고, 함수에서는 .jar파일명의 이름만 반환하도록 설정해주었다.

def getLatestJarFileName() {
    def date = new Date()
    def formattedTime = new SimpleDateFormat("yyMMdd_HHmm").format(date)
    // return "build/custom-libs/logging-sample-prj-${formattedTime}-no_db.jar"
    return "logging-sample-prj-${formattedTime}-no_db.jar"
}

def deployApp(targetServerIp, targetServerPort, jarFileName) {
    def deployPath = '/home/ubuntu/'
    def runAppCommand = "nohup java -jar ${deployPath}${jarFileName} > nohup.log 2>&1 &"
    
    // 서버에 파일을 SCP로 전송
    sshagent(['KDT_Project3_NHN']) { // NHN Cloud에서 발급한 키 페어의 Jenkins Credential ID
        // 기존 애플리케이션 프로세스 종료
        sh "ssh -o StrictHostKeyChecking=no -p $targetServerPort ubuntu@$targetServerIp 'ps -ef | grep java | grep -v grep | awk \'{print \$2}\' | sudo xargs kill -9 || echo \"No process found\"'"

        // 새로운 JAR 파일 배포 및 애플리케이션 시작
        sh "scp -o StrictHostKeyChecking=no -P $targetServerPort ${env.WORKSPACE}/build/custom-libs/${jarFileName} ubuntu@$targetServerIp:${deployPath}"
        sh "ssh -o StrictHostKeyChecking=no -p $targetServerPort ubuntu@$targetServerIp '$runAppCommand'"
    }
}

 

 

'🌥️Cloud Study🌥️ > TroubleShooting' 카테고리의 다른 글

[ Ansible ] DEPRECATION WARNING 해결 방법  (0) 2024.08.22
[ Jenkins ] 파이프라인 배포 : No such file or directory  (0) 2024.08.21
[ Prometheus ] active failed 오류 해결  (0) 2024.08.09
[ NHN Cloud ] 파이프라인 배포 문제 해결  (0) 2024.08.08
오류 : Web server failed to start. Port 8080 was already in use.  (0) 2024.07.24
'🌥️Cloud Study🌥️/TroubleShooting' 카테고리의 다른 글
  • [ Jenkins ] 파이프라인 배포 : No such file or directory
  • [ Prometheus ] active failed 오류 해결
  • [ NHN Cloud ] 파이프라인 배포 문제 해결
  • 오류 : Web server failed to start. Port 8080 was already in use.
L_Chae
L_Chae
🎮😻🤓🖥✨
  • L_Chae
    Cherish
    L_Chae
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 🌥️Cloud Study🌥️
        • AWS
        • NHN
        • KT
        • Microsoft (Azure 900)
        • TroubleShooting
        • IaC
        • Etc
      • STUDY
        • English
        • Japanese
        • 개인정보보호 관련
      • 초등학교 AI 교육 진행
        • 2024학년도 1학년-2학년
        • 2025학년도 4학년
      • 2024 KDT 📕
        • Lecture
        • Study 📗
        • Study-JAVA
        • Project
        • etc
      • INTERLUDE ✦
        • 2022 SYSTEM STUDY
        • 2022 Winter Study
        • 2023 AutoMobility STUDY
        • 2023 Summer Study (CPPG)
        • 2023 Reversing STUDY
        • etc
      • Private🔒
        • MacBook 💻
        • Screenshot 🩷
        • Photo 🖼️
        • FFXIV - Backup 🎮
        • Tistory
      • PBL 📗
        • 논문 스터디
        • Backup
      • Project 🖤
        • 2022-2) 개인정보보호 소학회
        • 2022-2) winter GURU2 - iOS
        • 2023-1) PBL 3
        • 2023-2) PBL 4
        • 2024-1) SW-AI교육 실습 일지
      • CTF 🚩
        • 2022
        • 2023
      • News scrap 📰
        • 2022
        • 2023
      • 2022 공부 로그 🐯
      • 2023 공부 로그🐰
  • 블로그 메뉴

    • 글쓰기
    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    ansible galaxy
    멱등성
    content collection
    N1
    deprecation warning
    JLPT
    jlpt n1 도전기
    ansible
    JLPT N1
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
L_Chae
[ NHN Cloud ] 파이프라인 배포 문제 해결 - 2 (502 Bad Gateway)
상단으로

티스토리툴바