Skip to content

Commit efd9dff

Browse files
committed
feat(ci): add frontend deploy workflow for dev and prod (#1)
1 parent 763a41a commit efd9dff

1 file changed

Lines changed: 69 additions & 0 deletions

File tree

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
name: Frontend Deploy
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
- dev
8+
9+
jobs:
10+
deploy:
11+
runs-on: ubuntu-latest
12+
13+
steps:
14+
- name: Checkout
15+
uses: actions/checkout@v4
16+
17+
- name: Setup Node
18+
uses: actions/setup-node@v4
19+
with:
20+
node-version: 22
21+
cache: pnpm
22+
23+
- name: Setup pnpm
24+
uses: pnpm/action-setup@v4
25+
with:
26+
version: 9
27+
28+
- name: Install dependencies
29+
run: pnpm install --frozen-lockfile
30+
31+
- name: Build
32+
run: pnpm build
33+
34+
- name: Set deploy target
35+
id: vars
36+
run: |
37+
if [ "${GITHUB_REF_NAME}" = "main" ]; then
38+
echo "REMOTE_TEMP_DIR=/home/ubuntu/deploy/wefin-fe-prod" >> $GITHUB_OUTPUT
39+
echo "REMOTE_TARGET_DIR=/var/www/wefin-fe" >> $GITHUB_OUTPUT
40+
else
41+
echo "REMOTE_TEMP_DIR=/home/ubuntu/deploy/wefin-fe-dev" >> $GITHUB_OUTPUT
42+
echo "REMOTE_TARGET_DIR=/var/www/wefin-fe-dev" >> $GITHUB_OUTPUT
43+
fi
44+
45+
- name: Create SSH key
46+
run: |
47+
echo "${{ secrets.EC2_SSH_KEY }}" > private_key.pem
48+
chmod 600 private_key.pem
49+
50+
- name: Ensure remote temp directory exists
51+
run: |
52+
ssh -i private_key.pem -o StrictHostKeyChecking=no ${{ secrets.EC2_USER }}@${{ secrets.EC2_HOST }} \
53+
"mkdir -p ${{ steps.vars.outputs.REMOTE_TEMP_DIR }}"
54+
55+
- name: Upload dist to EC2
56+
run: |
57+
scp -i private_key.pem -o StrictHostKeyChecking=no -r dist/* \
58+
${{ secrets.EC2_USER }}@${{ secrets.EC2_HOST }}:${{ steps.vars.outputs.REMOTE_TEMP_DIR }}/
59+
60+
- name: Deploy on EC2
61+
run: |
62+
ssh -i private_key.pem -o StrictHostKeyChecking=no ${{ secrets.EC2_USER }}@${{ secrets.EC2_HOST }} << 'EOF'
63+
TARGET_DIR="${{ steps.vars.outputs.REMOTE_TARGET_DIR }}"
64+
TEMP_DIR="${{ steps.vars.outputs.REMOTE_TEMP_DIR }}"
65+
66+
rm -rf "${TARGET_DIR:?}"/*
67+
mkdir -p "$TARGET_DIR"
68+
cp -r "$TEMP_DIR"/* "$TARGET_DIR"/
69+
EOF

0 commit comments

Comments
 (0)