[#15] Feat: 로그인/회원가입 API 구현 #5
Workflow file for this run
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: TripTalk CI/CD with Gradle, Test, and Docker | |
| on: | |
| workflow_dispatch: | |
| push: | |
| branches: [ "develop" ] | |
| pull_request: | |
| branches: [ "develop" ] | |
| permissions: | |
| contents: read | |
| jobs: | |
| CI-CD: | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: read | |
| steps: | |
| # 1. 코드 체크아웃 | |
| - uses: actions/checkout@v4 | |
| # 2. JDK 21 설정 | |
| - name: Set up JDK 21 | |
| uses: actions/setup-java@v4 | |
| with: | |
| java-version: '21' | |
| distribution: 'temurin' | |
| # 3. Gradle 캐시 | |
| - name: Setup Gradle | |
| uses: gradle/actions/setup-gradle@v3 | |
| with: | |
| path: | | |
| ~/.gradle/caches | |
| ~/.gradle/wrapper | |
| key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} | |
| restore-keys: | | |
| ${{ runner.os }}-gradle- | |
| # 4. application.yml 생성 | |
| - name: Make application.yml from Secret | |
| run: | | |
| mkdir -p ./src/main/resources | |
| echo "${{ secrets.APPLICATION_DEV_YML_BASE64 }}" | base64 --decode > ./src/main/resources/application.yml | |
| echo "=== [DEBUG] application.yml ===" | |
| cat ./src/main/resources/application.yml | |
| # 5. gradlew 권한 부여 | |
| - name: Grant Execute Permission For Gradlew | |
| run: chmod +x gradlew | |
| # 6. Gradle build | |
| - name: Build Gradle (without test) | |
| run: ./gradlew bootJar -x test | |
| # 7. Docker Build & Push | |
| - name: Docker Build & Push | |
| run: | | |
| docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }} | |
| docker build -t ${{ secrets.DOCKER_USERNAME }}/triptalk-spring:latest . | |
| docker push ${{ secrets.DOCKER_USERNAME }}/triptalk-spring:latest | |
| # 8. 서버 배포 (Dev 서버) | |
| - name: Deploy to Dev | |
| uses: appleboy/ssh-action@master | |
| if: contains(github.ref,'develop') | |
| with: | |
| key: ${{ secrets.PRIVATE_KEY }} | |
| host: ${{ secrets.HOST }} | |
| username: ${{ secrets.USERNAME }} | |
| port: 22 | |
| script: | | |
| cd ~/BE_SpringBoot | |
| # 기존 컨테이너 정리 | |
| docker-compose -f docker-compose.yml down || true | |
| # 최신 이미지 pull | |
| docker pull ${{ secrets.DOCKER_USERNAME }}/triptalk-spring:latest | |
| # 컨테이너 재시작 | |
| docker-compose -f docker-compose.yml up -d --remove-orphans | |
| # 사용하지 않는 이미지 삭제 | |
| docker image prune -f | |
| # 9. 현재 시간 출력 | |
| current-time: | |
| needs: CI-CD | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Get Current Time | |
| uses: 1466587594/get-current-time@v2 | |
| id: current-time | |
| with: | |
| format: YYYY-MM-DDTHH:mm:ss | |
| utcOffset: "+09:00" | |
| - name: Print Current Time | |
| run: echo "Current Time=${{steps.current-time.outputs.formattedTime}}" |