diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml new file mode 100644 index 0000000..3803d25 --- /dev/null +++ b/.github/workflows/cd.yml @@ -0,0 +1,57 @@ +name: Backend CD # actions 이름 + +on: + push: + branches: [ feat/infra-settings ] + +jobs: + deploy: + runs-on: ubuntu-latest + steps: + - name: Set up JDK 17 + uses: actions/setup-java@v3 + with: + java-version: 17 + distribution: 'adopt' + + - name: 저장소 Checkout + uses: actions/checkout@v3 + + - name: Gradlew 권한 부여 + run: chmod +x ./gradlew + + - name: 스프링부트 애플리케이션 빌드 + run: ./gradlew bootJar + + - name: 도커 이미지 빌드 + run: sudo docker build -t ${{ secrets.DOCKER_IMG }} --platform linux/amd64 . + + - name: 도커 이미지 push + run: | + sudo docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }} + sudo docker push ${{ secrets.DOCKER_IMG }} + + - name: scp file + uses: appleboy/scp-action@master + with: + host: ${{ secrets.EC2_SERVER_HOST }} + username: ${{ secrets.EC2_USERNAME }} + key: ${{ secrets.PRIVATE_KEY }} + source: "docker-compose.yml" + target: "/home/ec2-user" + + - name: 배포 + uses: appleboy/ssh-action@v0.1.6 + with: + host: ${{ secrets.EC2_SERVER_HOST }} + username: ${{ secrets.EC2_USERNAME }} + key: ${{ secrets.PRIVATE_KEY }} + port: ${{ secrets.SSH_PORT }} + script: | + touch ./docker-compose.yml + echo "${{ secrets.DOCKER_COMPOSE }}" > ./docker-compose.yml + sudo docker stop $(sudo docker ps -a -q) + sudo docker rm -f $(sudo docker ps -qa) + sudo docker pull ${{ secrets.DOCKER_IMG }} + sudo docker-compose -f docker-compose.yml up -d + sudo docker image prune -f