Merge pull request #101 from Capstone-OpenStep/feature/#100-badge-api #64
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: OpenStep Dev CI/CD | |
| on: | |
| push: | |
| branches: [ "main","develop" ] | |
| jobs: | |
| build: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout Repository | |
| uses: actions/checkout@v4 | |
| - name: Set up JDK 17 | |
| uses: actions/setup-java@v4 | |
| with: | |
| distribution: 'temurin' | |
| java-version: '17' | |
| - name: application.yml | |
| if: contains(github.ref, 'develop') | |
| run: | | |
| mkdir -p src/main/resources | |
| echo "${{ secrets.APPLICATION_YML }}" > src/main/resources/application.yml | |
| - name: Cache Gradle dependencies | |
| uses: actions/cache@v3 | |
| with: | |
| path: | | |
| ~/.gradle/caches | |
| ~/.gradle/wrapper | |
| key: gradle-${{ runner.os }}-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} | |
| restore-keys: | | |
| gradle-${{ runner.os }}- | |
| - name: Grant execute permission for Gradlew # gradlew 실행 권한 부여 | |
| run: chmod +x gradlew | |
| - name: Build with Gradle # Gradle 빌드 | |
| run: ./gradlew build -x test --no-daemon --parallel --build-cache | |
| - name: Set up docker-compose.yml | |
| if: contains(github.ref, 'develop') | |
| run: echo "${{ secrets.DOCKERCOMPOSE_YML }}" > docker-compose.yml | |
| - name: Docker build & push to dev | |
| if: contains(github.ref, 'develop') | |
| run: | | |
| docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }} | |
| docker compose -f docker-compose.yml build | |
| docker compose -f docker-compose.yml push | |
| - name: Clean up application.yml after build | |
| if: always() | |
| run: rm -f src/main/resources/application.yml | |
| deploy: | |
| needs: build | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Copy docker-compose.yml to EC2 | |
| run: | | |
| echo "${{ secrets.DOCKERCOMPOSE_YML }}" > docker-compose.yml | |
| echo "${{ secrets.PRIVATE_KEY }}" > key.pem | |
| chmod 600 key.pem | |
| scp -i key.pem -o StrictHostKeyChecking=no docker-compose.yml ${{ secrets.USERNAME }}@${{ secrets.HOST_DEV }}:/home/${{ secrets.USERNAME }}/docker-compose.yml | |
| rm -f key.pem docker-compose.yml | |
| ## deploy to develop | |
| - name: Deploy to dev | |
| uses: appleboy/[email protected] | |
| id: deploy-dev | |
| if: contains(github.ref, 'develop') | |
| with: | |
| host: ${{ secrets.HOST_DEV }} | |
| username: ${{ secrets.USERNAME }} | |
| port: 22 | |
| key: ${{ secrets.PRIVATE_KEY }} | |
| script: | | |
| cd /home/${{ secrets.USERNAME }} | |
| docker-compose -f docker-compose.yml down | |
| docker-compose -f docker-compose.yml pull | |
| docker-compose -f docker-compose.yml up -d --remove-orphans | |
| docker image prune -f |