Merge pull request #133 from IT-Cotato/feature/132 #86
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI/CD - Build, Push, Deploy | |
| on: | |
| push: | |
| branches: [ "develop" ] | |
| jobs: | |
| build-and-push: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Set up JDK 17 | |
| uses: actions/setup-java@v4 | |
| with: | |
| java-version: '17' | |
| distribution: 'temurin' | |
| - name: Grant execute permission for gradlew | |
| run: chmod +x ./gradlew | |
| - name: Create .env for build | |
| run: echo "${{ secrets.ENV_FILE }}" > .env | |
| - name: Build with Gradle | |
| run: ./gradlew clean build -x test | |
| - name: Log in to Docker Hub | |
| uses: docker/login-action@v3 | |
| with: | |
| username: ${{ secrets.DOCKERHUB_USERNAME }} | |
| password: ${{ secrets.DOCKERHUB_TOKEN }} | |
| - name: Build and push Docker image | |
| run: | | |
| docker build -t ${{ secrets.DOCKERHUB_USERNAME }}/ongil-backend:latest . | |
| docker push ${{ secrets.DOCKERHUB_USERNAME }}/ongil-backend:latest | |
| - name: Create deployment package | |
| run: | | |
| mkdir -p deploy/nginx | |
| cp docker-compose.yml deploy/ | |
| cp nginx/nginx.conf deploy/nginx/ | |
| tar -czvf deploy.tar.gz -C deploy . | |
| - name: Upload artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: deployment-package | |
| path: deploy.tar.gz | |
| deploy: | |
| needs: build-and-push | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Download artifact | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: deployment-package | |
| path: . | |
| - name: Prepare deploy directory on EC2 | |
| uses: appleboy/ssh-action@v1.0.3 | |
| with: | |
| host: ${{ secrets.EC2_HOST }} | |
| username: ${{ secrets.EC2_USER }} | |
| key: ${{ secrets.EC2_SSH_KEY }} | |
| script: | | |
| mkdir -p /home/ubuntu/ongil-backend/deploy | |
| - name: Copy deployment package to EC2 | |
| uses: appleboy/scp-action@v0.1.7 | |
| with: | |
| host: ${{ secrets.EC2_HOST }} | |
| username: ${{ secrets.EC2_USER }} | |
| key: ${{ secrets.EC2_SSH_KEY }} | |
| source: "deploy.tar.gz" | |
| target: "/home/ubuntu/ongil-backend/deploy/" | |
| overwrite: true | |
| debug: true | |
| - name: Deploy on EC2 | |
| uses: appleboy/ssh-action@v1.0.3 | |
| with: | |
| host: ${{ secrets.EC2_HOST }} | |
| username: ${{ secrets.EC2_USER }} | |
| key: ${{ secrets.EC2_SSH_KEY }} | |
| script: | | |
| set -e | |
| cd /home/ubuntu/ongil-backend/deploy | |
| rm -rf nginx | |
| rm -rf nginx.conf | |
| tar -xzvf deploy.tar.gz | |
| rm -f deploy.tar.gz | |
| cd /home/ubuntu/ongil-backend | |
| echo "${{ secrets.ENV_FILE }}" > .env | |
| cp .env deploy/ | |
| cd /home/ubuntu/ongil-backend/deploy | |
| docker-compose down --remove-orphans | |
| docker-compose up -d --pull always | |
| docker system prune -f |