Skip to content
Closed
Show file tree
Hide file tree
Changes from all 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