diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml new file mode 100644 index 00000000..0c763095 --- /dev/null +++ b/.github/workflows/gradle.yml @@ -0,0 +1,72 @@ +name: Java CI with Gradle + +on: + push: + branches: [ "develop" ] + +jobs: + deploy: + runs-on: ubuntu-latest + + 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 + run: | + 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 }}/sponus-docker --pull --no-cache . #image명 기입 + + + # 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 + + # 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 + + #redis + 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