Merge pull request #220 from CoreDisc/feature/#218 #92
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 using github actions & docker | |
| on: | |
| push: | |
| branches: [ "develop" ] | |
| permissions: | |
| contents: read | |
| jobs: | |
| build: | |
| runs-on: ubuntu-24.04 | |
| steps: | |
| ## JDK setting - github actions에서 사용할 JDK 설정 | |
| - uses: actions/checkout@v3 | |
| - name: Set up JDK 17 | |
| uses: actions/setup-java@v3 | |
| with: | |
| java-version: '17' | |
| distribution: 'temurin' # https://github.com/actions/setup-java | |
| ## 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- | |
| ## gradlew 파일에 실행 권한을 부여 | |
| - name: Grant execute permission for gradlew | |
| run: | |
| chmod +x gradlew | |
| ## yml 파일 생성 | |
| - name: make application.yml | |
| if: contains(github.ref, 'develop') | |
| run: | | |
| cd ./src/main | |
| mkdir -p resources | |
| cd ./resources | |
| touch ./application.yml | |
| echo "${{ secrets.APPLICATION_YML }}" >> ./application.yml | |
| shell: bash | |
| ## fireBase json 생성 | |
| - name: make firebase serviceAccountKey.json | |
| if: contains(github.ref, 'develop') | |
| shell: bash | |
| run: | | |
| mkdir -p ./src/main/resources/firebase | |
| cat > ./src/main/resources/firebase/serviceAccountKey.json << 'EOF' | |
| ${{ secrets.FIREBASE_SERVICE_ACCOUNT_JSON }} | |
| EOF | |
| # gradle build | |
| - name: Build with Gradle | |
| run: ./gradlew build -x test | |
| - name: Docker login | |
| run: echo "${{ secrets.DOCKER_PASSWORD }}" | docker login -u "${{ secrets.DOCKER_USERNAME }}" --password-stdin | |
| - name: Docker build | |
| run: docker build -t "${{ secrets.DOCKER_USERNAME }}/${{ secrets.DOCKER_REPO }}:latest" . | |
| - name: Debug - check images & login info | |
| run: | | |
| docker images | grep "${{ secrets.DOCKER_USERNAME }}" | |
| docker info | grep -A2 'Username' | |
| - name: Docker push | |
| run: docker push "${{ secrets.DOCKER_USERNAME }}/${{ secrets.DOCKER_REPO }}:latest" | |
| - name: Deploy to prod | |
| uses: appleboy/ssh-action@v0.1.6 | |
| id: deploy-prod | |
| if: contains(github.ref, 'develop') | |
| with: | |
| host: ${{ secrets.EC2_HOST }} | |
| username: ${{ secrets.EC2_USERNAME }} | |
| key: ${{ secrets.EC2_PRIVATE_KEY }} | |
| script: | | |
| sudo docker rm -f $(docker ps -qa) | |
| sudo docker pull ${{ secrets.DOCKER_USERNAME }}/${{ secrets.DOCKER_REPO }} | |
| cd /home/ubuntu/coredisc | |
| sudo docker-compose down | |
| sudo docker-compose up -d | |
| sudo docker image prune -f |