Skip to content
Closed
Show file tree
Hide file tree
Changes from 7 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/ci-cd-recruitment-service.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,14 @@ env:
SERVICE_NAME: recruitment-service # 예: order-service
DOCKER_IMAGE: ${{ secrets.DOCKERHUB_USERNAME }}/${{ vars.DOCKER_IMAGE_NAME }}:latest
EC2_HOST: ${{ secrets.EC2_HOST }}
EC2_SSH_USER: ec2-user
EC2_SSH_USER: kmj02dev
PRIVATE_KEY: ${{ secrets.EC2_SSH_PRIVATE_KEY }}
TIMEZONE: Asia/Seoul
DOCKER_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
DOCKER_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }}
PROJECT_PATH: /home/ec2-user/delivery-system/recruitment-service # 예: /home/ec2-user/delivery-system/order-service
Comment on lines +13 to 18
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

EC2_SSH_USER와 PROJECT_PATH 간 불일치
EC2_SSH_USERkmj02dev로 변경했으나, PROJECT_PATH/home/ec2-user/...가 남아 있습니다. SSH 사용자와 디렉토리 경로가 다르면 배포 실패로 이어지니, 아래처럼 수정하세요.

-  EC2_SSH_USER: kmj02dev
+  EC2_SSH_USER: kmj02dev

-  PROJECT_PATH: /home/ec2-user/delivery-system/recruitment-service
+  PROJECT_PATH: /home/${{ env.EC2_SSH_USER }}/delivery-system/recruitment-service
🤖 Prompt for AI Agents
In .github/workflows/ci-cd-recruitment-service.yml around lines 13 to 18, the
EC2_SSH_USER is set to kmj02dev but the PROJECT_PATH still uses /home/ec2-user,
causing a mismatch. Update the PROJECT_PATH to use
/home/kmj02dev/delivery-system/recruitment-service to match the SSH user and
avoid deployment failures.

APPLICATION: ${{ secrets.APPLICATION }}

jobs:
build-and-push:
runs-on: ubuntu-latest
Expand Down
3 changes: 3 additions & 0 deletions recruitment-service/.gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
/gradlew text eol=lf
*.bat text eol=crlf
*.jar binary
71 changes: 71 additions & 0 deletions recruitment-service/.github/workflows/ci-cd-order-service.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
name: CI/CD for Spring Boot + MySQL with Docker Compose

on:
push:
branches: [ "main", "order-service/main" ]
pull_request:
branches: [ "main", "order-service/main" ]

env:
SERVICE_NAME: order-service # 예: order-service
DOCKER_IMAGE: ${{ secrets.DOCKERHUB_USERNAME }}/${{ vars.DOCKER_IMAGE_NAME }}:latest
EC2_HOST: ${{ secrets.EC2_HOST }}
EC2_SSH_USER: ec2-user
PRIVATE_KEY: ${{ secrets.EC2_SSH_PRIVATE_KEY }}
TIMEZONE: Asia/Seoul
DOCKER_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
DOCKER_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }}
PROJECT_PATH: /home/ec2-user/delivery-system/order-service # 예: /home/ec2-user/delivery-system/order-service

jobs:
build-and-push:
runs-on: ubuntu-latest
environment: order-service

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Set up JDK 21
uses: actions/setup-java@v4
with:
java-version: '21'
distribution: 'temurin'

- name: Grant execute permission for gradlew
run: chmod +x ${{ env.SERVICE_NAME }}/gradlew

- name: Build Spring Boot Application
working-directory: ${{ env.SERVICE_NAME }}
run: ./gradlew build

- name: Log in to Docker Hub
uses: docker/login-action@v2
with:
username: ${{ env.DOCKER_USERNAME }}
password: ${{ env.DOCKER_TOKEN }}

- name: Build Docker Image
run: docker build -t ${{ env.DOCKER_IMAGE }} ./${{ env.SERVICE_NAME }}

