157
157
current_release=$(readlink -f {{ $app_dir } } /current)
158
158
echo "Current release: $(basename $current_release)"
159
159
160
- # Ambil rilis sebelumnya
161
- previous_release =$(ls -dt {{ $releases_dir } } /* | sed -n '2p' )
160
+ # Ambil rilis terbaru (yang gagal)
161
+ latest_release =$(ls -dt {{ $releases_dir } } /* | head -n 1 )
162
162
163
- if [ -z "$previous_release " ]; then
164
- echo "No previous release found. Rollback aborted."
163
+ if [ -z "$latest_release " ]; then
164
+ echo "No latest release found. Rollback aborted."
165
165
exit 1
166
166
fi
167
167
168
- echo "Rolling back to: $(basename $previous_release)"
168
+ echo "Latest failed release: $(basename $latest_release)"
169
+
170
+ # Cek status migrasi untuk current release
171
+ echo "Checking migration status for current release"
172
+ current_migrated_count=$(cd $current_release && php artisan migrate:status | grep '\[1\]' | wc -l)
173
+
174
+ # Cek status migrasi untuk latest failed release
175
+ echo "Checking migration status for latest failed release"
176
+ latest_migrated_count=$(cd $latest_release && php artisan migrate:status | grep '\[1\]' | wc -l)
177
+
178
+ echo "Current release migrations count: $current_migrated_count"
179
+ echo "Latest failed release migrations count: $latest_migrated_count"
169
180
170
181
# Hapus symlink current
171
182
rm {{ $app_dir } } /current
172
183
173
184
# Buat symlink ke rilis sebelumnya
174
- ln -s $previous_release {{ $app_dir } } /current
175
-
176
- # Pindah ke rilis sebelumnya
177
- cd $previous_release
185
+ ln -s $latest_release {{ $app_dir } } /current
178
186
179
- # Rollback migrasi
180
- echo "Rolling back last batch of migrations"
181
- php artisan migrate:rollback --force
187
+ # Jika jumlah migrasi di current release lebih banyak dari latest release, lakukan rollback
188
+ if [ "$current_migrated_count" -gt "$latest_migrated_count" ]; then
189
+ echo "Rolling back last batch of migrations"
190
+ php artisan migrate:rollback --force
191
+ else
192
+ echo "No migrations to rollback, current migrations match or are fewer than latest release"
193
+ fi
182
194
183
195
# Bersihkan cache
184
196
echo "Clearing application cache"
190
202
echo "Restarting PHP-FPM"
191
203
sudo systemctl restart php8.3-fpm
192
204
193
- # Ambil rilis terakhir
194
- latest_release=$(ls -dt {{ $releases_dir } } /* | head -n 1)
195
- echo "Latest release failed: $(basename $latest_release)"
196
-
197
- if [ -z "$latest_release" ]; then
198
- echo "No latest release found. Rollback aborted."
199
- exit 1
200
- fi
201
-
202
- echo "Removing failed release"
205
+ # Hapus rilis yang gagal
206
+ echo "Removing failed release: $(basename $latest_release)"
203
207
rm -rf $latest_release
204
208
205
209
echo "Rollback completed successfully"
206
- @endtask
210
+ @endtask
0 commit comments