Skip to content

feat: base entity 활성화 #45

feat: base entity 활성화

feat: base entity 활성화 #45

Workflow file for this run

name: CD Workflow
on:
push:
branches:
- 'main'
permissions:
contents: read
jobs:
build-and-push-docker-image:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'
- name: Grant execute permission to gradlew
shell: bash
run: chmod +x ./gradlew
- name: Build with Gradle
uses: gradle/gradle-build-action@v2.6.0
with:
arguments: clean bootJar
- name: docker image build
run: docker build -t ${{ secrets.DOCKERHUB_USERNAME }}/${{ secrets.DOCKER_IMAGE_NAME }} .
- name: docker login
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_PASSWORD }}
- name: docker Hub push
run: docker push ${{ secrets.DOCKERHUB_USERNAME }}/${{ secrets.DOCKER_IMAGE_NAME }}
deploy-to-ec2:
if: github.event_name == 'push'
needs: build-and-push-docker-image
runs-on: ubuntu-latest
steps:
- name: Deploy to EC2
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.EC2_HOST }}
username: ${{ secrets.EC2_USERNAME }}
key: ${{ secrets.EC2_KEY }}
script: |
sudo docker pull ${{ secrets.DOCKERHUB_USERNAME }}/${{ secrets.DOCKER_IMAGE_NAME }}
CONTAINER_ID=$(sudo docker ps -aqf "name=^/github-actions-demo$")
if [ -n "$CONTAINER_ID" ]; then
echo "Stopping existing container: $CONTAINER_ID"
sudo docker stop $CONTAINER_ID
sudo docker rm $CONTAINER_ID
else
echo "No existing container to stop."
fi
echo "Running the new container with image: ${{ secrets.DOCKERHUB_USERNAME }}/${{ secrets.DOCKER_IMAGE_NAME }}"
sudo docker run --name github-actions-demo -d -p 8080:8080 \
-e SPRING_PROFILES_ACTIVE=prod \
-e FRONT_ORIGIN=${{ secrets.FRONT_ORIGIN }} \
-e S3_BUCKET_NAME=${{ secrets.S3_BUCKET_NAME }} \
-e S3_ACCESS_KEY=${{ secrets.S3_ACCESS_KEY }} \
-e S3_SECRET_KEY=${{ secrets.S3_SECRET_KEY }} \
-e S3_REGION=${{ secrets.S3_REGION }} \
-e CLOUD_FRONT_URL=${{ secrets.CLOUD_FRONT_URL }} \
-e DATA_INIT_MASTER_EMAIL=${{ secrets.DATA_INIT_MASTER_EMAIL }} \
-e DATA_INIT_MASTER_PASSWORD=${{ secrets.DATA_INIT_MASTER_PASSWORD }} \
-e PROD_DB_URL=${{ secrets.PROD_DB_URL }} \
-e PROD_DB_USERNAME=${{ secrets.PROD_DB_USERNAME }} \
-e PROD_DB_PASSWORD=${{ secrets.PROD_DB_PASSWORD }} \
-e DATA_LOCATION_SQL=${{ secrets.DATA_LOCATION_SQL }} \
-e GOOGLE_CLIENT_ID=${{ secrets.GOOGLE_CLIENT_ID }} \
-e GOOGLE_CLIENT_SECRET=${{ secrets.GOOGLE_CLIENT_SECRET }} \
-e GOOGLE_REDIRECT_URI=${{ secrets.GOOGLE_REDIRECT_URI }} \
-e MAIL_USERNAME=${{ secrets.MAIL_USERNAME }} \
-e MAIL_PASSWORD=${{ secrets.MAIL_PASSWORD }} \
-e JWT_KEY=${{ secrets.JWT_KEY }} \
${{ secrets.DOCKERHUB_USERNAME }}/${{ secrets.DOCKER_IMAGE_NAME }}
echo "Waiting for container to be healthy..."
sleep 20
sudo docker logs github-actions-demo
if sudo docker ps -q -f "name=^/github-actions-demo$" | grep -q .; then
echo "Container is running, performing cleanup..."
sudo docker system prune -f
else
echo "Container is not running, skipping cleanup."
fi