Merge pull request #139 from howWeather/perf/model-request #171
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: Java CI with Gradle | |
| on: | |
| push: | |
| branches: [ "main" ] | |
| pull_request: | |
| branches: [ "main" ] | |
| jobs: | |
| build: | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: read | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up JDK 17 | |
| uses: actions/setup-java@v4 | |
| with: | |
| java-version: '17' | |
| distribution: 'temurin' | |
| # Gradle wrapper에 실행 권한 부여 | |
| - name: Give Gradle wrapper execute permissions | |
| run: chmod +x ./gradlew | |
| - name: Setup Gradle | |
| uses: gradle/actions/setup-gradle@af1da67850ed9a4cedd57bfd976089dd991e2582 # v4.0.0 | |
| ### application.properties (main) 생성 | |
| - name: Generate application.properties (main) | |
| run: | | |
| mkdir -p src/main/resources | |
| echo "${{ secrets.APPLICATION_PROPERTIES }}" > src/main/resources/application.properties | |
| ### application.properties (test) 생성 | |
| - name: Generate application.properties (test) | |
| run: | | |
| mkdir -p src/test/resources | |
| echo "${{ secrets.APPLICATION_TEST_PROPERTIES }}" > src/test/resources/application.properties | |
| ### Gradle Build (테스트 제외) | |
| - name: Build with Gradle Wrapper | |
| run: ./gradlew build -x test | |
| ### Docker 로그인 | |
| - name: Docker login | |
| uses: docker/login-action@v2 | |
| with: | |
| username: ${{ secrets.DOCKERHUB_USERNAME }} | |
| password: ${{ secrets.DOCKERHUB_PASSWORD }} | |
| ### Docker 이미지 빌드 및 푸시 | |
| - name: Build and push Docker image | |
| run: | | |
| docker build -t ${{ secrets.DOCKERHUB_USERNAME }}/${{ secrets.DOCKERHUB_REPOSITORY }}:${{ github.sha }} -f ./Dockerfile . | |
| docker push ${{ secrets.DOCKERHUB_USERNAME }}/${{ secrets.DOCKERHUB_REPOSITORY }}:${{ github.sha }} | |
| ### EC2 배포 | |
| - name: Deploy to EC2 | |
| uses: appleboy/ssh-action@master | |
| with: | |
| host: ${{ secrets.HOST }} | |
| username: ${{ secrets.SSH_USERNAME }} | |
| key: ${{ secrets.SSH_PRIVATE_KEY }} | |
| script: | | |
| echo "Starting deployment..." | |
| cd ~/howWeather-backend | |
| echo "Pulling latest changes from main branch..." | |
| git fetch --all | |
| git reset --hard origin/main | |
| echo "Pulling latest Docker image..." | |
| docker pull ${{ secrets.DOCKERHUB_USERNAME }}/${{ secrets.DOCKERHUB_REPOSITORY }}:${{ github.sha }} | |
| echo "Setting environment variables..." | |
| cat > .env <<EOL | |
| SPRING_DATASOURCE_URL=${{ secrets.SPRING_DATASOURCE_URL }} | |
| SPRING_DATASOURCE_USERNAME=${{ secrets.SPRING_DATASOURCE_USERNAME }} | |
| SPRING_DATASOURCE_PASSWORD=${{ secrets.SPRING_DATASOURCE_PASSWORD }} | |
| DOCKERHUB_USERNAME=${{ secrets.DOCKERHUB_USERNAME }} | |
| DOCKERHUB_REPOSITORY=${{ secrets.DOCKERHUB_REPOSITORY }} | |
| GITHUB_SHA=${{ github.sha }} | |
| DOCKER_IMAGE=${{ secrets.DOCKERHUB_USERNAME }}/${{ secrets.DOCKERHUB_REPOSITORY }}:${{ github.sha }} | |
| JWT_SECRET_KEY=${{ secrets.JWT_SECRET_KEY }} | |
| POSTGRES_DB=${{ secrets.POSTGRES_DB }} | |
| JWT_EXPIRATION_ACCESS=${{ secrets.JWT_EXPIRATION_ACCESS }} | |
| JWT_EXPIRATION_REFRESH=${{ secrets.JWT_EXPIRATION_REFRESH }} | |
| OPENWEATHER_API_KEY=${{ secrets.WEATHER_SERVICE_KEY }} | |
| FCM_SERVICE_ACCOUNT_FILE=${{ secrets.FCM_SERVICE_ACCOUNT_FILE }} | |
| EOL | |
| echo "Stopping spring-boot-app container..." | |
| docker-compose --env-file .env stop app || true | |
| echo "Removing spring-boot-app container..." | |
| docker-compose --env-file .env rm -f app || true | |
| echo "Recreating spring-boot-app service with docker-compose..." | |
| docker-compose --env-file .env up -d --no-deps --build app | |
| echo "Checking Docker containers..." | |
| docker-compose ps | |
| echo "Deployment completed successfully!" | |
| dependency-submission: | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: write | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up JDK 17 | |
| uses: actions/setup-java@v4 | |
| with: | |
| java-version: '17' | |
| distribution: 'temurin' | |
| - name: Generate and submit dependency graph | |
| uses: gradle/actions/dependency-submission@af1da67850ed9a4cedd57bfd976089dd991e2582 # v4.0.0 |