Merge pull request #104 from S0L-V/main #119
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: Frontend Deploy | |
| on: | |
| push: | |
| branches: | |
| - main | |
| - dev | |
| jobs: | |
| deploy: | |
| runs-on: ubuntu-latest | |
| 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: 22 | |
| - name: Install dependencies | |
| run: pnpm install --frozen-lockfile | |
| - name: Set environment variables | |
| run: | | |
| if [ "${GITHUB_REF_NAME}" = "main" ]; then | |
| API_URL="${{ secrets.PROD_API_URL }}" | |
| TOSS_CLIENT_KEY="${{ secrets.PROD_TOSS_CLIENT_KEY }}" | |
| else | |
| API_URL="${{ secrets.DEV_API_URL }}" | |
| TOSS_CLIENT_KEY="${{ secrets.DEV_TOSS_CLIENT_KEY }}" | |
| fi | |
| if [ -z "$API_URL" ]; then | |
| echo "ERROR: API_URL secret is missing for branch ${GITHUB_REF_NAME}" >&2 | |
| exit 1 | |
| fi | |
| if [ -z "$TOSS_CLIENT_KEY" ]; then | |
| echo "ERROR: TOSS_CLIENT_KEY secret is missing for branch ${GITHUB_REF_NAME}" >&2 | |
| exit 1 | |
| fi | |
| API_URL="${API_URL%/}" | |
| WS_ORIGIN="${API_URL%/api}" | |
| { | |
| echo "VITE_API_BASE_URL=$API_URL" | |
| echo "VITE_WS_URL=$WS_ORIGIN/ws" | |
| echo "VITE_TOSS_CLIENT_KEY=$TOSS_CLIENT_KEY" | |
| } > .env.production | |
| - name: Build | |
| run: pnpm build | |
| - name: Set deploy target | |
| id: vars | |
| run: | | |
| if [ "${GITHUB_REF_NAME}" = "main" ]; then | |
| echo "REMOTE_TEMP_DIR=/home/ubuntu/deploy/wefin-fe-prod" >> $GITHUB_OUTPUT | |
| echo "REMOTE_TARGET_DIR=/var/www/wefin-fe" >> $GITHUB_OUTPUT | |
| else | |
| echo "REMOTE_TEMP_DIR=/home/ubuntu/deploy/wefin-fe-dev" >> $GITHUB_OUTPUT | |
| echo "REMOTE_TARGET_DIR=/var/www/wefin-fe-dev" >> $GITHUB_OUTPUT | |
| fi | |
| - name: Create SSH key | |
| run: | | |
| echo "${{ secrets.EC2_SSH_KEY }}" > private_key.pem | |
| chmod 600 private_key.pem | |
| - name: Prepare remote temp directory | |
| run: | | |
| ssh -i private_key.pem -o StrictHostKeyChecking=no \ | |
| ${{ secrets.EC2_USER }}@${{ secrets.EC2_HOST }} \ | |
| "mkdir -p ${{ steps.vars.outputs.REMOTE_TEMP_DIR }} && rm -rf ${{ steps.vars.outputs.REMOTE_TEMP_DIR }}/*" | |
| - name: Upload dist to EC2 | |
| run: | | |
| scp -i private_key.pem -o StrictHostKeyChecking=no -r dist/* \ | |
| ${{ secrets.EC2_USER }}@${{ secrets.EC2_HOST }}:${{ steps.vars.outputs.REMOTE_TEMP_DIR }}/ | |
| - name: Deploy on EC2 | |
| run: | | |
| ssh -i private_key.pem -o StrictHostKeyChecking=no \ | |
| ${{ secrets.EC2_USER }}@${{ secrets.EC2_HOST }} << EOF | |
| TARGET_DIR="${{ steps.vars.outputs.REMOTE_TARGET_DIR }}" | |
| TEMP_DIR="${{ steps.vars.outputs.REMOTE_TEMP_DIR }}" | |
| mkdir -p "\$TARGET_DIR" | |
| rm -rf "\$TARGET_DIR"/* | |
| cp -r "\$TEMP_DIR"/* "\$TARGET_DIR"/ | |
| EOF |