Menerapkan ulang dan memutar kembali penerapan dengan CodeDeploy - AWS CodeDeploy

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Menerapkan ulang dan memutar kembali penerapan dengan CodeDeploy

CodeDeploy memutar kembali penerapan dengan menerapkan kembali revisi aplikasi yang sebelumnya diterapkan sebagai penerapan baru. Penerapan rolled-back ini secara teknis merupakan penerapan baru, dengan ID penerapan baru, bukan versi yang dipulihkan dari penerapan sebelumnya.

Penerapan dapat diputar kembali secara otomatis atau manual.

Rollback otomatis

Anda dapat mengonfigurasi grup penerapan atau penerapan untuk memutar kembali secara otomatis saat penerapan gagal atau saat ambang batas pemantauan yang Anda tentukan terpenuhi. Dalam hal ini, versi baik terakhir yang diketahui dari revisi aplikasi digunakan. Anda mengonfigurasi rollback otomatis saat membuat aplikasi atau membuat atau memperbarui grup penyebaran.

Saat membuat penerapan baru, Anda juga dapat memilih untuk mengganti konfigurasi rollback otomatis yang ditentukan untuk grup penerapan.

catatan

Anda dapat menggunakan Amazon Simple Notification Service untuk menerima notifikasi setiap kali penerapan digulirkan kembali secara otomatis. Untuk informasi, lihat Monitoring Deployments with Amazon SNS Event Notifications.

Untuk informasi selengkapnya tentang mengonfigurasi rollback otomatis, lihat. Konfigurasikan opsi lanjutan untuk grup penerapan

Rollback manual

Jika Anda belum menyiapkan rollback otomatis, Anda dapat memutar kembali penerapan secara manual dengan membuat penerapan baru yang menggunakan revisi aplikasi yang digunakan sebelumnya dan mengikuti langkah-langkah untuk menerapkan revisi. Anda dapat melakukan ini jika aplikasi telah masuk ke keadaan yang tidak diketahui. Daripada menghabiskan banyak waktu pemecahan masalah, Anda dapat menerapkan ulang aplikasi ke status kerja yang diketahui. Untuk informasi selengkapnya, lihat Buat penerapan dengan CodeDeploy.

catatan

Jika Anda menghapus instance dari grup penyebaran, CodeDeploy tidak menghapus instalan apa pun yang mungkin telah diinstal pada instance itu.

Alur kerja rollback dan redeployment

Ketika rollback otomatis dimulai, atau ketika Anda secara manual memulai redeployment atau manual rollback, CodeDeploy pertama-tama mencoba untuk menghapus dari setiap instance yang berpartisipasi semua file yang terakhir berhasil diinstal. CodeDeploy melakukan ini dengan memeriksa file pembersihan:

/opt/codedeploy-agent/deployment-root/deployment-instructions/deployment-group-ID-cleanupfile (untuk Amazon Linux, Ubuntu Server, dan instans RHEL)

C:\ProgramData\Amazon\CodeDeploy\deployment-instructions\deployment-group-ID-cleanupberkas (untuk instance Windows Server)

Jika ada, CodeDeploy gunakan file pembersihan untuk menghapus dari instance semua file yang terdaftar sebelum memulai penerapan baru.

Misalnya, dua file teks pertama dan dua file skrip sudah digunakan ke instans Amazon EC2 yang menjalankan Windows Server, dan skrip membuat dua file teks lagi selama peristiwa siklus hidup penerapan:

c:\temp\a.txt (previously deployed by CodeDeploy) c:\temp\b.txt (previously deployed by CodeDeploy) c:\temp\c.bat (previously deployed by CodeDeploy) c:\temp\d.bat (previously deployed by CodeDeploy) c:\temp\e.txt (previously created by c.bat) c:\temp\f.txt (previously created by d.bat)

File pembersihan hanya akan mencantumkan dua file teks pertama dan dua file skrip:

c:\temp\a.txt c:\temp\b.txt c:\temp\c.bat c:\temp\d.bat

Sebelum penyebaran baru, CodeDeploy akan menghapus hanya dua file teks pertama dan dua file skrip, meninggalkan dua file teks terakhir yang tidak tersentuh:

c:\temp\a.txt will be removed c:\temp\b.txt will be removed c:\temp\c.bat will be removed c:\temp\d.bat will be removed c:\temp\e.txt will remain c:\temp\f.txt will remain

