Skip to content

Wedit FE CD

Wedit FE CD #10

Workflow file for this run

name: Wedit FE CD
on:
workflow_run:
workflows: ["Wedit FE CI"]
types:
- completed
branches: [ "main" ]
permissions:
contents: read
jobs:
# ๋นŒ๋“œ ํŒŒ์ผ GitHub Artifact์—์„œ ๋‹ค์šด๋กœ๋“œ ํ›„ EC2 ๋ฐฐํฌ
deploy-to-ec2:
runs-on: self-hosted
if: ${{ github.event.workflow_run.conclusion == 'success' }}
steps:
# Debug: workflow_run ์ •๋ณด ์ถœ๋ ฅ
- name: Debug workflow_run info
run: |
echo "Workflow run id: ${{ github.event.workflow_run.id }}"
echo "Repository: ${{ github.repository }}"
echo "Branch: ${{ github.ref }}"
# 1. NextJS ๋นŒ๋“œ ํŒŒ์ผ GitHub Artifact์—์„œ ๋‹ค์šด๋กœ๋“œ
- name: Download Next.js build artifact
uses: actions/download-artifact@v4
with:
name: nextjs-build
path: build/next
repository: ${{ github.repository }}
run-id: ${{ github.event.workflow_run.id }}
github-token: ${{ secrets.GITHUB_TOKEN }}
# Debug: ๋‹ค์šด๋กœ๋“œ๋œ nextjs-build ์•„ํ‹ฐํŒฉํŠธ ํ™•์ธ
- name: Check downloaded nextjs-build artifact
run: ls -al build/next
# 2. public ๋””๋ ‰ํ† ๋ฆฌ GitHub Artifact์—์„œ ๋‹ค์šด๋กœ๋“œ
- name: Download public assets artifact
uses: actions/download-artifact@v4
with:
name: public-assets
path: build/public
repository: ${{ github.repository }}
run-id: ${{ github.event.workflow_run.id }}
github-token: ${{ secrets.GITHUB_TOKEN }}
# 3. Storybook ๋นŒ๋“œ ํŒŒ์ผ GitHub Artifact์—์„œ ๋‹ค์šด๋กœ๋“œ
- name: Download Storybook build artifact
uses: actions/download-artifact@v4
with:
name: storybook-build
path: build/storybook
repository: ${{ github.repository }}
run-id: ${{ github.event.workflow_run.id }}
github-token: ${{ secrets.GITHUB_TOKEN }}
# 4. ํŒจํ‚ค์ง€ ํŒŒ์ผ GitHub Artifact์—์„œ ๋‹ค์šด๋กœ๋“œ
- name: Download package files artifact
uses: actions/download-artifact@v4
with:
name: package-files
path: build/package
repository: ${{ github.repository }}
run-id: ${{ github.event.workflow_run.id }}
github-token: ${{ secrets.GITHUB_TOKEN }}
# 5. NextJS ์ž„์‹œ ๋””๋ ‰ํ† ๋ฆฌ ์ƒ์„ฑ ๋ฐ ๊ถŒํ•œ ์„ค์ •
- name: Prepare Next.js deploy directory
run: |
sudo mkdir -p -m 2775 /var/www/wedit-frontend-temp/.next
sudo mkdir -p -m 2775 /var/www/wedit-frontend-temp/public
sudo chown -R ubuntu:www-data /var/www/wedit-frontend-temp
sudo rm -rf /var/www/wedit-frontend-temp/.next/* /var/www/wedit-frontend-temp/.next/.[!.]*
sudo rm -rf /var/www/wedit-frontend-temp/public/* /var/www/wedit-frontend-temp/public/.[!.]*
# 6. NextJS ๋นŒ๋“œ ํŒŒ์ผ ๋ณต์‚ฌ ๋ฐ ๊ถŒํ•œ ์„ค์ •
- name: Copy Next.js build files
run: |
sudo cp -r build/next/* /var/www/wedit-frontend-temp/.next/
sudo cp -r build/next/.[!.]* /var/www/wedit-frontend-temp/.next/ 2>/dev/null || true
sudo cp -r build/public/* /var/www/wedit-frontend-temp/public/
sudo cp -r build/public/.[!.]* /var/www/wedit-frontend-temp/public/ 2>/dev/null || true
sudo chown -R ubuntu:www-data /var/www/wedit-frontend-temp
# 7. Storybook ์ž„์‹œ ๋””๋ ‰ํ† ๋ฆฌ ์ƒ์„ฑ ๋ฐ ๊ถŒํ•œ ์„ค์ •
- name: Prepare Storybook deploy directory
run: |
sudo mkdir -p -m 2775 /var/www/storybook-temp
sudo chown -R ubuntu:www-data /var/www/storybook-temp
sudo rm -rf /var/www/storybook-temp/* /var/www/storybook-temp/.[!.]*
# 8. Storybook ๋นŒ๋“œ ํŒŒ์ผ ๋ณต์‚ฌ ๋ฐ ๊ถŒํ•œ ์„ค์ •
- name: Copy Storybook build files
run: |
sudo cp -r build/storybook/* /var/www/storybook-temp/
sudo cp -r build/storybook/.[!.]* /var/www/storybook-temp/ 2>/dev/null || true
sudo chown -R ubuntu:www-data /var/www/storybook-temp
# 9. ๊ธฐ์กด NextJS ๋ฐฐํฌ ๋””๋ ‰ํ† ๋ฆฌ ์‚ญ์ œ ๋ฐ ์ž„์‹œ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์‹ค์ œ ๋ฐฐํฌ ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์Šค์™‘
- name: Swap Next.js deploy directory
run: |
sudo rm -rf /var/www/wedit-frontend/* /var/www/wedit-frontend/.[!.]*
sudo mv /var/www/wedit-frontend-temp/* /var/www/wedit-frontend/
sudo mv /var/www/wedit-frontend-temp/.[!.]* /var/www/wedit-frontend/ 2>/dev/null || true
# 10. ํŒจํ‚ค์ง€ ํŒŒ์ผ ๋ณต์‚ฌ ๋ฐ ๊ถŒํ•œ ์„ค์ •
- name: Copy package files to deploy directory
run: |
sudo cp build/package/package.json /var/www/wedit-frontend/
sudo cp build/package/package-lock.json /var/www/wedit-frontend/
sudo chown -R ubuntu:www-data /var/www/wedit-frontend/package.json /var/www/wedit-frontend/package-lock.json
# 11. ๊ธฐ์กด Storybook ๋ฐฐํฌ ๋””๋ ‰ํ† ๋ฆฌ ์‚ญ์ œ ๋ฐ ์ž„์‹œ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์‹ค์ œ ๋ฐฐํฌ ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์Šค์™‘
- name: Swap Storybook deploy directory
run: |
sudo rm -rf /var/www/storybook/* /var/www/storybook/.[!.]*
sudo mv /var/www/storybook-temp/* /var/www/storybook/
sudo mv /var/www/storybook-temp/.[!.]* /var/www/storybook/ 2>/dev/null || true
# 12. Next.js ์˜์กด์„ฑ ์„ค์น˜ ๋ฐ ๊ถŒํ•œ ์„ค์ •
- name: Install Next.js dependencies
run: |
sudo rm -rf /var/www/wedit-frontend/node_modules
cd /var/www/wedit-frontend
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"
/home/ubuntu/.nvm/versions/node/v20.18.0/bin/npm ci --production
sudo chown -R ubuntu:www-data /var/www/wedit-frontend/node_modules
# 13. Next.js ์•ฑ ์žฌ์‹œ์ž‘ (pm2)
- name: Restart Next.js app (pm2)
run: |
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"
cd /var/www/wedit-frontend
/home/ubuntu/.nvm/versions/node/v20.18.0/bin/pm2 reload wedit-frontend || /home/ubuntu/.nvm/versions/node/v20.18.0/bin/pm2 start npm --name wedit-frontend -- run start
/home/ubuntu/.nvm/versions/node/v20.18.0/bin/pm2 show wedit-frontend
# 14. Nginx reload
- name: Reload Nginx
run: sudo systemctl reload nginx