Skip to content

Commit ddf24b4

Browse files
committed
build prereqs
1 parent 510c240 commit ddf24b4

File tree

1 file changed

+75
-15
lines changed

1 file changed

+75
-15
lines changed

.github/workflows/deploy-express.yml

Lines changed: 75 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ on:
33
workflow_dispatch:
44
inputs:
55
reason:
6-
description: 'Reason for running the workflow'
6+
description: 'Reason for deploying Express API'
77
required: true
88
default: 'Manual trigger'
99
jobs:
@@ -13,37 +13,90 @@ jobs:
1313
- run: echo "🎉 The job was triggered by a ${{ github.event_name }} on commit ${{ github.SHA }}"
1414
- name: Check out repository code
1515
uses: actions/checkout@v4
16+
1617
- name: Set up Node.js
17-
uses: actions/setup-node@v3
18+
uses: actions/setup-node@v4
1819
with:
1920
node-version: 18
2021
cache: 'yarn'
21-
- name: SSH to DO
22+
- name: Enable Corepack
23+
run: corepack enable
24+
25+
- name: Configure SSH key
2226
uses: shimataro/ssh-key-action@v2
2327
with:
2428
key: ${{ secrets.DO_SSH_KEY }}
2529
name: id_rsa
2630
known_hosts: ${{ secrets.KNOWN_HOSTS }}
27-
- name: Build
28-
env:
29-
YARN_IGNORE_NODE: 1
31+
32+
- name: Install dependencies
33+
run: yarn install
34+
35+
- name: Build workspace dependencies
36+
run: |
37+
# Build common package if it exists
38+
if [ -d "./packages/common" ]; then
39+
echo "Building @vue-skuilder/common package..."
40+
cd ./packages/common
41+
yarn build
42+
cd ../..
43+
fi
44+
45+
# Build db package if it exists
46+
if [ -d "./packages/db" ]; then
47+
echo "Building @vue-skuilder/db package..."
48+
cd ./packages/db
49+
yarn build
50+
cd ../..
51+
fi
52+
53+
- name: Build Express API
3054
run: |
31-
npm install -g yarn@1.22.19
3255
cd ./packages/express
33-
yarn remove @types/jest
34-
# yarn remove @types/pouchdb
3556
yarn build
57+
3658
- name: Deploy and run
3759
run: |
3860
# Create necessary directories
39-
ssh ${{ secrets.DO_USERNAME }}@eduquilt.com mkdir -p /home/skuilder/dist/express/${{github.SHA}}
40-
ssh ${{ secrets.DO_USERNAME }}@eduquilt.com mkdir -p /home/skuilder/dist/express/${{github.SHA}}/assets
61+
ssh ${{ secrets.DO_USERNAME }}@eduquilt.com mkdir -p /home/skuilder/dist/express/${{github.sha}}
62+
ssh ${{ secrets.DO_USERNAME }}@eduquilt.com mkdir -p /home/skuilder/dist/express/${{github.sha}}/assets
4163
4264
# Copy build artifacts and dependencies
43-
rsync -rl ./packages/express/dist/ ${{ secrets.DO_USERNAME }}@eduquilt.com:/home/skuilder/dist/express/${{github.SHA}}
44-
rsync -rl ./packages/express/assets/ ${{ secrets.DO_USERNAME }}@eduquilt.com:/home/skuilder/dist/express/${{github.SHA}}/assets
45-
rsync -rl ./packages/express/package.json ${{ secrets.DO_USERNAME }}@eduquilt.com:/home/skuilder/dist/express/${{github.SHA}}
46-
rsync -rl ./packages/express/node_modules/ ${{ secrets.DO_USERNAME }}@eduquilt.com:/home/skuilder/dist/express/${{github.SHA}}/node_modules
65+
rsync -rl ./packages/express/dist/ ${{ secrets.DO_USERNAME }}@eduquilt.com:/home/skuilder/dist/express/${{github.sha}}
66+
rsync -rl ./packages/express/assets/ ${{ secrets.DO_USERNAME }}@eduquilt.com:/home/skuilder/dist/express/${{github.sha}}/assets
67+
rsync -rl ./packages/express/package.json ${{ secrets.DO_USERNAME }}@eduquilt.com:/home/skuilder/dist/express/${{github.sha}}
68+
69+
# Handle workspace dependencies by copying them to the server
70+
if [ -d "./packages/common" ]; then
71+
echo "Copying @vue-skuilder/common package..."
72+
ssh ${{ secrets.DO_USERNAME }}@eduquilt.com mkdir -p /home/skuilder/dist/common/dist
73+
rsync -rl ./packages/common/dist/ ${{ secrets.DO_USERNAME }}@eduquilt.com:/home/skuilder/dist/common/dist
74+
rsync -rl ./packages/common/package.json ${{ secrets.DO_USERNAME }}@eduquilt.com:/home/skuilder/dist/common/
75+
fi
76+
77+
if [ -d "./packages/db" ]; then
78+
echo "Copying @vue-skuilder/db package..."
79+
ssh ${{ secrets.DO_USERNAME }}@eduquilt.com mkdir -p /home/skuilder/dist/db/dist
80+
rsync -rl ./packages/db/dist/ ${{ secrets.DO_USERNAME }}@eduquilt.com:/home/skuilder/dist/db/dist
81+
rsync -rl ./packages/db/package.json ${{ secrets.DO_USERNAME }}@eduquilt.com:/home/skuilder/dist/db/
82+
fi
83+
84+
# Replace workspace references with file paths
85+
TMP_PKG=$(cat ./packages/express/package.json | sed 's|"@vue-skuilder/common": "workspace:^"|"@vue-skuilder/common": "file:/home/skuilder/dist/common"|g' | sed 's|"@vue-skuilder/db": "workspace:^"|"@vue-skuilder/db": "file:/home/skuilder/dist/db"|g')
86+
echo "$TMP_PKG" > ./packages/express/temp-package.json
87+
rsync -rl ./packages/express/temp-package.json ${{ secrets.DO_USERNAME }}@eduquilt.com:/home/skuilder/dist/express/${{github.sha}}/package.json
88+
89+
# Install dependencies on the server
90+
ssh ${{ secrets.DO_USERNAME }}@eduquilt.com "cd /home/skuilder/dist/express/${{github.sha}} && yarn install --production"
91+
92+
# Install dependencies for workspace packages
93+
if [ -d "./packages/common" ]; then
94+
ssh ${{ secrets.DO_USERNAME }}@eduquilt.com "cd /home/skuilder/dist/common && yarn install --production"
95+
fi
96+
97+
if [ -d "./packages/db" ]; then
98+
ssh ${{ secrets.DO_USERNAME }}@eduquilt.com "cd /home/skuilder/dist/db && yarn install --production"
99+
fi
47100
48101
# Update symlink to new version
49102
ssh ${{ secrets.DO_USERNAME }}@eduquilt.com ln -sfn /home/skuilder/dist/express/${{github.SHA}} /home/skuilder/api
@@ -63,6 +116,7 @@ jobs:
63116
sleep 10s
64117
- name: Verify deployment
65118
run: |
119+
echo "Verifying Express API deployment..."
66120
max_retries=3
67121
retry_count=0
68122
while [ $retry_count -lt $max_retries ]; do
@@ -81,6 +135,12 @@ jobs:
81135
82136
if echo "$response" | grep -q "${{ github.SHA }}"; then
83137
echo "Success. Current version found in production"
138+
139+
# Log deployment success
140+
echo "✅ Express API deployed successfully with version ${{ github.SHA }}"
141+
echo "✅ Deployment triggered by: ${{ github.event.inputs.reason }}"
142+
echo "✅ Deployment timestamp: $(date -u)"
143+
84144
exit 0
85145
else
86146
echo "Current version not found in production. Retrying..."

0 commit comments

Comments
 (0)