Merge pull request #196 from PuppyMode-org/refactor/#190_drink_capacity #104
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: Java CI/CD Pipeline with Gradle | |
| on: | |
| push: | |
| branches: [ "main", "develop" ] | |
| jobs: | |
| deploy: | |
| runs-on: ubuntu-latest | |
| steps: | |
| #------------------- CI -------------------- | |
| # JDK Setting | |
| - uses: actions/checkout@v3 | |
| - name: Set up JDK 17 | |
| uses: actions/setup-java@v4 | |
| with: | |
| distribution: 'temurin' | |
| java-version: '17' | |
| # gradlew 실행 권한 부여 | |
| - name: Grant execute permission for gradlew | |
| run: chmod +x gradlew | |
| # Build 시간 단축을 위한 Gradle Caching | |
| - name: Gradle Caching | |
| uses: actions/cache@v3 | |
| with: | |
| path: | | |
| ~/.gradle/caches | |
| ~/.gradle/wrapper | |
| key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} | |
| restore-keys: | | |
| ${{ runner.os }}-gradle- | |
| # Firebase 설정 json 파일 생성 | |
| - name: Make firebase json file | |
| run: | | |
| mkdir -p ./src/main/resources/firebase | |
| echo "${{ secrets.FIREBASE_ADMIN_SDK_BASE64 }}" | base64 -d > ./src/main/resources/firebase/puppymode-53d9a-firebase-adminsdk-myzbc-7e65f856a6.json | |
| # yml 파일 생성 | |
| - name: Make application.yml | |
| run: | | |
| mkdir -p ./src/main/resources | |
| echo "${{ secrets.APPLICATION_YML }}" > ./src/main/resources/application.yml | |
| echo "auth.apple.private-key: ${{ secrets.APPLE_PRIVATE_KEY_BASE64 }}" >> ./src/main/resources/application.yml | |
| shell: bash | |
| # Spring Boot 어플리케이션 Build | |
| - name: Spring Boot Build | |
| run: ./gradlew clean build -x test | |
| # DockerHub Login | |
| - name: docker login | |
| uses: docker/login-action@v3 | |
| with: | |
| username: ${{ secrets.DOCKERHUB_USERNAME }} | |
| password: ${{ secrets.DOCKERHUB_TOKEN }} | |
| # Docker 이미지 Build/Push | |
| - name: Build/Push Docker Image | |
| run: | | |
| docker build -t ${{ secrets.DOCKERHUB_USERNAME }}/${{ secrets.DOCKERHUB_IMAGENAME }} . | |
| docker push ${{ secrets.DOCKERHUB_USERNAME }}/${{ secrets.DOCKERHUB_IMAGENAME }} | |
| #------------------- CD -------------------- | |
| # EC2 접속 후 서버 배포 | |
| - name: Deploy to Server | |
| uses: appleboy/ssh-action@master | |
| with: | |
| host: ${{ secrets.EC2_HOST }} | |
| key: ${{ secrets.EC2_SSH_KEY }} | |
| username: ${{ secrets.EC2_USERNAME }} | |
| port: ${{ secrets.EC2_SSH_PORT }} | |
| script: | | |
| sudo docker stop ${{ secrets.DOCKERHUB_IMAGENAME }} | |
| sudo docker rm ${{ secrets.DOCKERHUB_IMAGENAME }} | |
| sudo docker pull ${{ secrets.DOCKERHUB_USERNAME }}/${{ secrets.DOCKERHUB_IMAGENAME }} | |
| sudo docker run -d -p 8080:8080 --name ${{ secrets.DOCKERHUB_IMAGENAME }} ${{ secrets.DOCKERHUB_USERNAME }}/${{ secrets.DOCKERHUB_IMAGENAME }} | |
| sudo docker image prune -f |