Merge pull request #1000 from Clubber2024/refactor/#999-keyword-아이콘-변경 #335
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 | |
| on: | |
| push: | |
| branches: [ "main", "dev" ] | |
| jobs: | |
| CI-CD: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v3 | |
| - name: Set up JDK 17 | |
| uses: actions/setup-java@v3 | |
| with: | |
| java-version: '17' | |
| distribution: 'temurin' | |
| - 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- | |
| # === application.yml 설정 === | |
| - name: make application.yml | |
| if: contains(github.ref, 'main') || contains(github.ref, 'dev') | |
| run: | | |
| cd ./Clubber-External/src/main/resources | |
| touch ./application.yml | |
| echo "${{ secrets.YML }}" > ./application.yml | |
| shell: bash | |
| - name: make application.yml (Internal) | |
| if: contains(github.ref, 'dev') | |
| run: | | |
| cd ./Clubber-Internal/src/main/resources | |
| touch ./application.yml | |
| echo "${{ secrets.INTERNAL_YML }}" > ./application.yml | |
| shell: bash | |
| # === dev 환경 === | |
| - name: make application-dev.yml | |
| if: contains(github.ref, 'dev') | |
| run: | | |
| cd ./Clubber-External/src/main/resources | |
| touch ./application-dev.yml | |
| echo "${{ secrets.YML_DEV }}" > ./application-dev.yml | |
| shell: bash | |
| - name: make application-dev.yml (Internal) | |
| if: contains(github.ref, 'dev') | |
| run: | | |
| cd ./Clubber-Internal/src/main/resources | |
| touch ./application-dev.yml | |
| echo "${{ secrets.INTERNAL_YML_DEV }}" > ./application-dev.yml | |
| shell: bash | |
| # === prod 환경 === | |
| - name: make application-prod.yml | |
| if: contains(github.ref, 'main') | |
| run: | | |
| cd ./Clubber-External/src/main/resources | |
| touch ./application-prod.yml | |
| echo "${{ secrets.YML_PROD }}" > ./application-prod.yml | |
| shell: bash | |
| # Internal prod 완전 제외됨 | |
| - name: Grant execute permission for gradlew | |
| run: chmod +x gradlew | |
| # === Build === | |
| - name: Build with Gradle | |
| run: ./gradlew :Clubber-External:clean build -x test | |
| - name: Build with Gradle (Internal) | |
| if: contains(github.ref, 'dev') | |
| run: ./gradlew :Clubber-Internal:clean build -x test | |
| # === Docker Build & Push (dev) === | |
| - name: docker build and push to dev | |
| if: contains(github.ref, 'dev') | |
| run: | | |
| cd Clubber-External | |
| docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }} | |
| docker build -f Dockerfile.dev -t ${{ secrets.DOCKER_REPO }}/clubber-backend-dev . | |
| docker push ${{ secrets.DOCKER_REPO }}/clubber-backend-dev | |
| - name: docker build and push to dev nginx | |
| if: contains(github.ref, 'dev') | |
| run: | | |
| cd Clubber-External | |
| docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }} | |
| docker build -f Dockerfile.nginx.dev -t ${{ secrets.DOCKER_REPO }}/clubber-nginx-dev . | |
| docker push ${{ secrets.DOCKER_REPO }}/clubber-nginx-dev | |
| - name: docker build and push to dev (Internal) | |
| if: contains(github.ref, 'dev') | |
| run: | | |
| cd Clubber-Internal | |
| docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }} | |
| docker build -f Dockerfile.dev -t ${{ secrets.DOCKER_REPO }}/clubber-internal-dev . | |
| docker push ${{ secrets.DOCKER_REPO }}/clubber-internal-dev | |
| # === Docker Build & Push (prod) === | |
| - name: docker build and push to prod | |
| if: contains(github.ref, 'main') | |
| run: | | |
| cd Clubber-External | |
| docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }} | |
| docker build -f Dockerfile.prod -t ${{ secrets.DOCKER_REPO }}/clubber-backend-prod . | |
| docker push ${{ secrets.DOCKER_REPO }}/clubber-backend-prod | |
| - name: docker build and push to prod nginx | |
| if: contains(github.ref, 'main') | |
| run: | | |
| cd Clubber-External | |
| docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }} | |
| docker build -f Dockerfile.nginx.prod -t ${{ secrets.DOCKER_REPO }}/clubber-nginx-prod . | |
| docker push ${{ secrets.DOCKER_REPO }}/clubber-nginx-prod | |
| # === 배포 === | |
| - name: Copy docker-compose.yml to EC2 DEV | |
| if: contains(github.ref, 'dev') | |
| uses: appleboy/scp-action@master | |
| with: | |
| host: ${{ secrets.HOST_DEV }} | |
| username: ${{ secrets.SSH_USERNAME }} | |
| key: ${{ secrets.SSH_KEY_DEV }} | |
| source: ./docker-compose-dev.yml | |
| target: /home/ubuntu | |
| - name: Copy docker-compose.yml to EC2 PROD | |
| if: contains(github.ref, 'main') | |
| uses: appleboy/scp-action@master | |
| with: | |
| host: ${{ secrets.HOST_PROD }} | |
| username: ${{ secrets.SSH_USERNAME }} | |
| key: ${{ secrets.SSH_KEY_PROD }} | |
| source: ./docker-compose-prod.yml | |
| target: /home/ubuntu | |
| - name: Deploy to dev | |
| if: contains(github.ref, 'dev') | |
| uses: appleboy/ssh-action@master | |
| with: | |
| host: ${{ secrets.HOST_DEV }} | |
| username: ubuntu | |
| key: ${{ secrets.SSH_KEY_DEV }} | |
| script: | | |
| cd /home/ubuntu | |
| sudo docker rm -f $(docker ps -qa) | |
| sudo docker pull ${{ secrets.DOCKER_REPO }}/clubber-backend-dev | |
| sudo docker pull ${{ secrets.DOCKER_REPO }}/clubber-internal-dev | |
| sudo docker pull ${{ secrets.DOCKER_REPO }}/clubber-front-dev | |
| sudo docker pull ${{ secrets.DOCKER_REPO }}/clubber-nginx-dev | |
| sudo docker-compose -f docker-compose-dev.yml up -d | |
| sudo docker image prune -f | |
| - name: Deploy to prod | |
| if: contains(github.ref, 'main') | |
| uses: appleboy/ssh-action@master | |
| with: | |
| host: ${{ secrets.HOST_PROD }} | |
| username: ubuntu | |
| key: ${{ secrets.SSH_KEY_PROD }} | |
| script: | | |
| cd /home/ubuntu | |
| sudo docker rm -f $(docker ps -qa) | |
| sudo docker pull ${{ secrets.DOCKER_REPO }}/clubber-backend-prod | |
| sudo docker pull ${{ secrets.DOCKER_REPO }}/clubber-front-prod | |
| sudo docker pull ${{ secrets.DOCKER_REPO }}/clubber-nginx-prod | |
| sudo docker-compose -f docker-compose-prod.yml up -d | |
| sudo docker image prune -f |