diff --git a/.github/workflows/cd-backend.yml b/.github/workflows/cd-backend.yml new file mode 100644 index 00000000..16222d4b --- /dev/null +++ b/.github/workflows/cd-backend.yml @@ -0,0 +1,54 @@ +name: Java CD with Gradle and Docker + +on: + push: + branches: + - dev + +jobs: + deploy: + 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: make application-dev.yml + run: | + cd ./src/main/resources + touch ./application-dev.yml + echo "${{ secrets.DEV_YML }}" >> ./application-dev.yml + shell: bash + + - name: Grant execute permisson for gradlew + run: chmod +x gradlew + + - name: Build with Gradle (without Test) + run: ./gradlew clean build -x test --stacktrace + + - name: Docker Hub build & push + run: | + docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }} + docker build -t ${{ secrets.DOCKER_USERNAME }}/${{ secrets.DOCKER_REPO }} . + docker images + docker push ${{ secrets.DOCKER_USERNAME }}/${{ secrets.DOCKER_REPO }} + + - name: Deploy to Prod WAS Server + uses: appleboy/ssh-action@master + with: + host: ${{ secrets.WAS_HOST }} + username: ${{ secrets.WAS_USERNAME }} + key: ${{ secrets.WAS_KEY }} + port: ${{ secrets.WAS_SSH_PORT }} + script: | + cd /home/ubuntu/dobby-backend/ + sudo docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }} + sudo docker rm -f $(sudo docker ps -qa) + sudo docker pull ${{ secrets.DOCKER_USERNAME }}/${{ secrets.DOCKER_REPO }} + sudo docker-compose up -d + sudo docker image prune -f diff --git a/build.gradle.kts b/build.gradle.kts index fcac1659..0b8504e0 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -15,6 +15,10 @@ java { } } +tasks.jar { + enabled = false +} + configurations { compileOnly { extendsFrom(configurations.annotationProcessor.get()) diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 00000000..b2eedb49 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,12 @@ +version: '3' +services: + app: + container_name: dobby + user: "1000:1000" + image: jisoo708/dobby + expose: + - "8080" + ports: # host - container 포트 매핑 + - "8080:8080" + volumes: # host 로그 디렉토리 - container 로그 디렉토리 볼륨 마운트 + - ./logs:/logs