Skip to content

Commit 4a1f6c7

Browse files
committed
fix bug
1 parent 66314ed commit 4a1f6c7

1 file changed

Lines changed: 43 additions & 36 deletions

File tree

.github/workflows/deploy.yml

Lines changed: 43 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -87,83 +87,90 @@
8787
# echo "✅ Deployment complete!"
8888
# '
8989

90-
name: 🚀 Deploy Next.js to cPanel via SSH
90+
name: 🚀 Deploy to cPanel via SSH
9191

9292
on:
9393
push:
9494
branches:
95-
- main
95+
- main # ganti sesuai branch utama kamu
9696

9797
jobs:
9898
deploy:
9999
runs-on: ubuntu-latest
100100

101101
steps:
102-
- name: 🧭 Checkout Repository
102+
# --- 1️⃣ Checkout repository
103+
- name: 📦 Checkout Repository
103104
uses: actions/checkout@v4
104105

105-
- name: 🟢 Setup Node.js
106+
# --- 2️⃣ Setup Node.js
107+
- name: 🧰 Setup Node.js
106108
uses: actions/setup-node@v4
107109
with:
108110
node-version: 22
109111

110-
- name: 📦 Install Dependencies
111-
run: npm ci
112-
113-
- name: 🏗️ Build Next.js App
114-
run: npm run build
115-
116-
- name: 📂 Prepare build-output folder
112+
# --- 3️⃣ Build project
113+
- name: 🏗️ Build Project
117114
run: |
118-
mkdir -p build-output
119-
cp -r .next package.json package-lock.json next.config.* tsconfig.* public/ build-output/ 2>/dev/null || true
120-
echo "📁 Build output content:"
121-
ls -la build-output
115+
npm ci
116+
npm run build
122117
123-
- name: 🗜️ Compress build-output
118+
# --- 4️⃣ Compress build output
119+
- name: 📦 Compress build output
124120
run: |
125-
cd build-output
126-
tar -czf ../build-output.tar.gz .
127-
cd ..
128-
echo "✅ build-output.tar.gz created:"
129-
ls -lh build-output.tar.gz
121+
mkdir -p build-output
122+
cp -r .next package.json package-lock.json next.config.* public tsconfig.json build-output/
123+
tar -czf build-output.tar.gz -C build-output .
130124
125+
# --- 5️⃣ Upload build files to server
131126
- name: 📤 Upload compressed build to server
132127
uses: appleboy/scp-action@v0.1.7
133128
with:
134129
host: ${{ secrets.SSH_HOST }}
135130
username: ${{ secrets.SSH_USER }}
136131
key: ${{ secrets.SSH_PRIVATE_KEY }}
137132
passphrase: ${{ secrets.SSH_PASSPHRASE }}
138-
source: "build-output.tar.gz"
133+
port: ${{ secrets.SSH_PORT }}
134+
source: build-output.tar.gz
139135
target: ${{ secrets.DEPLOY_DIR }}
140136
overwrite: true
141137

138+
# --- 6️⃣ Extract & Deploy on server
142139
- name: ⚙️ Extract & Deploy on server
143140
uses: appleboy/ssh-action@v1.2.0
144141
with:
145142
host: ${{ secrets.SSH_HOST }}
146143
username: ${{ secrets.SSH_USER }}
147144
key: ${{ secrets.SSH_PRIVATE_KEY }}
148145
passphrase: ${{ secrets.SSH_PASSPHRASE }}
146+
port: ${{ secrets.SSH_PORT }}
149147
script: |
150148
echo "🚀 Starting deployment inside Node.js environment..."
151-
bash -lc '
152-
set -e
153-
echo "🔧 Activating environment..."
154-
source ${{ secrets.NODE_ENV_PATH }} || echo "⚠️ Failed to source NODE_ENV_PATH"
155149
156-
cd ${{ secrets.DEPLOY_DIR }}
157-
echo "📦 Extracting build-output.tar.gz..."
158-
tar -xzf build-output.tar.gz
159-
rm -f build-output.tar.gz
150+
# aktifkan environment Node.js di cPanel (jika ada)
151+
if [ -f "${{ secrets.NODE_ENV_PATH }}" ]; then
152+
echo "🔧 Activating Node.js environment..."
153+
source ${{ secrets.NODE_ENV_PATH }}
154+
else
155+
echo "⚠️ NODE_ENV_PATH not found, continuing without virtualenv"
156+
fi
157+
158+
cd ${{ secrets.DEPLOY_DIR }}
159+
160+
echo "📦 Extracting build..."
161+
tar -xzf build-output.tar.gz
162+
rm -f build-output.tar.gz
160163
161-
echo "📦 Installing dependencies..."
164+
echo "📦 Installing dependencies..."
165+
if command -v npm >/dev/null 2>&1; then
162166
npm ci --omit=dev
167+
else
168+
echo "❌ npm not found in environment! Check Node.js setup in cPanel"
169+
exit 1
170+
fi
163171
164-
echo "♻️ Restarting Node.js app..."
165-
mkdir -p tmp
166-
touch tmp/restart.txt || true
172+
echo "♻️ Restarting app..."
173+
mkdir -p tmp
174+
touch tmp/restart.txt || true
167175
168-
echo "✅ Deployment complete!"
169-
'
176+
echo "✅ Deployment complete!"

0 commit comments

Comments
 (0)