Skip to content

refactor: 배포 설정 중 #15

refactor: 배포 설정 중

refactor: 배포 설정 중 #15

Workflow file for this run

name: CI/CD Pipeline
on:
push:
branches:
- main
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
# Checkout the code
- name: Checkout code
uses: actions/checkout@v3
# Log in to Docker Hub
- name: Log in to Docker Hub
run: echo "${{ secrets.DOCKER_PASSWORD }}" | docker login -u "${{ secrets.DOCKER_USERNAME }}" --password-stdin
# Build and Push Docker Image
- name: Build and Push Docker Image
run: |
docker build -t ${{ secrets.DOCKER_USERNAME }}/bookmile-app:latest .
docker push ${{ secrets.DOCKER_USERNAME }}/bookmile-app:latest
# .env 파일 생성
- name: Create .env File
run: |
echo "SPRING_DATASOURCE_URL=${{ secrets.SPRING_DATASOURCE_URL }}" >> ./.env
echo "MYSQL_ROOT_PASSWORD=${{ secrets.MYSQL_ROOT_PASSWORD }}" >> ./.env
echo "MYSQL_DATABASE=${{ secrets.MYSQL_DATABASE }}" >> ./.env
echo "MYSQL_USER=${{ secrets.MYSQL_USER }}" >> ./.env
echo "MYSQL_PASSWORD=${{ secrets.MYSQL_PASSWORD }}" >> ./.env
echo "JWT_SECRET_KEY=${{ secrets.JWT_SECRET_KEY }}" >> ./.env
echo "REDIS_HOST=${{ secrets.REDIS_HOST }}" >> ./.env
echo "REDIS_PORT=${{ secrets.REDIS_PORT }}" >> ./.env
echo "AWS_ACCESS_KEY=${{ secrets.AWS_ACCESS_KEY }}" >> ./.env
echo "AWS_SECRET_KEY=${{ secrets.AWS_SECRET_KEY }}" >> ./.env
echo "AWS_BUCKET_FOLDER=${{ secrets.AWS_BUCKET_FOLDER }}" >> ./.env
echo "AWS_BUCKET_PROFILE_FOLDER=${{ secrets.AWS_BUCKET_PROFILE_FOLDER }}" >> ./.env
echo "AWS_BUCKET_MAIN_PROFILE=${{ secrets.AWS_BUCKET_MAIN_PROFILE }}" >> ./.env
# .env 내용 확인
- name: Reading env file
run: |
cat ./.env
ls ./
# .gitignore에 있는 properties 파일 추가
- name: Add prod_properties
run: |
touch ./src/main/resources/application-oauth.properties
touch ./src/main/resources/application-private.properties
echo "${{ secrets.OAUTHPROPERTIES }}" > ./src/main/resources/application-oauth.properties
echo "${{ secrets.PRIVATEPROPERTIES }}" > ./src/main/resources/application-private.properties
# Transfer Files to EC2
- name: Transfer Files to EC2
uses: appleboy/scp-action@v0.1.7
with:
host: ${{ secrets.EC2_HOST }}
username: ubuntu
key: ${{ secrets.EC2_KEY }}
source: |
./
target: ~/backend/
# Deploy Docker Containers on EC2
- name: Deploy Docker Containers
uses: appleboy/ssh-action@v1.2.0
with:
host: ${{ secrets.EC2_HOST }}
username: ubuntu
key: ${{ secrets.EC2_KEY }}
script: |
cd ~/backend
docker-compose down
docker-compose up -d
# Obtain SSL Certificates with Certbot
- name: Obtain SSL Certificates with Certbot
uses: appleboy/ssh-action@v1.2.0
with:
host: ${{ secrets.EC2_HOST }}
username: ubuntu
key: ${{ secrets.EC2_KEY }}
script: |
docker-compose run --rm certbot certonly --webroot -w /var/www/certbot -d bookmile.site -d www.bookmile.site
docker-compose restart nginx
# Verify Deployment
- name: Verify Deployment
uses: appleboy/ssh-action@v1.2.0
with:
host: ${{ secrets.EC2_HOST }}
username: ubuntu
key: ${{ secrets.EC2_KEY }}
script: |
curl -I https://bookmile.site