diff --git a/.github/workflows/cd-dev.yml b/.github/workflows/cd-dev.yml index 721414b..448fc6c 100644 --- a/.github/workflows/cd-dev.yml +++ b/.github/workflows/cd-dev.yml @@ -2,9 +2,8 @@ name: CD - Deploy to Production Server on: push: - branches: [ "dev" ] # main 브랜치 푸시 시 실행 + branches: [ "dev" ] # dev 브랜치에 푸시 시 실행 -# flow에서 사용할 변수 env: AWS_REGION: ap-northeast-2 S3_BUCKET_NAME: meerket-bucket @@ -13,7 +12,6 @@ env: permissions: write-all -#여기서부터 build job jobs: build: runs-on: ubuntu-latest @@ -24,38 +22,35 @@ jobs: - name: Checkout uses: actions/checkout@v4 - # 2) JDK 17 셋팅 + # 2) JDK 17 설정 - name: Set up JDK 17 uses: actions/setup-java@v4 with: java-version: '17' distribution: 'temurin' - # 2.5) secret설정한 env 등록 + # 3) .env 파일 생성 - name: Create .env file from Secret run: | - echo "${{ secrets.ENV_PROD}}" | base64 --decode > .env - # # 4) gradle 테스트 빌드 - # - name: Build Test with Gradle - # run: ./gradlew test -i - # # run: ./gradlew clean build -i - # # working-directory: ${{ env.working-directory }} + echo "${{ secrets.ENV_PROD }}" | base64 --decode > ./meerket/.env - # 3) gradlew 권한 설정 + # 4) Firebase JSON 키 생성 + - name: Create Firebase JSON Key + uses: jsdaniell/create-json@v1.2.2 + with: + name: "meerket-83e38-firebase-adminsdk-gyt9i-d2df62fdf4.json" + json: ${{ secrets.FIREBASE_SERVICE_KEY }} + dir: './meerket/meerket-application/src/main/resources' + + # 5) gradlew 실행 권한 설정 - name: Grant execute permission for gradlew - run: chmod +x ./meerket/gradlew # gradlew에 실행 권한 부여 - + run: chmod +x ./meerket/gradlew + # 6) Gradle 빌드 - name: Build with Gradle working-directory: ./meerket run: | - echo "Setting execute permission for gradlew" - chmod +x ./gradlew - - echo "Cleaning and building the project" ./gradlew clean build -x test --no-daemon --info - - echo "Verifying JAR file generation..." if [ -f ./meerket-application/build/libs/meerket-application-0.0.1.jar ]; then echo "JAR file generated successfully!" else @@ -63,55 +58,18 @@ jobs: exit 1 fi - - - - # 여기서부터 배포 job deploy: - name: deploy + name: Deploy runs-on: ubuntu-latest environment: production - needs: [ build ] # test와 build 작업이 성공적으로 완료된 경우에만 실행 + needs: [ build ] # build 작업 완료 후 실행 steps: # 1) 기본 체크아웃 - name: Checkout uses: actions/checkout@v3 - # 2) JDK 17 셋팅 - - name: Set up JDK 17 - uses: actions/setup-java@v3 - with: - java-version: '17' - distribution: 'temurin' - - # 2.5) secret설정한 env 등록 - - name: Create .env file from Secret - run: | - echo "${{ secrets.ENV_PROD }}" | base64 --decode > .env - # 2.5) secret 설정한 firesbase json key 등록 - - - name: create-json - uses: jsdaniell/create-json@v1.2.2 - with: - name: "meerket-83e38-firebase-adminsdk-gyt9i-d2df62fdf4.json" - json: ${{secrets.FIREBASE_SERVICE_KEY }} - dir: './meerket/meerket-application/src/main/resources' - - # 3) gradlew 권한 설정 - - name: Grant execute permission for gradlew - run: chmod +x ./meerket/gradlew # gradlew에 실행 권한 부여 - - # 4) gradle 테스트 빌드 - - name: Build with Gradle - working-directory: ./meerket - run: ./gradlew clean build -x test - # run: ./gradlew clean build -i - # working-directory: ${{ env.working-directory }} - - - - # AWS 인증 + # 2) AWS 인증 설정 - name: Configure AWS credentials uses: aws-actions/configure-aws-credentials@v1 with: @@ -119,10 +77,10 @@ jobs: aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY_DEV }} aws-region: ${{ env.AWS_REGION }} - # AWS S3에 업로드 + # 3) S3에 프로젝트 업로드 - name: Upload to AWS S3 run: | - cd meerket + cd meerket aws deploy push \ --application-name ${{ env.CODE_DEPLOY_APPLICATION_NAME }} \ --ignore-hidden-files \ @@ -130,7 +88,8 @@ jobs: --source . echo "S3 Upload completed. Verifying contents in S3..." aws s3 ls s3://meerket-bucket/ - # AWS EC2에 Deploy + + # 4) EC2에 배포 - name: Deploy to AWS EC2 from S3 run: | aws deploy create-deployment \