- name: Push Docker Image
run: docker push ${{ env.DOCKER_IMAGE }}

deploy-to-ec2:
runs-on: ubuntu-latest
if: github.event_name == 'push'
needs: build-and-push
environment: order-service

steps:
- name: Deploy to EC2 via SSH
uses: appleboy/[email protected]
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

SSH Action 버전을 최신으로 업데이트하세요.

현재 사용 중인 appleboy/[email protected]은 구버전입니다. 최신 버전을 사용하여 보안 및 안정성을 개선하세요.

-      uses: appleboy/[email protected]
+      uses: appleboy/[email protected]
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
uses: appleboy/ssh-action@v0.1.6
uses: appleboy/ssh-action@v1.0.3
🤖 Prompt for AI Agents
In recruitment-service/.github/workflows/ci-cd-order-service.yml at line 62, the
SSH action version used is outdated (appleboy/[email protected]). Update this to
the latest stable version available on the official repository to improve
security and stability. Replace the version tag with the newest release version.

with:
host: ${{ env.EC2_HOST }}
username: ${{ env.EC2_SSH_USER }}
key: ${{ env.PRIVATE_KEY }}
script: |
cd ${{ env.PROJECT_PATH }}
sudo docker compose pull
sudo docker compose down
sudo docker compose up -d
71 changes: 71 additions & 0 deletions recruitment-service/.github/workflows/ci-cd-payment-service.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
name: CI/CD for Spring Boot + MySQL with Docker Compose

on:
push:
branches: [ "main", "payment-service/main" ]
pull_request:
branches: [ "main", "payment-service/main" ]

env:
SERVICE_NAME: payment-service # 예: order-service
DOCKER_IMAGE: ${{ secrets.DOCKERHUB_USERNAME }}/${{ vars.DOCKER_IMAGE_NAME }}:latest
EC2_HOST: ${{ secrets.EC2_HOST }}
EC2_SSH_USER: ec2-user
PRIVATE_KEY: ${{ secrets.EC2_SSH_PRIVATE_KEY }}
TIMEZONE: Asia/Seoul
DOCKER_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
DOCKER_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }}
PROJECT_PATH: /home/ec2-user/delivery-system/payment-service # 예: /home/ec2-user/delivery-system/order-service

jobs:
build-and-push:
runs-on: ubuntu-latest
environment: payment-service

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Set up JDK 21
uses: actions/setup-java@v4
with:
java-version: '21'
distribution: 'temurin'

- name: Grant execute permission for gradlew
run: chmod +x ${{ env.SERVICE_NAME }}/gradlew

- name: Build Spring Boot Application
working-directory: ${{ env.SERVICE_NAME }}
run: ./gradlew build

- name: Log in to Docker Hub
uses: docker/login-action@v2
with:
username: ${{ env.DOCKER_USERNAME }}
password: ${{ env.DOCKER_TOKEN }}

- name: Build Docker Image
run: docker build -t ${{ env.DOCKER_IMAGE }} ./${{ env.SERVICE_NAME }}

- name: Push Docker Image
run: docker push ${{ env.DOCKER_IMAGE }}

deploy-to-ec2:
runs-on: ubuntu-latest
if: github.event_name == 'push'
needs: build-and-push
environment: payment-service

steps:
- name: Deploy to EC2 via SSH
uses: appleboy/[email protected]
with:
host: ${{ env.EC2_HOST }}
username: ${{ env.EC2_SSH_USER }}
key: ${{ env.PRIVATE_KEY }}
script: |
cd ${{ env.PROJECT_PATH }}
sudo docker compose pull
sudo docker compose down
sudo docker compose up -d
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
name: CI/CD for Spring Boot + MySQL with Docker Compose

on:
push:
branches: [ "main", "recruitment-service/main" ]
pull_request:
branches: [ "main", "recruitment-service/main" ]

