Merge pull request #292 from WeGo-Together/hwanwook-fix/empty-page #243
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: Deploy Production to EC2 | |
| on: | |
| push: | |
| branches: | |
| - main | |
| concurrency: | |
| group: production-deploy | |
| cancel-in-progress: false | |
| jobs: | |
| ec2-production-deploy: | |
| runs-on: ubuntu-latest | |
| env: | |
| APP_DOMAIN: wego.monster | |
| APP_DIR: wego-production | |
| APP_PORT: 3000 | |
| PM2_APP_NAME: wego-production | |
| COMPRESSED_FILE_NAME: nextjs-app.tar.gz | |
| NPMRC_PATH: /home/ubuntu/.npmrc | |
| PNPM_STORE_PATH: /home/ubuntu/.pnpm-store | |
| SCRIPTS_DIR: /home/ubuntu/scripts/ec2 | |
| SETUP_SCRIPT: ec2-setup.sh | |
| DEPLOY_SCRIPT: ec2-deploy.sh | |
| NGINX_SCRIPT: ec2-nginx.sh | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Setup pnpm | |
| uses: pnpm/action-setup@v4 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: '20' | |
| cache: 'pnpm' | |
| - name: Install dependencies | |
| run: pnpm install --frozen-lockfile | |
| - name: Build Project | |
| run: pnpm run build | |
| env: | |
| NEXT_PUBLIC_API_BASE_URL: ${{ vars.NEXT_PUBLIC_API_BASE_URL }} | |
| - name: Compress Files | |
| run: tar -czvf ${{ env.COMPRESSED_FILE_NAME }} .next package.json pnpm-lock.yaml public next.config.ts | |
| - name: Send Scripts to EC2 | |
| uses: appleboy/[email protected] | |
| with: | |
| host: ${{ secrets.AWS_EC2_HOST }} | |
| username: ${{ secrets.AWS_EC2_USERNAME }} | |
| key: ${{ secrets.AWS_EC2_PEM_KEY }} | |
| source: scripts/ | |
| target: /home/ubuntu/ | |
| - name: Send Compress Files to EC2 | |
| uses: appleboy/[email protected] | |
| with: | |
| host: ${{ secrets.AWS_EC2_HOST}} | |
| username: ${{ secrets.AWS_EC2_USERNAME }} | |
| key: ${{ secrets.AWS_EC2_PEM_KEY }} | |
| source: ${{ env.COMPRESSED_FILE_NAME }} | |
| target: /home/ubuntu/${{ env.APP_DIR }}/build | |
| - name: Initial EC2 Setup | |
| uses: appleboy/ssh-action@v1 | |
| with: | |
| host: ${{ secrets.AWS_EC2_HOST}} | |
| username: ${{ secrets.AWS_EC2_USERNAME }} | |
| key: ${{ secrets.AWS_EC2_PEM_KEY }} | |
| envs: > | |
| NPMRC_PATH, PNPM_STORE_PATH, SCRIPTS_DIR, SETUP_SCRIPT | |
| script: | | |
| echo "Debug: SCRIPTS_DIR=$SCRIPTS_DIR" | |
| echo "Debug: SETUP_SCRIPT=$SETUP_SCRIPT" | |
| chmod +x $SCRIPTS_DIR/$SETUP_SCRIPT | |
| $SCRIPTS_DIR/$SETUP_SCRIPT "$NPMRC_PATH" "$PNPM_STORE_PATH" | |
| - name: Deploy Application | |
| uses: appleboy/ssh-action@v1 | |
| with: | |
| host: ${{ secrets.AWS_EC2_HOST }} | |
| username: ${{ secrets.AWS_EC2_USERNAME }} | |
| key: ${{ secrets.AWS_EC2_PEM_KEY }} | |
| envs: APP_DIR, APP_PORT, PM2_APP_NAME, COMPRESSED_FILE_NAME, SCRIPTS_DIR, DEPLOY_SCRIPT | |
| script: | | |
| chmod +x $SCRIPTS_DIR/$DEPLOY_SCRIPT | |
| $SCRIPTS_DIR/$DEPLOY_SCRIPT \ | |
| "$APP_DIR" \ | |
| "$APP_PORT" \ | |
| "$PM2_APP_NAME" \ | |
| "$COMPRESSED_FILE_NAME" | |
| - name: NGINX Setup | |
| uses: appleboy/ssh-action@v1 | |
| with: | |
| host: ${{ secrets.AWS_EC2_HOST }} | |
| username: ${{ secrets.AWS_EC2_USERNAME }} | |
| key: ${{ secrets.AWS_EC2_PEM_KEY }} | |
| envs: APP_DOMAIN, APP_PORT, SCRIPTS_DIR, NGINX_SCRIPT | |
| script: | | |
| chmod +x $SCRIPTS_DIR/$NGINX_SCRIPT | |
| $SCRIPTS_DIR/$NGINX_SCRIPT \ | |
| "main" \ | |
| "$APP_DOMAIN" \ | |
| "$APP_PORT" |