Update aws.yml #16
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 Pipeline | |
| on: | |
| push: | |
| branches: | |
| - main | |
| jobs: | |
| build: | |
| runs-on: ubuntu-latest | |
| steps: | |
| # 코드 체크아웃 | |
| - name: Checkout repository | |
| uses: actions/checkout@v2 | |
| # JDK 설치 | |
| - name: Set up JDK 17 | |
| uses: actions/setup-java@v1 | |
| with: | |
| java-version: 17 | |
| - name: make application.yml | |
| run: | | |
| mkdir -p ./src/main/resources | |
| cd ./src/main/resources | |
| touch ./application.yml | |
| echo "${{ secrets.APPLICATION_PROD }}" > ./application.yml | |
| # Gradle Build | |
| - name: Build with Gradle | |
| run: ./gradlew build | |
| # DockerHub 로그인 | |
| - name: Login to DockerHub | |
| uses: docker/login-action@v1 | |
| with: | |
| username: ${{ secrets.DOCKER_USERNAME }} | |
| password: ${{ secrets.DOCKER_HUB_TOKEN }} | |
| # DockerHub Push | |
| - name: Build and Push Docker image | |
| run: | | |
| docker build -t ${{ secrets.DOCKER_USERNAME }}/name-solver-prod . | |
| docker push ${{ secrets.DOCKER_USERNAME }}/name-solver-prod | |
| deploy: | |
| runs-on: ubuntu-latest | |
| needs: build | |
| steps: | |
| # AWS 배포 | |
| - name: SSH to EC2 and deploy | |
| uses: appleboy/[email protected] | |
| with: | |
| host: ${{ secrets.EC2_HOST }} | |
| username: ${{ secrets.EC2_USER }} | |
| key: ${{ secrets.EC2_SSH_PRIVATE_KEY }} | |
| script: | | |
| IMAGE_NAME=${{ secrets.DOCKER_USERNAME }}/name-solver-prod | |
| CONTAINER_NAME=name-solver-prod | |
| # 기존 컨테이너 중지 및 삭제 | |
| sudo docker stop $CONTAINER_NAME || true | |
| sudo docker rm $CONTAINER_NAME || true | |
| # 기존 이미지 삭제 | |
| sudo docker rmi $IMAGE_NAME || true | |
| # 최신 이미지 가져오기 | |
| sudo docker pull $IMAGE_NAME | |
| # 새 컨테이너 실행 | |
| sudo docker run -d \ | |
| --name $CONTAINER_NAME \ | |
| -p 80:8080 \ | |
| -e SPRING_PROFILES_ACTIVE=prod \ | |
| $IMAGE_NAME |