env:
SERVICE_NAME: recruitment-service # 예: order-service
DOCKER_IMAGE: ${{ secrets.DOCKERHUB_USERNAME }}/${{ vars.DOCKER_IMAGE_NAME }}:latest
EC2_HOST: ${{ secrets.EC2_HOST }}
EC2_SSH_USER: ec2-user
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

EC2 사용자와 프로젝트 경로 불일치 문제

EC2_SSH_USERec2-user로 설정되어 있지만, PROJECT_PATH/home/kmj02dev/를 사용하고 있습니다. 이는 SSH 접속 시 권한 문제나 경로를 찾을 수 없는 오류를 발생시킬 수 있습니다.

-  EC2_SSH_USER: ec2-user
+  EC2_SSH_USER: kmj02dev

Also applies to: 18-18

🤖 Prompt for AI Agents
In recruitment-service/.github/workflows/ci-cd-recruitment-service.yml at lines
13 and 18, the EC2_SSH_USER is set to "ec2-user" but the PROJECT_PATH uses
"/home/kmj02dev/", causing a mismatch that can lead to permission or path
errors. Update either EC2_SSH_USER to match the user owning the PROJECT_PATH
directory or change PROJECT_PATH to correspond to the home directory of
"ec2-user" to ensure consistency and avoid SSH access issues.

PRIVATE_KEY: ${{ secrets.EC2_SSH_PRIVATE_KEY }}
TIMEZONE: Asia/Seoul
DOCKER_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
DOCKER_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }}
PROJECT_PATH: /home/kmj02dev/delivery-system/recruitment-service # 예: /home/ec2-user/delivery-system/order-service
APPLICATION: ${{ secrets.APPLICATION }}

jobs:
build-and-push:
runs-on: ubuntu-latest
environment: recruitment-service

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Set up JDK 21
uses: actions/setup-java@v4
with:
java-version: '21'
distribution: 'temurin'

- name: Set up application.properties
run : |
mkdir -p "${{ env.SERVICE_NAME }}"/src/main/resources
echo "${{ env.APPLICATION }}" > "${{ env.SERVICE_NAME }}/src/main/resources/application.properties"
- name: Grant execute permission for gradlew
run: chmod +x ${{ env.SERVICE_NAME }}/gradlew

- name: Build Spring Boot Application
working-directory: ${{ env.SERVICE_NAME }}
run: ./gradlew build

- name: Log in to Docker Hub
uses: docker/login-action@v2
with:
username: ${{ env.DOCKER_USERNAME }}
password: ${{ env.DOCKER_TOKEN }}

- name: Build Docker Image
run: docker build -t ${{ env.DOCKER_IMAGE }} ./${{ env.SERVICE_NAME }}

- name: Push Docker Image
run: docker push ${{ env.DOCKER_IMAGE }}

deploy-to-ec2:
runs-on: ubuntu-latest
if: github.event_name == 'push'
needs: build-and-push
environment: recruitment-service

steps:
- name: Deploy to EC2 via SSH
uses: appleboy/[email protected]
with:
host: ${{ env.EC2_HOST }}
username: ${{ env.EC2_SSH_USER }}
key: ${{ env.PRIVATE_KEY }}
script: |
cd ${{ env.PROJECT_PATH }}
sudo docker compose pull
sudo docker compose down
sudo docker compose up -d
71 changes: 71 additions & 0 deletions recruitment-service/.github/workflows/ci-cd-store-service.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
name: CI/CD for Spring Boot + MySQL with Docker Compose

on:
push:
branches: [ "main", "store-service/main" ]
pull_request:
branches: [ "main", "store-service/main" ]

env:
SERVICE_NAME: store-service # 예: order-service
DOCKER_IMAGE: ${{ secrets.DOCKERHUB_USERNAME }}/${{ vars.DOCKER_IMAGE_NAME }}:latest
EC2_HOST: ${{ secrets.EC2_HOST }}
EC2_SSH_USER: ec2-user
PRIVATE_KEY: ${{ secrets.EC2_SSH_PRIVATE_KEY }}
TIMEZONE: Asia/Seoul
DOCKER_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
DOCKER_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }}
PROJECT_PATH: /home/ec2-user/delivery-system/store-service # 예: /home/ec2-user/delivery-system/order-service

