Skip to content

Dev

Dev #89

Workflow file for this run

name: CD with Gradle
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
permissions:
contents: read
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'adopt'
- name: Make application.yml
run: |
cd ./src/main/resources
touch ./application.yml
echo "${{ secrets.YML }}" > ./application.yml
shell: bash
- name: Make application-db.yml
run: |
cd ./src/main/resources
touch ./application-db.yml
echo "${{ secrets.YML_DB }}" > ./application-db.yml
shell: bash
- name: Make application-jwt.yml
run: |
cd ./src/main/resources
touch ./application-jwt.yml
echo "${{ secrets.YML_JWT }}" > ./application-jwt.yml
shell: bash
- name: Make application-mail.yml
run: |
cd ./src/main/resources
touch ./application-mail.yml
echo "${{ secrets.YML_MAIL }}" | sed 's/\\n/\n/g' > ./application-mail.yml
shell: bash
- name: Build with Gradle
run: |
chmod +x ./gradlew
./gradlew clean bootJar -x test
- name: Docker build & push to docker repo
run: |
echo "${{ secrets.DOCKERHUB_PASSWORD }}" | docker login -u "${{ secrets.DOCKERHUB_USERNAME }}" --password-stdin
# πŸ”Ή μ‹€ν–‰ κ°€λŠ₯ν•œ JAR νŒŒμΌμ„ κ°€μ Έμ˜€κΈ° μœ„ν•΄ μˆ˜μ •
JAR_FILE=$(ls build/libs/*SNAPSHOT.jar | head -n 1)
# πŸ”Ή λΉŒλ“œ μ‹œ μ‹€ν–‰ κ°€λŠ₯ν•œ JAR μ‚¬μš©
docker build --no-cache --build-arg JAR_FILE=$JAR_FILE -t ${{ secrets.DOCKERHUB_USERNAME }}/blaybus .
# πŸ”Ή Docker Hub에 ν‘Έμ‹œ
docker tag ${{ secrets.DOCKERHUB_USERNAME }}/blaybus ${{ secrets.DOCKERHUB_USERNAME }}/blaybus:latest
docker push ${{ secrets.DOCKERHUB_USERNAME }}/blaybus:latest
- name: Deploy to server
uses: appleboy/ssh-action@master
id: deploy
with:
host: ${{ secrets.HOST }}
username: ubuntu
key: ${{ secrets.KEY }}
envs: GITHUB_SHA
script: |
cd /home/ubuntu
# βœ… μ‹€ν–‰ 쀑인 λͺ¨λ“  μ»¨ν…Œμ΄λ„ˆ 정리
echo "πŸ›‘ Stopping all running containers..."
sudo docker rm -f $(docker ps -qa) || true
# βœ… μ΅œμ‹  이미지 κ°€μ Έμ˜€κΈ°
echo "πŸš€ Pulling the latest Docker image..."
sudo docker pull ${{ secrets.DOCKER_USERNAME }}/blaybus:latest
# βœ… κΈ°μ‘΄ μ»¨ν…Œμ΄λ„ˆ μ’…λ£Œ 및 λ„€νŠΈμ›Œν¬ 정리
echo "πŸ›‘ Stopping and removing existing containers..."
docker-compose down
# βœ… μ΅œμ‹  이미지 적용 (docker-compose pull κ°•μ œ 적용)
echo "πŸš€ Updating to the latest image..."
docker-compose pull
# βœ… μ»¨ν…Œμ΄λ„ˆ μ‹€ν–‰ (κ°•μ œ μž¬μƒμ„±)
echo "πŸš€ Starting the new container..."
docker-compose up -d --build --force-recreate --no-deps
# βœ… μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” 이미지 정리
echo "🧹 Cleaning up old images..."
docker image prune -f