Skip to content

[DVK-72] test: 개발 서버 CI/CD 구축 테스트 #3

[DVK-72] test: 개발 서버 CI/CD 구축 테스트

[DVK-72] test: 개발 서버 CI/CD 구축 테스트 #3

name: Publish Develop Server
on:
push:
branches: [ develop ]
workflow_dispatch:
env:
CONTAINER_CONTEXT_PATH: 'docker'
DOCKERFILE_PATH: 'docker/Dockerfile'
IMAGE_NAME: 'develop-devooks-backend'
EC2_SSH_KEY: ${{ secrets.DEVELOP_EC2_SSH_PRIVATE_KEY }}
EC2_USER: ${{ secrets.DEVELOP_EC2_SSH_USER }}
EC2_HOST: ${{ secrets.DEVELOP_EC2_HOST }}
jobs:
build-and-deploy:
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- name: Checkout sources
uses: actions/checkout@v4
- name: Setup Java 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v3
- name: Build with Gradle
run: ./gradlew build -x test
- name: Upload Test Reports
if: always()
uses: actions/upload-artifact@v3
with:
name: test-reports
path: build/reports/tests/test
- name: Build the Docker image
run: docker build ${{ env.CONTAINER_CONTEXT_PATH }} --file ${{ env.DOCKERFILE_PATH }} --tag ${{ env.IMAGE_NAME }}:latest
- name: Save Docker image as tar file
run: docker save ${{ env.IMAGE_NAME }}:latest -o ${{ env.IMAGE_NAME }}.tar
- name: Transfer Docker tar to EC2
run: |
echo "$EC2_SSH_KEY" > ec2_key.pem
chmod 600 ec2_key.pem
scp -i ec2_key.pem -o StrictHostKeyChecking=no ${{ env.IMAGE_NAME }}.tar $EC2_USER@EC2_HOST:/home/$EC2_USER/
- name: Deploy to EC2
uses: appleboy/ssh-action@master
with:
host: ${{ env.EC2_HOST }}
username: ${{ env.EC2_USER }}
key: ${{ env.EC2_SSH_KEY }}
script: |
docker load -i /home/$EC2_USER/${{ env.IMAGE_NAME}}.tar