jobs:
build-and-push:
runs-on: ubuntu-latest
environment: store-service

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Set up JDK 21
uses: actions/setup-java@v4
with:
java-version: '21'
distribution: 'temurin'

- name: Grant execute permission for gradlew
run: chmod +x ${{ env.SERVICE_NAME }}/gradlew

- name: Build Spring Boot Application
working-directory: ${{ env.SERVICE_NAME }}
run: ./gradlew build

- name: Log in to Docker Hub
uses: docker/login-action@v2
with:
username: ${{ env.DOCKER_USERNAME }}
password: ${{ env.DOCKER_TOKEN }}

- name: Build Docker Image
run: docker build -t ${{ env.DOCKER_IMAGE }} ./${{ env.SERVICE_NAME }}

- name: Push Docker Image
run: docker push ${{ env.DOCKER_IMAGE }}

deploy-to-ec2:
runs-on: ubuntu-latest
if: github.event_name == 'push'
needs: build-and-push
environment: store-service

steps:
- name: Deploy to EC2 via SSH
uses: appleboy/[email protected]
with:
host: ${{ env.EC2_HOST }}
username: ${{ env.EC2_SSH_USER }}
key: ${{ env.PRIVATE_KEY }}
script: |
cd ${{ env.PROJECT_PATH }}
sudo docker compose pull
sudo docker compose down
sudo docker compose up -d
71 changes: 71 additions & 0 deletions recruitment-service/.github/workflows/ci-cd-user-service.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
name: CI/CD for Spring Boot + MySQL with Docker Compose

on:
push:
branches: [ "main", "user-service/main" ]
pull_request:
branches: [ "main", "user-service/main" ]

env:
SERVICE_NAME: user-service # 예: order-service
DOCKER_IMAGE: ${{ secrets.DOCKERHUB_USERNAME }}/${{ vars.DOCKER_IMAGE_NAME }}:latest
EC2_HOST: ${{ secrets.EC2_HOST }}
EC2_SSH_USER: ec2-user
PRIVATE_KEY: ${{ secrets.EC2_SSH_PRIVATE_KEY }}
TIMEZONE: Asia/Seoul
DOCKER_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
DOCKER_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }}
PROJECT_PATH: /home/ec2-user/delivery-system/user-service # 예: /home/ec2-user/delivery-system/order-service

jobs:
build-and-push:
runs-on: ubuntu-latest
environment: user-service

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Set up JDK 21
uses: actions/setup-java@v4
with:
java-version: '21'
distribution: 'temurin'

- name: Grant execute permission for gradlew
run: chmod +x ${{ env.SERVICE_NAME }}/gradlew

- name: Build Spring Boot Application
working-directory: ${{ env.SERVICE_NAME }}
run: ./gradlew build

- name: Log in to Docker Hub
uses: docker/login-action@v2
with:
username: ${{ env.DOCKER_USERNAME }}
password: ${{ env.DOCKER_TOKEN }}

- name: Build Docker Image
run: docker build -t ${{ env.DOCKER_IMAGE }} ./${{ env.SERVICE_NAME }}

- name: Push Docker Image
run: docker push ${{ env.DOCKER_IMAGE }}

deploy-to-ec2:
runs-on: ubuntu-latest
if: github.event_name == 'push'
needs: build-and-push
environment: user-service

steps:
- name: Deploy to EC2 via SSH
uses: appleboy/[email protected]
with:
host: ${{ env.EC2_HOST }}
username: ${{ env.EC2_SSH_USER }}
key: ${{ env.PRIVATE_KEY }}
script: |
cd ${{ env.PROJECT_PATH }}
sudo docker compose pull
sudo docker compose down
sudo docker compose up -d
Loading
Loading