fix: 조회수 한 시간 내 중복 조회 무시 #135
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: CI/CD Pipeline | |
| on: | |
| push: | |
| branches: [ "main", "develop" ] | |
| jobs: | |
| build-docker-image: | |
| name: Build docker image | |
| runs-on: ubuntu-latest | |
| steps: | |
| # 1. 코드 체크아웃 | |
| - name: Checkout code | |
| uses: actions/checkout@v3 | |
| # 2. Java 환경 설정 | |
| - name: Set up JDK 17 | |
| uses: actions/setup-java@v3 | |
| with: | |
| java-version: '17' | |
| distribution: 'temurin' | |
| # 3. Gradle Wrapper 실행 권한 추가 | |
| - name: Add execute permission for Gradle Wrapper | |
| run: chmod +x ./gradlew | |
| # Gradle 캐시 설정 | |
| - name: Gradle Caching | |
| uses: actions/cache@v3 | |
| with: | |
| path: | | |
| ~/.gradle/caches | |
| ~/.gradle/wrapper | |
| key: "${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}" | |
| restore-keys: | | |
| ${{ runner.os }}-gradle- | |
| - name: Ensure resources directory exists | |
| run: mkdir -p src/main/resources | |
| # application.yml 파일 생성 | |
| - name: Create application.yml | |
| run: | | |
| cd ./src/main/resources | |
| touch ./application.yml | |
| echo "${{ secrets.APPLICATION_YML }}" > ./application.yml | |
| # 4. 프로젝트 빌드 | |
| - name: Build with Gradle | |
| uses: gradle/gradle-build-action@v2 | |
| with: | |
| arguments: clean bootJar -Pspring.profiles.active=prod | |
| # 5. 빌드 결과 확인 (디버깅용) | |
| - name: Check build output | |
| run: ls -la build/libs/ | |
| # 6. Docker 이미지 빌드 | |
| - name: Build Docker Image | |
| run: docker build -t ${{ secrets.DOCKER_USERNAME }}/closit-app:${{ github.sha }} . | |
| # 7. Docker Hub 로그인 | |
| - name: Log in to Docker Hub | |
| uses: docker/login-action@v2 | |
| with: | |
| username: ${{ secrets.DOCKER_USERNAME }} | |
| password: ${{ secrets.DOCKER_PASSWORD }} | |
| # 8. Docker 이미지 푸시 | |
| - name: Push Docker Image | |
| run: docker push ${{ secrets.DOCKER_USERNAME }}/closit-app:${{ github.sha }} | |
| deploy-pipeline: | |
| needs: build-docker-image | |
| runs-on: ubuntu-latest | |
| steps: | |
| # 1. 코드 체크아웃 | |
| - name: Checkout code | |
| uses: actions/checkout@v3 | |
| # 2. AWS EC2에 배포 | |
| - name: Deploy to AWS EC2 | |
| uses: appleboy/[email protected] | |
| with: | |
| host: ${{ secrets.EC2_HOST }} | |
| username: ${{ secrets.EC2_USER }} | |
| key: ${{ secrets.EC2_PRIVATE_KEY }} | |
| script: | | |
| docker pull ${{ secrets.DOCKER_USERNAME }}/closit-app:${{ github.sha }} | |
| docker stop my-app || true | |
| docker rm my-app || true | |
| docker run -d -p 8080:8080 --name my-app \ | |
| -e TZ=Asia/Seoul \ | |
| -e SPRING_DATASOURCE_URL=jdbc:mysql://${{ secrets.RDS_ENDPOINT }}:3306/closit \ | |
| -e SPRING_DATASOURCE_USERNAME=${{ secrets.RDS_USERNAME }} \ | |
| -e SPRING_DATASOURCE_PASSWORD=${{ secrets.RDS_PASSWORD }} \ | |
| ${{ secrets.DOCKER_USERNAME }}/closit-app:${{ github.sha }} |