diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml index 0e0cbc46..6eb7750e 100644 --- a/.github/workflows/gradle.yml +++ b/.github/workflows/gradle.yml @@ -1,72 +1,82 @@ -name: Java CI with Gradle +name: Java CI/CD with Gradle on: + pull_request: + branches: ["develop"] push: - branches: [ "develop" ] + branches: ["develop"] jobs: - deploy: - runs-on: ubuntu-latest - + ci: + runs-on: ubuntu-lastest steps: - name: Checkout uses: actions/checkout@v3 - - name: Set up JDK 17 uses: actions/setup-java@v3 with: + java-version: '17' distribution: 'temurin' - - - name: make application.yml + + - name: Make application.yml run: | - cd ./src/main/resources - touch ./application.yml - echo "${{ secrets.APPLICATION_YML }}" > ./application.yml + cd ./src/main/resources + touch ./application.yml + echo "${{ secrets.APPLICATION_YML }}" > ./application.yml - name: Grant execute permission for gradlew and build run: | - chmod +x ./gradlew - ./gradlew clean - ./gradlew build - - # Docker 이미지 Build (2) - - name: docker image build - run: docker build -t ${{ secrets.DOCKER_USERNAME }}/spring-docker --pull --no-cache --platform linux/amd64 . + chmod +x ./gradlew + ./gradlew clean + ./gradlew build + cd: + runs-on: ubuntu-latest + needs: ci + steps: + - name: Checkout + uses: actions/checkout@v3 - # DockerHub Login (3) - - name: docker login - uses: docker/login-action@v2 - with: - username: ${{ secrets.DOCKER_USERNAME }} - password: ${{ secrets.DOCKER_PASSWORD }} + - name: Set up JDK 17 + uses: actions/setup-java@v3 + with: + java-version: '17' + distribution: 'temurin' - # Docker Hub push (4) - - name: docker Hub push - run: docker push ${{ secrets.DOCKER_USERNAME }}/sponus-docker + # Docker image Build (2) + - name: Docker image build + run: docker build -t ${{ secrets.DOCKER_USERNAME }}/sponus-docker --pull --no-cache --platform linux/amd64 . - # AWS EC2 Server Connect & Docker 명령어 실행 (8) - - name: Deploy - uses: appleboy/ssh-action@master - with: - host: ${{ secrets.HOST }} # EC2 인스턴스 퍼블릭 DNS - username: ec2-user - key: ${{ secrets.PRIVATE_KEY }} # pem 키 - - # 도커 작업 - script: | - sudo docker stop sponus-docker - sudo docker rm sponus-docker - sudo docker rmi ${{ secrets.DOCKER_USERNAME }}/sponus-docker - sudo docker pull ${{ secrets.DOCKER_USERNAME }}/sponus-docker + # DockerHub Login (3) + - name: Docker login + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + + # Docker Hub push (4) + - name: Docker Hub push + run: docker push ${{ secrets.DOCKER_USERNAME }}/sponus-docker - #redis - sudo docker stop my-redis - sudo docker rm my-redis - sudo docker rmi redis + # AWS EC2 Server Connect & Docker command execution (8) + - name: Deploy + uses: appleboy/ssh-action@master + with: + host: ${{ secrets.HOST }} # EC2 instance public DNS + username: ec2-user + key: ${{ secrets.PRIVATE_KEY }} # pem key + script: | + sudo docker stop sponus-docker + sudo docker rm sponus-docker + sudo docker rmi ${{ secrets.DOCKER_USERNAME }}/sponus-docker + sudo docker pull ${{ secrets.DOCKER_USERNAME }}/sponus-docker - sudo docker pull redis - sudo docker network create my-network - sudo docker run --name my-redis --network my-network -d redis - sudo docker run -it -d -p 8080:8080 --name sponus-docker -e TZ=Asia/Seoul --network my-network ${{ secrets.DOCKER_USERNAME }}/sponus-docker + sudo docker stop my-redis + sudo docker rm my-redis + sudo docker rmi redis + + sudo docker pull redis + sudo docker network create my-network + sudo docker run --name my-redis --network my-network -d redis + sudo docker run -it -d -p 8080:8080 --name sponus-docker -e TZ=Asia/Seoul --network my-network ${{ secrets.DOCKER_USERNAME }}/sponus-docker