Skip to content

Backend Deploy To AWS #105

Backend Deploy To AWS

Backend Deploy To AWS #105

Workflow file for this run

name: Backend Deploy To AWS
on:
workflow_dispatch:
inputs:
reason:
description: 'Reason for deployment'
required: false
type: string
default: 'Manual deployment'
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
with:
ref: main # Always deploy from main branch
- name: Display deployment info
run: |
echo "🚀 Deploying to production"
echo "📝 Reason: ${{ github.event.inputs.reason }}"
echo "🌿 Branch: main"
echo "👤 Triggered by: ${{ github.actor }}"
- name: JDK 21 설정
uses: actions/setup-java@v4
with:
java-version: '21'
distribution: 'temurin'
java-package: 'jdk'
check-latest: false
server-id: 'github'
server-username: ${{ github.actor }}
server-password: ${{ secrets.GITHUB_TOKEN }}
overwrite-settings: true
- name: Cache Gradle packages
uses: actions/cache@v3
with:
path: ~/.gradle
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: ${{ runner.os }}-gradle
- name: Make gradlew executable
run: chmod +x backEnd/gradlew
- name: Build with Gradle
working-directory: backEnd
run: ./gradlew clean build
- name: Login to Docker Hub
run: docker login -u "${{ secrets.DOCKER_USERNAME }}" -p "${{ secrets.DOCKER_PASSWORD }}"
- name: Build Docker image
working-directory: backEnd
run: |
docker build . -t ${{ secrets.DOCKER_USERNAME }}/bidflow:${{ github.sha }}
docker tag ${{ secrets.DOCKER_USERNAME }}/bidflow:${{ github.sha }} ${{ secrets.DOCKER_USERNAME }}/bidflow:latest
- name: Push Docker image to Docker Hub
run: |
docker push ${{ secrets.DOCKER_USERNAME }}/bidflow:${{ github.sha }}
docker push ${{ secrets.DOCKER_USERNAME }}/bidflow:latest
- name: Deploy to server
uses: appleboy/ssh-action@v1.0.3
with:
host: ${{ secrets.EC2_HOST }}
username: ${{ secrets.EC2_USER }}
key: ${{ secrets.EC2_SSH_KEY }}
port: 22
script: |
# application.yml 파일 생성
echo '${{ secrets.APPLICATION_YML }}' > /home/ubuntu/application.yml
# Docker 네트워크 생성 (존재하지 않는 경우만)
sudo docker network create auction-network || true
# Docker 컨테이너 실행
sudo docker pull ${{ secrets.DOCKER_USERNAME }}/bidflow:${{ github.sha }}
sudo docker stop bidflow || true
sudo docker rm bidflow || true
# Docker 컨테이너 실행 (네트워크 연결 포함)
sudo docker run -d \
-p 8080:8080 \
--name bidflow \
--network auction-network \
--restart always \
-v /home/ubuntu/application.yml:/app/config/application.yml \
-e SPRING_CONFIG_ADDITIONAL_LOCATION="file:/app/config/" \
${{ secrets.DOCKER_USERNAME }}/bidflow:${{ github.sha }}