@@ -27,41 +27,41 @@ jobs:
2727 ls -ld .next/standalone || true # Hanya cek direktori induk
2828 ls -R .next/static || true
2929
30- - name : 4a. Transfer File Server (Standalone & Config)
31- uses : appleboy/scp-action@v0.1.7
32- with :
33- host : ${{ secrets.SSH_HOST }}
34- username : ${{ secrets.SSH_USER }}
35- key : ${{ secrets.SSH_PRIVATE_KEY }}
36- passphrase : ${{ secrets.SSH_PASSPHRASE }}
37- port : 22
38- rm : false
39- debug : true
40- # Hanya transfer server file dan folder standalone di sini
41- source : |
42- .next/standalone
43- package.json
44- app.js
45- target : ${{ secrets.DEPLOY_DIR }}
30+ - name : 4. Buat Deployment Tarball
31+ run : |
32+ set -e # Hentikan eksekusi jika perintah tar gagal
33+ echo "Membuat deployment tarball: deployment.tar.gz"
34+ # Membuat tarball berisi semua yang dibutuhkan untuk standalone deployment
35+ # --exclude='node_modules' (node_modules di root tidak perlu ditransfer)
36+ tar -zcf deployment.tar.gz \
37+ --exclude='node_modules' \
38+ .next/standalone \
39+ .next/static \
40+ package.json \
41+ app.js \
42+ public
43+ ls -l deployment.tar.gz # Verifikasi file dibuat dan ukurannya > 0
4644
47- - name : 4b. Transfer File Statis (Static & Public)
45+ - name : 4b. Verifikasi Tarball Sebelum Transfer
46+ run : |
47+ echo "Isi direktori kerja sebelum SCP:"
48+ ls -l deployment.tar.gz
49+
50+ - name : 5. Transfer File (Single Tarball) ke cPanel (via SCP)
4851 uses : appleboy/scp-action@v0.1.7
4952 with :
5053 host : ${{ secrets.SSH_HOST }}
5154 username : ${{ secrets.SSH_USER }}
5255 key : ${{ secrets.SSH_PRIVATE_KEY }}
5356 passphrase : ${{ secrets.SSH_PASSPHRASE }}
5457 port : 22
55- # rm: false di sini karena kita ingin membersihkan file di Langkah 5
5658 rm : false
5759 debug : true
58- # Hanya transfer aset statis di sini
59- source : |
60- .next/static
61- public
60+ # HANYA transfer satu file: tarball yang sudah kita buat
61+ source : deployment.tar.gz
6262 target : ${{ secrets.DEPLOY_DIR }}
6363
64- - name : 5 . Eksekusi Perintah di cPanel (via SSH)
64+ - name : 6 . Eksekusi Perintah di cPanel (via SSH)
6565 uses : appleboy/ssh-action@v1.0.3
6666 with :
6767 host : ${{ secrets.SSH_HOST }}
7575 source ${{ secrets.NODE_ENV_PATH }}
7676 cd ${{ secrets.DEPLOY_DIR }}
7777
78- # 2. EKSTRAKSI DAN PEMINDAHAN KONTEN (Langkah Kritis)
79- # Karena SCP menyalin folder .next/standalone, kita harus memindahkan isinya ke root.
78+ # 2. EKSTRAKSI TARBALL
79+ echo "Mengekstrak deployment.tar.gz..."
80+ tar -xzf deployment.tar.gz
81+ rm deployment.tar.gz # Hapus file tarball setelah diekstrak
82+
83+ # 3. EKSTRAKSI DAN PEMINDAHAN KONTEN (Langkah Kritis)
8084 echo "Memindahkan konten standalone ke root aplikasi..."
8185
8286 # Pindahkan KONTEN dari .next/standalone (server files, node_modules internal) ke DEPLOY_DIR
@@ -85,12 +89,12 @@ jobs:
8589 # Hapus folder sementara .next/standalone
8690 rm -rf .next/standalone
8791
88- # 3 . Instal Dependencies Produksi ke Path Khusus cPanel
92+ # 4 . Instal Dependencies Produksi ke Path Khusus cPanel
8993 echo "Memastikan node_modules diarahkan ke path yang benar: ${{ secrets.NPM_PREFIX_DIR }}/lib/node_modules"
9094 npm config set prefix ${{ secrets.NPM_PREFIX_DIR }}
9195 npm install --production
9296
93- # 4 . Restart Aplikasi
97+ # 5 . Restart Aplikasi
9498 echo "Restart Aplikasi (Trigger cPanel App Manager)..."
9599 touch app.js
96100
0 commit comments