github Actions process exited with status 137 from signal kill 에러 해결방법

2025. 9. 19. 15:14·서버&인프라/Cloud

 

 

 

github Actions를 사용하여 CI/CD 파이프라인을 구축하던 중 에러가 발생하였다.

 

 

 

 

오류 상황

process exited with status 137 from signal kill

  • SIGKILL 시그널로 프로세스가 강제 종료됨
  • 보통 이런 경우는 메모리 부족(OOM, Out Of Memory) 또는 GitHub Actions에서 SSH로 실행한 프로세스가 바로 종료될 때 발생

 

구글링을 해보니 메모리 부족이 가장 흔한 경우라 한다.

 

 

메모리 확인

# SSH에서
free -h

 

 

 

 

 

그래서 급하게 EC2의 서버 용량을 t3.micro(1GB)에서 c3.small(2GB)로 늘렸으나 여전히 같음

 

SSH로 접속한 EC2에서 직접 실행했을 때 정상 실행되었음 → 이 경우는 메모리 부족이 문제가 아님

 

 


 

 

오류 점검

 

나와 같은 오류인지 점검해보자.

 

  • github Actions 실행이 끝까지 모두 완료 되는가? ---  Yes 
  • github Actions 실행 모두 완료 후 1초만에 프로세스가 종료되는가? ---  Yes 
  • SSH로 직접 실행할 경우 정상 실행되는가? ---  Yes 

위 3가지가 모두 해당된다면 나와 같은 상황이다.

 

yml 코드를 수정해주자.

 

 

 


 

 

 

GitHub Actions YML 수정

 

 

 

기존 코드

   # 5. EC2 서버에서 실행 (기존 프로세스 종료 후 새로 실행)
      - name: Restart app on EC2
        uses: appleboy/ssh-action@v1.0.3
        with:
          host: ${{ secrets.EC2_HOST }}
          username: ec2-user
          key: ${{ secrets.EC2_SSH_KEY }}
          script: |
            # 기존 실행 중인 프로세스 종료
            pids=$(pgrep -f "exam-0.0.1-SNAPSHOT.jar")
            if [ -n "$pids" ]; then
              kill -9 $pids
            fi
            # 새로 실행 (백그라운드, 로그 저장)
            nohup java -jar /home/ec2-user/exam-0.0.1-SNAPSHOT.jar > /home/ec2-user/app.log 2>&1 &
  • actions 컨테이너 내부에서 .jar를 재실행하는 방식
  • GitHub Actions에서 ssh-action 단계가 끝나면서 내부 컨테이너가 종료됨 → 그 컨테이너 안에서 실행된 자식 프로세스(java -jar)도 같이 kill됨 → exit 137
  • 즉, 오류 원인은 Actions와 프로세스를 완전히 분리하지 못해서 프로세스 강제종료 발생

 

 

 

수정된 코드

  • .jar 실행 부분을 스크립트로 작성하여, 그것을 실행하는 명령 작성
  • github Actions와 프로세스를 완전히 분리한다.
      # 5. EC2 서버에서 실행 (기존 프로세스 종료 후 새로 setsid+nohup 실행)
      - name: Restart app on EC2
        uses: appleboy/ssh-action@v1.0.3
        with:
          host: ${{ secrets.EC2_HOST }}
          username: ec2-user
          key: ${{ secrets.EC2_SSH_KEY }}
          script: |
            # 기존 실행 중인 jar 종료
            pids=$(pgrep -f "exam-0.0.1-SNAPSHOT.jar")
            if [ -n "$pids" ]; then
              kill -9 $pids
            fi

            # 새로 실행 (setsid + nohup, 백그라운드, 로그 저장)
            setsid nohup java -Xms128m -Xmx512m -jar /home/ec2-user/exam-0.0.1-SNAPSHOT.jar \
              > /home/ec2-user/app.log 2>&1 < /dev/null &

 

 

 

실행 스크립트 작성

SSH로 EC2 접속 후 실행 파일  deploy.sh  생성

vi deploy.sh

 

 

i 누르고 deploy.sh 작성

#!/bin/bash

# 기존 실행 중인 jar 종료
pids=$(pgrep -f "exam-0.0.1-SNAPSHOT.jar")
if [ -n "$pids" ]; then
  kill -9 $pids
fi

# 새로 실행 (setsid + nohup, 백그라운드, 로그 저장)
setsid nohup java -Xms128m -Xmx512m -jar /home/ec2-user/exam-0.0.1-SNAPSHOT.jar \
  > /home/ec2-user/app.log 2>&1 < /dev/null &

 

이후 ESC → :wq 입력 → Enter로 저장

 

 

 

파일 실행 권한 부여

chmod +x /home/ec2-user/deploy.sh

 

 

 

 

 

이렇게 해주고 나니 정상 실행된 모습을 볼 수 있다. 👍🏻

 

 

 

 

'서버&인프라 > Cloud' 카테고리의 다른 글

CI/CD 파이프라인 구축으로 배포 자동화하기 - EC2와 Github Actions 연동  (0) 2025.09.19
AWS RDS가 PuTTY에선 연결되지만 workbench 연결 안 되는 오류  (0) 2025.09.16
AWS EC2에 Spring boot+React 프로젝트 배포하기  (0) 2025.09.16
Google Cloud Run으로 배포한 서비스를 가비아 도메인과 연결하기  (0) 2025.01.10
docker 이미지를 Google Cloud Run에 배포하기  (0) 2025.01.09
'서버&인프라/Cloud' 카테고리의 다른 글
  • CI/CD 파이프라인 구축으로 배포 자동화하기 - EC2와 Github Actions 연동
  • AWS RDS가 PuTTY에선 연결되지만 workbench 연결 안 되는 오류
  • AWS EC2에 Spring boot+React 프로젝트 배포하기
  • Google Cloud Run으로 배포한 서비스를 가비아 도메인과 연결하기
오은이
오은이
  • 오은이
    오은이 하우스
    오은이
  • 전체
    오늘
    어제
    • 분류 전체보기 (79)
      • 일기 (2)
      • Python (1)
      • Java (4)
      • CS (2)
      • 코딩테스트 (26)
        • 백준 (25)
        • 프로그래머스 (1)
      • 웹 개발 (17)
        • Spring (6)
        • JavaScript (3)
        • WebSquare (5)
        • React (3)
      • DB (5)
        • MySQL (4)
        • Oracle (1)
      • 서버&인프라 (18)
        • Server (5)
        • Cloud (12)
        • Linux (1)
      • 자격증 (4)
        • 정보처리기사 (1)
        • AICE (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    tomcat
    Java
    클라우드 배포
    웹스퀘어
    티스토리챌린지
    AICE
    docker
    머신러닝
    db
    Spring
    자바
    리액트
    클라우드
    react
    dockerspring
    SpringBoot
    AI
    Apache
    MySQL
    톰캣
    오블완
    EC2
    cloud DB
    websquare
    알고리즘
    AICE Associate
    docker배포
    백준자바
    google cloud run
    백준
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
오은이
github Actions process exited with status 137 from signal kill 에러 해결방법
상단으로

티스토리툴바