refactor: 폴더 구조 개선 (#136) #77
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/CD with Gradle | |
| on: | |
| push: | |
| branches: [ "main" ] | |
| permissions: | |
| contents: read | |
| jobs: | |
| build-docker-image: | |
| runs-on: ubuntu-latest | |
| steps: | |
| # 소스코드 체크아웃 | |
| - uses: actions/checkout@v3 | |
| # JDK 17 설치 | |
| - name: Set up JDK 17 | |
| uses: actions/setup-java@v3 | |
| with: | |
| java-version: '17' | |
| distribution: 'temurin' | |
| # Gradle 실행 권한 부여 | |
| - name: Grant Execute Permission For Gradlew | |
| 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- | |
| # Gradle 빌드 (WAR 파일 생성) | |
| - name: Build With Gradle | |
| run: ./gradlew clean build -x test | |
| # Docker 이미지 빌드 (WAR → Tomcat 이미지에 복사) | |
| - name: docker image build | |
| run: docker build -t ${{ secrets.DOCKERHUB_USERNAME }}/dolfin-main . | |
| # Docker Hub 로그인 | |
| - name: docker login | |
| uses: docker/login-action@v2 | |
| with: | |
| username: ${{ secrets.DOCKERHUB_USERNAME }} | |
| password: ${{ secrets.DOCKERHUB_PASSWORD }} | |
| # Docker Hub로 이미지 푸시 | |
| - name: docker Hub push | |
| run: docker push ${{ secrets.DOCKERHUB_USERNAME }}/dolfin-main | |
| # AWS 자격 증명 주입 | |
| - name: Configure AWS credentials | |
| uses: aws-actions/configure-aws-credentials@v1 | |
| with: | |
| aws-access-key-id: ${{ secrets.ACCESS_KEY }} | |
| aws-secret-access-key: ${{ secrets.SECRET_KEY }} | |
| aws-region: ${{ secrets.REGION }} | |
| # S3로 Docker Compose 업로드 | |
| - name: Upload Docker Compose to S3 | |
| run: | | |
| aws s3 cp docker-compose.yml s3://${{ secrets.BUCKET_NAME }}/docker-compose.yml --region ${{ secrets.REGION }} | |
| # 오토스케일링 그룹 롤링 재배포 | |
| - name: Trigger ASG Rolling Update | |
| run: | | |
| aws autoscaling start-instance-refresh \ | |
| --auto-scaling-group-name ${{ secrets.ASG_NAME }} \ | |
| --region ${{ secrets.REGION }} \ | |
| --preferences '{"MinHealthyPercentage": 50}' |