Sebagai bagian dari proses ini, tidak CodeDeploy akan mencoba mengembalikan atau mendamaikan tindakan apa pun yang diambil oleh skrip apa pun dalam penerapan sebelumnya selama pemindahan berikutnya, baik secara manual maupun otomatis. Misalnya, jika d.bat file c.bat dan berisi logika untuk tidak membuat ulang f.txt file e.txt dan jika sudah ada, maka versi lama e.txt dan f.txt akan tetap tidak tersentuh setiap kali CodeDeploy berjalan c.bat dan d.bat dalam penerapan berikutnya. Anda dapat menambahkan logika d.bat ke c.bat dan untuk selalu memeriksa dan menghapus versi lama e.txt dan f.txt sebelum membuat yang baru.

Perilaku rollback dengan konten yang ada

Sebagai bagian dari proses penyebaran, CodeDeploy agen menghapus dari setiap instance semua file yang diinstal oleh penerapan terbaru. Jika file yang bukan bagian dari penerapan sebelumnya muncul di lokasi penyebaran target, Anda dapat memilih apa yang CodeDeploy dilakukannya selama penerapan berikutnya:

  • Gagal penerapan — Kesalahan dilaporkan dan status penerapan diubah menjadi Gagal.

  • Timpa konten — Versi file dari revisi aplikasi menggantikan versi yang sudah ada pada instance.

  • Pertahankan konten — File di lokasi target disimpan dan versi dalam revisi aplikasi tidak disalin ke instance.

Anda dapat memilih perilaku ini saat membuat penerapan. Jika membuat penerapan di konsol, lihatMembuat penerapan Platform Komputasi EC2/Lokal (konsol). Jika membuat penerapan dengan AWS CLI, lihatMembuat penerapan Platform Komputasi EC2/Lokal (CLI).

Anda dapat memilih untuk menyimpan file yang ingin Anda menjadi bagian dari penerapan berikutnya tanpa harus menambahkannya ke paket revisi aplikasi. Misalnya, Anda dapat mengunggah file langsung ke instance yang diperlukan untuk penerapan tetapi tidak ditambahkan ke bundel revisi aplikasi. Atau Anda dapat mengunggah file ke instance jika aplikasi Anda sudah berada di lingkungan produksi Anda tetapi Anda ingin menggunakannya CodeDeploy untuk pertama kalinya untuk menerapkannya.

Dalam kasus rollback, di mana revisi aplikasi terbaru yang berhasil diterapkan diterapkan kembali karena kegagalan penerapan, opsi penanganan konten untuk penerapan terakhir yang berhasil diterapkan pada penerapan rollback.

Namun, jika penerapan yang gagal dikonfigurasi untuk menimpa, alih-alih mempertahankan file, hasil yang tidak terduga dapat terjadi selama rollback. Secara khusus, file yang Anda harapkan untuk disimpan mungkin akan dihapus oleh penerapan yang gagal. File tidak ada pada instance saat penerapan rollback berjalan.

Dalam contoh berikut, ada tiga penerapan. File apa pun yang ditimpa (dihapus) selama penerapan kedua yang gagal tidak lagi tersedia (tidak dapat dipertahankan) saat revisi aplikasi 1 diterapkan lagi selama penerapan 3:

Deployment

Revisi aplikasi

Opsi menimpa konten

Status deployment

Perilaku dan hasil

penyebaran 1

revisi aplikasi 1

MELESTARIKAN

Berhasil

CodeDeploy mendeteksi file di lokasi target yang tidak digunakan oleh penerapan sebelumnya. File-file ini mungkin ditempatkan di sana dengan sengaja untuk menjadi bagian dari penyebaran saat ini. Mereka disimpan dan dicatat sebagai bagian dari paket penyebaran saat ini.

penyebaran 2

revisi aplikasi 2

MENIMPA

Failed

Selama proses penyebaran, CodeDeploy menghapus semua file yang merupakan bagian dari penerapan sukses sebelumnya. Ini termasuk file yang disimpan selama penerapan 1.

Namun, penerapan gagal karena alasan yang tidak terkait.

penyebaran 3

revisi aplikasi 1

MELESTARIKAN

Karena auto rollback diaktifkan untuk grup penyebaran atau penyebaran, CodeDeploy menyebarkan revisi aplikasi bagus terakhir yang diketahui, revisi aplikasi 1.

Namun, file yang ingin Anda simpan dalam penerapan 1 telah dihapus sebelum penerapan 2 gagal dan tidak dapat diambil oleh. AWS CodeDeploy Anda dapat menambahkannya ke instance sendiri jika diperlukan untuk revisi aplikasi 1, atau Anda dapat membuat revisi aplikasi baru.