3.2.2 빌드된 파일을 EC2에서 실행시키기

윤희빈·2026년 8월 25일

AWS CI/CD 구축

목록 보기
16/25
post-thumbnail

저번에 실습한 내용 마무리하기

1. 서버 종료

lsof -i:8080
sudo fuser -k -n tcp 8080
lsof -i:8080


2. 프로젝트 폴더 삭제

rm -rf [프로젝트 디렉터리명]


빌드를 먼저해서 EC2에서 실행시키기

이제 EC2에서 빌드해서 배포하는 것이 아니라, Github Actions가 빌드하고, EC2에 배포하는 방법이다!
따라서, workflowf의 파일을 수정한다.

이번 SCP 방식
GitHub Actions

GitHub Actions에서 Gradle build

project.jar 생성
↓ SCP
EC2로 jar만 전송
↓ SSH
EC2에서는 jar 실행만

name: deploy To EC2.yml

on:
  push:
    branches:
      - main

jobs:
  Deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Github Repository 파일 불러오기
        uses: actions/checkout@v4

      - name: JDK 17버전 설치
        uses: actions/setup-java@v4
        with:
          distribution: temurin
          java-version: 17

      - name: application.yml 파일 만들기
        run: echo "${{secrets.APPLICATION_PROPERTIES}}" > ./src/main/resources/application.yml

      - name: 테스트 및 빌드하기
        run: ./gradlew clean build

      - name: 빌드된 및 빌드하기
        run: mv ./build/libs/*SNAPSHOT.jar ./project.jar

      - name: SCP로 EC2에 빌드된 파일 전송하기
        uses: appleboy/scp-action@v0.1.7
        with:
          host: ${{ secrets.EC2_HOST }}
          username: ${{ secrets.EC2_USERNAME }}
          key: ${{ secrets.EC2_PRIVATE_KEY}}
          source: project.jar
          target: /home/ubuntu/cicd-ex/tobe

      - name: SSH로 EC2에 접속하기!
      # ssh로 접속하는 명령어를 일일히 쓰기 보다는 라이브러리를 사용!
        uses: appleboy/ssh-action@v1.0.3
        with:
          host: ${{ secrets.EC2_HOST }}
          username: ${{ secrets.EC2_USERNAME }}
          key: ${{ secrets.EC2_PRIVATE_KEY}}
          script_stop: true
          script: |
            rm -rf /home/ubuntu/cicd-ex/current
            mkdir /home/ubuntu/cicd-ex/current
            mv /home/ubuntu/cicd-ex/tobe/project.jar /home/ubuntu/cicd-ex/current/project.jar
            cd /home/ubuntu/cicd-ex/current
            sudo fuser -k -n tcp 8080 || true
            nohup java -jar project.jar > ./output.log 2>&1 &
            rm -rf /home/ubuntu/cicd-ex/tobe


문제발생


echo "${{secrets.APPLICATION_PROPERTIES}}" > ./src/main/resources/application.yml에서 ./src/main/resources아무 파일이 없는 빈 디렉터리라서 애초에 깃허브에 존재하지 않았다.
따라서 ./src/main/resources가 존재하도록 그 하위에 빈 파일을 만든다.
나는 ./src/main/resources/static에 파일을 만들었다.

다시 푸시해보자.

성공!


서버도 정상적으로 접속이 가능하다.

profile
비니비니히비니의 정리블로그

0개의 댓글