fix: Migrate from Oracle to MariaDB, update Dockerfiles to Gradle 8.1… #1
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: Backend Sitemap Continuous Delivery | |
| on: | |
| push: | |
| paths: | |
| - "backend/sitemap-service/**" | |
| branches: | |
| - main | |
| workflow_dispatch: | |
| permissions: write-all | |
| env: | |
| SITEMAP_JAR_TARGET_PATH: "backend/sitemap-service/build/libs/sitemap-service.jar" | |
| SITEMAP_DOCKER_TARGET_PATH: "backend/sitemap-service/Dockerfile.prod" | |
| SITEMAP_FOLDER_PATH: "/home/app/backend/sitemap-service" | |
| jobs: | |
| # 사전 작업 | |
| setup: | |
| runs-on: ubuntu-22.04 | |
| outputs: | |
| build-cache-key: ${{ steps.build-cache.outputs.key }} | |
| current-datetime: ${{ steps.datetime.outputs.datetime }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Get current date and time | |
| id: datetime | |
| run: echo "datetime=$(date '+%Y-%m-%d_%H-%M-%S')" >> $GITHUB_OUTPUT | |
| - name: Generate sitemap-service build cache key | |
| id: build-cache | |
| run: echo "key=$(echo build-${{ runner.os }}-gradle-${{ hashFiles('backend/sitemap-service/**/*.gradle*', 'backend/sitemap-service/**/gradle-wrapper.properties') }})" >> $GITHUB_OUTPUT | |
| - name: docker-compose.prod.yml hash key | |
| id: compose-hash | |
| run: | | |
| echo "DOCKER_KEY=$(sha256sum docker-compose.prod.yml | awk '{ print $1 }')" >> $GITHUB_ENV | |
| # 캐시가 존재하면 파일 전송 스킵 | |
| - name: Check cache for docker-compose.prod.yml | |
| id: cache-check | |
| uses: actions/cache@v4 | |
| with: | |
| path: ./docker-compose.prod.yml | |
| key: ${{ runner.os }}-docker-compose-prod-${{ env.DOCKER_KEY }} | |
| - name: Modify permissions | |
| run: chmod o+rwx docker-compose.prod.yml | |
| - name: Send docker-compose.prod.yml | |
| if: steps.cache-check.outputs.cache-hit != 'true' | |
| uses: appleboy/scp-action@master | |
| with: | |
| proxy_host: ${{ secrets.PROXY_HOST }} | |
| proxy_username: ${{ secrets.PROXY_HOST_USERNAME }} | |
| proxy_key: ${{ secrets.PROXY_HOST_KEY }} | |
| host: ${{ secrets.REMOTE_HOST }} | |
| username: ${{ secrets.REMOTE_HOST_USERNAME }} | |
| key: ${{ secrets.REMOTE_HOST_KEY }} | |
| source: "docker-compose.prod.yml" | |
| target: "/home/app" | |
| build: | |
| needs: setup | |
| runs-on: ubuntu-22.04 | |
| defaults: | |
| run: | |
| working-directory: backend/sitemap-service | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Gradle Caching | |
| id: cache-gradle | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| ~/.gradle/caches | |
| ~/.gradle/wrapper | |
| key: ${{ needs.setup.outputs.build-cache-key }} | |
| restore-keys: | | |
| ${{ runner.os }}-gradle- | |
| - name: Cache Check | |
| if: steps.cache-gradle.outputs.cache-hit == 'true' | |
| run: echo 'Gradle cache hit!' | |
| - name: Set up JDK 17 | |
| uses: actions/setup-java@v4 | |
| with: | |
| java-version: "17" | |
| distribution: "temurin" | |
| - name: Grant execute permission for gradlew | |
| run: chmod +x gradlew | |
| - name: Build with Gradle | |
| run: ./gradlew build -x test | |
| # (Actions에서 생성한 파일은 권한을 수정해야 scp로 보낼 때 오류가 안생김) | |
| - name: Modify permissions | |
| run: chmod o+rwx build/libs/sitemap-service.jar | |
| - name: Send jar | |
| uses: appleboy/scp-action@master | |
| with: | |
| proxy_host: ${{ secrets.PROXY_HOST }} | |
| proxy_username: ${{ secrets.PROXY_HOST_USERNAME }} | |
| proxy_key: ${{ secrets.PROXY_HOST_KEY }} | |
| host: ${{ secrets.REMOTE_HOST }} | |
| username: ${{ secrets.REMOTE_HOST_USERNAME }} | |
| key: ${{ secrets.REMOTE_HOST_KEY }} | |
| source: ${{ env.SITEMAP_JAR_TARGET_PATH }} | |
| target: ${{ env.SITEMAP_FOLDER_PATH }} | |
| strip_components: 4 | |
| - name: Modify permissions Dockerfile.prod | |
| run: chmod o+rwx Dockerfile.prod | |
| - name: Send Dockerfile.prod | |
| uses: appleboy/scp-action@master | |
| with: | |
| proxy_host: ${{ secrets.PROXY_HOST }} | |
| proxy_username: ${{ secrets.PROXY_HOST_USERNAME }} | |
| proxy_key: ${{ secrets.PROXY_HOST_KEY }} | |
| host: ${{ secrets.REMOTE_HOST }} | |
| username: ${{ secrets.REMOTE_HOST_USERNAME }} | |
| key: ${{ secrets.REMOTE_HOST_KEY }} | |
| source: ${{ env.SITEMAP_DOCKER_TARGET_PATH }} | |
| target: ${{ env.SITEMAP_FOLDER_PATH }} | |
| strip_components: 2 | |
| startup: | |
| needs: | |
| - build | |
| runs-on: ubuntu-22.04 | |
| concurrency: | |
| group: startup-lock | |
| cancel-in-progress: false | |
| steps: | |
| - name: Restart Server | |
| uses: appleboy/ssh-action@master | |
| with: | |
| proxy_host: ${{ secrets.PROXY_HOST }} | |
| proxy_username: ${{ secrets.PROXY_HOST_USERNAME }} | |
| proxy_key: ${{ secrets.PROXY_HOST_KEY }} | |
| host: ${{ secrets.REMOTE_HOST }} | |
| username: ${{ secrets.REMOTE_HOST_USERNAME }} | |
| key: ${{ secrets.REMOTE_HOST_KEY }} | |
| script: | | |
| cd /home/app | |
| docker compose -f docker-compose.prod.yml up -d --build sitemap-service |