Merge branch 'hotfix-reward' #63
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: ReturnZone Server CI & CD | |
| on: | |
| push: | |
| branches: [ "main" ] | |
| jobs: | |
| build: | |
| name: Build jar and Push Docker Image at Docker hub | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v3 | |
| - name: Set up JDK 17 | |
| uses: actions/setup-java@v3 | |
| with: | |
| java-version: '17' | |
| distribution: 'temurin' | |
| - name: Set up yml file | |
| uses: microsoft/variable-substitution@v1 | |
| with: | |
| files: ./src/main/resources/application-prod.yml | |
| env: | |
| spring.datasource.url: ${{ secrets.MYSQL_URL }} | |
| spring.datasource.username: ${{ secrets.MYSQL_USERNAME }} | |
| spring.datasource.password: ${{ secrets.MYSQL_PASSWORD }} | |
| spring.jwt.secret: ${{ secrets.JWT_SECRET }} | |
| kakao.auth.client-id: ${{ secrets.CLIENT_ID }} | |
| kakao.local.api-key: ${{ secrets.CLIENT_ID }} | |
| cloud.aws.credentials.access-key: ${{ secrets.S3_ACCESS_KEY }} | |
| cloud.aws.credentials.secret-key: ${{ secrets.S3_SECRET_KEY }} | |
| - name: Build with Gradle | |
| run: | | |
| chmod +x ./gradlew | |
| ./gradlew clean build -x test -i --no-daemon -Dspring.profiles.active=prod | |
| - name: Login to Docker Hub | |
| uses: docker/login-action@v2 | |
| with: | |
| username: ${{ secrets.DOCKER_USERNAME }} | |
| password: ${{ secrets.DOCKER_PASSWORD }} | |
| - name: Build Docker image | |
| run: docker build -t ${{ secrets.DOCKER_USERNAME }}/returnzone-server:latest . | |
| - name: Push Docker image to Docker Hub | |
| run: docker push ${{ secrets.DOCKER_USERNAME }}/returnzone-server:latest | |
| deploy: | |
| name: Deploy to remote EC2 Server | |
| needs: build | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v3 | |
| - name: Deploy to EC2 | |
| uses: appleboy/ssh-action@master | |
| with: | |
| host: ${{ secrets.AWS_EC2_IP }} | |
| username: ${{ secrets.AWS_EC2_USERNAME }} | |
| key: ${{ secrets.AWS_EC2_KEY }} | |
| port: ${{ secrets.AWS_EC2_PORT }} | |
| script: | | |
| cd /home/ubuntu | |
| docker pull ${{ secrets.DOCKER_USERNAME }}/returnzone-server:latest | |
| if [ "$(docker ps -aq -f name=spring-server)" ]; then | |
| docker stop spring-server | |
| docker rm spring-server | |
| fi | |
| docker image prune -af | |
| docker run -d \ | |
| --name spring-server \ | |
| -p 8080:8080 \ | |
| ${{ secrets.DOCKER_USERNAME }}/returnzone-server:latest |