diff --git a/.github/workflows/CICD.yml b/.github/workflows/CICD.yml index 89d6acb..7ecf470 100644 --- a/.github/workflows/CICD.yml +++ b/.github/workflows/CICD.yml @@ -13,17 +13,16 @@ jobs: node-version: [20.x] steps: - - name: πŸ“‚ 리포지토리 체크아웃 + - name: πŸ“‚ 리포지토리 체크아웃 uses: actions/checkout@v4 - name: βš™οΈ Node.js ${{ matrix.node-version }} μ„€μ • uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} - cache: 'npm' # 이 μΊμ‹œλŠ” λŸ¬λ„ˆμ˜ μΊμ‹œμ΄λ©°, λΉŒλ“œ 속도 ν–₯상에 도움을 μ€λ‹ˆλ‹€. + cache: 'npm' - - name: πŸ“¦ μ˜μ‘΄μ„± μ„€μΉ˜ (λŸ¬λ„ˆ μž‘μ—… 곡간에 μ„€μΉ˜) - # 이 μŠ€ν…μ—μ„œ λͺ¨λ“  μ˜μ‘΄μ„±μ΄ λŸ¬λ„ˆμ˜ μž„μ‹œ 디렉토리에 μ„€μΉ˜λ©λ‹ˆλ‹€. + - name: πŸ“¦ μ˜μ‘΄μ„± μ„€μΉ˜ run: npm ci - name: βš™οΈ ν”„λ‘œμ νŠΈ λΉŒλ“œ @@ -31,27 +30,13 @@ jobs: - name: βœ… ν…ŒμŠ€νŠΈ μ‹€ν–‰ run: npm test - + - name: πŸš€ EC2에 배포 run: | - # EC2의 ν”„λ‘œμ νŠΈ λ””λ ‰ν† λ¦¬λ‘œ 이동 cd ~/RefHub_BE - - # 🚨 μ€‘μš”: κΈ°μ‘΄ node_modules 폴더가 μžˆλ‹€λ©΄ λ¨Όμ € μ‚­μ œν•˜μ—¬ 곡간을 ν™•λ³΄ν•˜κ³  쀑볡 μ„€μΉ˜ λ°©μ§€ - if [ -d "node_modules" ]; then - echo "κΈ°μ‘΄ ~/RefHub_BE/node_modules μ‚­μ œ 쀑..." - rm -rf node_modules - fi - - # μ΅œμ‹  μ½”λ“œ pull git pull --no-rebase origin ${{ github.ref_name }} - - # 🚨 핡심 λ³€κ²½: EC2 μ„œλ²„μ—μ„œ npm install을 μ œκ±°ν•˜κ³ , λŒ€μ‹  λŸ¬λ„ˆμ—μ„œ μ„€μΉ˜λœ node_modulesλ₯Ό 볡사 - # ${{ github.workspace }}λŠ” GitHub Actions λŸ¬λ„ˆμ˜ ν˜„μž¬ μž‘μ—… 디렉토리 (즉, npm ciκ°€ μ‹€ν–‰λœ κ³³) - echo "λŸ¬λ„ˆμ˜ node_modulesλ₯Ό EC2 ν”„λ‘œμ νŠΈλ‘œ 볡사 쀑..." - cp -r ${{ github.workspace }}/node_modules . # ν˜„μž¬ 디렉토리(~/RefHub_BE)둜 볡사 - - # PM2 ecosystem 파일 생성 및 PM2 λͺ…λ Ή μ‹€ν–‰ (κΈ°μ‘΄κ³Ό 동일) + npm install + if [[ "${{ github.ref_name }}" == "main" ]]; then echo "운영용 ecosystem.prod.config.cjs 생성" echo "module.exports = { @@ -74,11 +59,13 @@ jobs: S3_BASE_URL: '${{ secrets.S3_BASE_URL }}', EXTENSION_ID: '${{ vars.EXTENSION_ID }}', KAKAO_REST_API_KEY: '${{ secrets.KAKAO_REST_API_KEY }}', - KAKAO_REDIRECT_URI: '${{ secrets.KAKAO_REDIRECT_URI_PROD }}' + KAKAO_REDIRECT_URI: '${{ secrets.KAKAO_REDIRECT_URI }}' } }] };" > ecosystem.prod.config.cjs + pm2 start ecosystem.prod.config.cjs --only app-prod || pm2 restart app-prod + else echo "개발용 ecosystem.dev.config.cjs 생성" echo "module.exports = { @@ -101,21 +88,11 @@ jobs: S3_BASE_URL: '${{ secrets.S3_BASE_URL }}', EXTENSION_ID: '${{ vars.EXTENSION_ID }}', KAKAO_REST_API_KEY: '${{ secrets.KAKAO_REST_API_KEY }}', - KAKAO_REDIRECT_URI: '${{ secrets.KAKAO_REDIRECT_URI_DEV }}' + KAKAO_REDIRECT_URI: '${{ secrets.KAKAO_REDIRECT_URI }}' } }] };" > ecosystem.dev.config.cjs + pm2 start ecosystem.dev.config.cjs --only app-dev || pm2 restart app-dev fi shell: bash - - - name: πŸ—‘οΈ λŸ¬λ„ˆ μž‘μ—… 곡간 정리 (배포 μ™„λ£Œ ν›„) - # 이 μŠ€ν…μ€ 배포 성곡/μ‹€νŒ¨μ™€ λ¬΄κ΄€ν•˜κ²Œ 항상 μ‹€ν–‰λ˜μ–΄ λŸ¬λ„ˆμ˜ μž„μ‹œ 곡간을 λΉ„μ›λ‹ˆλ‹€. - if: always() - run: | - echo "λŸ¬λ„ˆ μž‘μ—… κ³΅κ°„μ˜ node_modules 및 μΊμ‹œ 정리 쀑..." - # λŸ¬λ„ˆμ˜ ν˜„μž¬ μž‘μ—… 디렉토리(μ—¬κΈ°μ„œλŠ” ~/actions-runner/_work/RefHub_BE/RefHub_BE/)에 μžˆλŠ” node_modules μ‚­μ œ - rm -rf ${{ github.workspace }}/node_modules - # npm μΊμ‹œλ„ μ •λ¦¬ν•˜μ—¬ ν˜Ήμ‹œ λͺ¨λ₯Ό 곡간 뢀쑱에 λŒ€λΉ„ - npm cache clean --force - shell: bash