Skip to content

hotfix: use compose in CI #34

hotfix: use compose in CI

hotfix: use compose in CI #34

Workflow file for this run

name: Build & deploy
on:
push:
branches:
- main
- release-dev
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Install Docker Compose
run: sudo curl -L "https://github.com/docker/compose/releases/download/v2.10.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose && sudo chmod +x /usr/local/bin/docker-compose
- name: Start MySQL using Docker Compose
run: docker-compose up -d mysql
- name: Set up JDK 23
uses: actions/setup-java@v3
with:
distribution: 'temurin'
java-version: '23'
- name: Build with Gradle
run: |
chmod +x gradlew
./gradlew build
env:
SPRING_DATASOURCE_URL: jdbc:mysql://localhost:3306/testdb
SPRING_DATASOURCE_USERNAME: user
SPRING_DATASOURCE_PASSWORD: somepassword
SPRING_JPA_HIBERNATE_DDL_AUTO: create-drop
SPRING_PROFILES_ACTIVE: "prod"
# 배포는 main 브랜치에서만 실행
- name: Upload JAR to EC2
if: github.ref == 'refs/heads/main'
uses: appleboy/[email protected]
with:
host: ${{ secrets.EC2_HOST }}
username: ${{ secrets.EC2_USER }}
key: ${{ secrets.EC2_SSH_PRIVATE_KEY }}
source: "build/libs/*-SNAPSHOT.jar"
target: "~/app/"
- name: Delete latest JAR file
if: github.ref == 'refs/heads/main'
uses: appleboy/[email protected]
with:
host: ${{ secrets.EC2_HOST }}
username: ${{ secrets.EC2_USER }}
key: ${{ secrets.EC2_SSH_PRIVATE_KEY }}
script: |
cd ~/app
LATEST_JAR=$(ls -t *.jar | head -n 1) || true
echo "Latest JAR file: $LATEST_JAR"
for file in *.jar; do
if [[ "$file" != "$LATEST_JAR" ]]; then
echo "Deleting $file..."
rm -f "$file"
fi
done
continue-on-error: true
- name: Upload Dockerfile and Compose file
if: github.ref == 'refs/heads/main'
uses: appleboy/[email protected]
with:
host: ${{ secrets.EC2_HOST }}
username: ${{ secrets.EC2_USER }}
key: ${{ secrets.EC2_SSH_PRIVATE_KEY }}
source: "deploy-Dockerfile, docker-compose.yaml"
target: "~"
- name: Deploy via SSH
if: github.ref == 'refs/heads/main'
uses: appleboy/[email protected]
with:
host: ${{ secrets.EC2_HOST }}
username: ${{ secrets.EC2_USER }}
key: ${{ secrets.EC2_SSH_PRIVATE_KEY }}
script: |
echo "Starting containers..."
docker compose up -d --no-deps myapp