|
144 | 144 |
|
145 | 145 | <!-- rollback -->
|
146 | 146 | @task('rollback')
|
147 |
| - echo "Rolling back to previous release" |
| 147 | + echo "Starting rollback process" |
148 | 148 | cd {{ $app_dir }}
|
149 | 149 |
|
150 | 150 | # Cek apakah ada symlink current
|
|
154 | 154 | fi
|
155 | 155 |
|
156 | 156 | # Ambil rilis saat ini
|
157 |
| - current_release=$(readlink {{ $app_dir }}/current) |
158 |
| - |
159 |
| - # Ambil semua rilis dan urutkan secara descending |
160 |
| - releases=($(ls -dt {{ $releases_dir }}/*)) |
161 |
| - |
162 |
| - if [ ${#releases[@]} -lt 2 ]; then |
163 |
| - echo "Not enough releases for rollback. Rollback aborted." |
164 |
| - exit 1 |
165 |
| - fi |
166 |
| - |
167 |
| - # Tentukan rilis sebelumnya |
168 |
| - for release in "${releases[@]}"; do |
169 |
| - if [ "$release" != "$current_release" ]; then |
170 |
| - previous_release=$release |
171 |
| - break |
172 |
| - fi |
173 |
| - done |
| 157 | + current_release=$(readlink -f {{ $app_dir }}/current) |
| 158 | + echo "Current release: $(basename $current_release)" |
174 | 159 |
|
| 160 | + # Ambil rilis sebelumnya |
| 161 | + previous_release=$(ls -dt {{ $releases_dir }}/* | sed -n '2p') |
| 162 | + |
175 | 163 | if [ -z "$previous_release" ]; then
|
176 | 164 | echo "No previous release found. Rollback aborted."
|
177 | 165 | exit 1
|
178 | 166 | fi
|
179 | 167 |
|
180 |
| - echo "Rolling back from $(basename $current_release) to $(basename $previous_release)" |
181 |
| - |
182 |
| - # Simpan rilis yang gagal untuk dihapus nanti |
183 |
| - failed_release=$current_release |
| 168 | + echo "Rolling back to: $(basename $previous_release)" |
184 | 169 |
|
185 | 170 | # Hapus symlink current
|
186 | 171 | rm {{ $app_dir }}/current
|
|
191 | 176 | # Pindah ke rilis sebelumnya
|
192 | 177 | cd $previous_release
|
193 | 178 |
|
194 |
| - # Cek apakah ada migrasi yang perlu di-rollback |
195 |
| - echo "Checking for migrations to rollback" |
196 |
| - migration_status=$(php artisan migrate:status) |
197 |
| - latest_batch=$(echo "$migration_status" | awk '/Ran/ {print $NF}' | sed 's/[][]//g' | sort -rn | head -n1) |
198 |
| - |
199 |
| - if [ -n "$latest_batch" ] && [ "$latest_batch" -gt 1 ]; then |
200 |
| - echo "Found migrations to rollback (Batch $latest_batch)" |
201 |
| - echo "Rolling back database migrations" |
202 |
| - php artisan migrate:rollback |
203 |
| - else |
204 |
| - echo "No migrations to rollback or only initial migrations present" |
205 |
| - fi |
| 179 | + # Rollback migrasi |
| 180 | + echo "Rolling back last batch of migrations" |
| 181 | + php artisan migrate:rollback --force |
206 | 182 |
|
207 | 183 | # Bersihkan cache
|
208 | 184 | echo "Clearing application cache"
|
|
216 | 192 |
|
217 | 193 | # Hapus rilis yang gagal
|
218 | 194 | echo "Removing failed release"
|
219 |
| - rm -rf $failed_release |
| 195 | + rm -rf $current_release |
220 | 196 |
|
221 | 197 | echo "Rollback completed successfully"
|
222 | 198 | @endtask
|
0 commit comments