Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Cara kerja eksekusi pipeline
Bagian ini memberikan gambaran umum tentang cara CodePipeline memproses serangkaian perubahan. CodePipelinemelacak setiap eksekusi pipeline yang dimulai saat perubahan dilakukan pada kode sumber. CodePipelinejuga melacak cara setiap eksekusi berlangsung melalui pipa, termasuk apakah itu digantikan oleh eksekusi lain.
catatan
Manual/otomatis rollback eksekusi pipeline tidak didukung. Anda tidak dapat menjalankan kembali eksekusi pipeline sebelumnya dari riwayat pipeline. Untuk memutar kembali pipeline, kembalikan revisi sumber kembali ke revisi sukses sebelumnya di sumber masing-masing (sepertiCodeCommit, Amazon S3GitHub, dan sebagainya), dan jalankan pipeline lagi.
Bagaimana eksekusi pipeline dimulai
Anda dapat memicu eksekusi saat mengubah kode sumber atau memulai pipeline secara manual. Anda juga dapat memicu eksekusi melalui aturan Amazon CloudWatch Events yang Anda jadwalkan. Misalnya, ketika perubahan kode sumber didorong ke repositori yang dikonfigurasi sebagai tindakan sumber pipeline, pipeline mendeteksi perubahan dan memulai eksekusi.
catatan
Jika pipeline berisi beberapa tindakan sumber, semuanya berjalan lagi, bahkan jika perubahan terdeteksi hanya untuk satu tindakan sumber.
Bagaimana eksekusi pipeline dihentikan
Untuk menggunakan konsol untuk menghentikan eksekusi pipeline, Anda dapat memilih Hentikan eksekusi pada halaman visualisasi pipeline, pada halaman riwayat eksekusi, atau pada halaman riwayat terperinci. Untuk menggunakan CLI untuk menghentikan eksekusi pipeline, Anda menggunakan stop-pipeline-execution
perintah. Untuk informasi selengkapnya, lihat Hentikan eksekusi pipa di CodePipeline.
Ada dua cara untuk menghentikan eksekusi pipeline:
-
Berhenti dan tunggu: Semua eksekusi tindakan yang sedang berlangsung diizinkan untuk diselesaikan, dan tindakan selanjutnya tidak dimulai. Eksekusi pipa tidak berlanjut ke tahap selanjutnya. Anda tidak dapat menggunakan opsi ini pada eksekusi yang sudah dalam
Stopping
keadaan. -
Berhenti dan tinggalkan: Semua eksekusi aksi yang sedang berlangsung ditinggalkan dan tidak selesai, dan tindakan selanjutnya tidak dimulai. Eksekusi pipa tidak berlanjut ke tahap selanjutnya. Anda dapat menggunakan opsi ini pada eksekusi yang sudah dalam
Stopping
keadaan.catatan
Opsi ini dapat menyebabkan tugas gagal atau tugas di luar urutan.
Setiap opsi menghasilkan urutan yang berbeda dari pipa dan fase eksekusi tindakan, sebagai berikut.
Opsi 1: Berhenti dan tunggu
Saat Anda memilih untuk berhenti dan menunggu, eksekusi yang dipilih berlanjut hingga tindakan yang sedang berlangsung selesai. Misalnya, eksekusi pipeline berikut dihentikan saat aksi build sedang berlangsung.
-
Dalam tampilan pipeline, banner pesan sukses ditampilkan, dan aksi build berlanjut hingga selesai. Status eksekusi pipeline adalah Stopping.
Dalam tampilan histori, status untuk tindakan yang sedang berlangsung, seperti aksi build, sedang berlangsung hingga aksi build selesai. Saat tindakan sedang berlangsung, status eksekusi pipeline adalah Stopping.
-
Eksekusi berhenti ketika proses berhenti selesai. Jika aksi build berhasil diselesaikan, statusnya Berhasil, dan eksekusi pipeline menunjukkan status Stopped. Tindakan selanjutnya tidak dimulai. Tombol Coba Ulang diaktifkan.
Dalam tampilan riwayat, status eksekusi Dihentikan setelah tindakan yang sedang berlangsung selesai.
Opsi 2: Berhenti dan Abaikan
Saat Anda memilih untuk berhenti dan meninggalkan, eksekusi yang dipilih tidak menunggu tindakan yang sedang berlangsung selesai. Tindakannya ditinggalkan. Misalnya, eksekusi pipeline berikut dihentikan dan ditinggalkan saat aksi build sedang berlangsung.
-
Dalam tampilan pipeline, pesan banner sukses ditampilkan, aksi build menunjukkan status Sedang berlangsung, dan eksekusi pipeline menunjukkan status Berhenti.
-
Setelah eksekusi pipeline berhenti, aksi build menunjukkan status Abandoned, dan eksekusi pipeline menunjukkan status Stopped. Tindakan selanjutnya tidak dimulai. Tombol Coba Ulang diaktifkan.
-
Dalam tampilan histori, status eksekusi adalah Berhenti.
Gunakan kasus untuk menghentikan eksekusi pipeline
Kami sarankan Anda menggunakan opsi stop and wait untuk menghentikan eksekusi pipeline. Opsi ini lebih aman karena menghindari kemungkinan gagal atau out-of-sequence tugas di pipeline Anda. Ketika tindakan ditinggalkanCodePipeline, penyedia tindakan melanjutkan tugas apa pun yang terkait dengan tindakan. Dalam kasus tindakan, AWS CloudFormation tindakan penyebaran di pipeline ditinggalkan, tetapi pembaruan tumpukan mungkin berlanjut dan mengakibatkan pembaruan yang gagal.
Sebagai contoh tindakan terbengkalai yang dapat menghasilkan out-of-sequence tugas, jika Anda menerapkan file besar (1GB) melalui tindakan penyebaran S3, dan Anda memilih untuk menghentikan dan meninggalkan tindakan saat penerapan sudah berlangsung, tindakan tersebut ditinggalkanCodePipeline, tetapi berlanjut di Amazon S3. Amazon S3 tidak menemukan instruksi apa pun untuk membatalkan upload. Selanjutnya, jika Anda memulai eksekusi pipeline baru dengan file yang sangat kecil, sekarang ada dua penyebaran yang sedang berlangsung. Karena ukuran file eksekusi baru kecil, penyebaran baru selesai saat penyebaran lama masih diunggah. Ketika penyebaran lama selesai, file baru ditimpa oleh file lama.
Anda mungkin ingin menggunakan berhenti dan meninggalkan pilihan dalam kasus di mana Anda memiliki tindakan kustom. Misalnya, Anda dapat meninggalkan tindakan khusus dengan pekerjaan yang tidak perlu diselesaikan sebelum memulai eksekusi baru untuk perbaikan bug.
Bagaimana eksekusi diproses dalam pipa
Eksekusi terdiri dari serangkaian perubahan yang diambil dan diproses oleh eksekusi. Pipeline dapat memproses beberapa eksekusi pada saat yang sama. Setiap eksekusi dijalankan melalui pipa secara terpisah. Pipeline memproses setiap eksekusi secara berurutan dan mungkin menggantikan eksekusi sebelumnya dengan yang berikutnya. Aturan berikut digunakan untuk memproses eksekusi dalam pipa.
Aturan 1: Tahapan dikunci saat eksekusi sedang diproses
Karena setiap tahap hanya dapat memproses satu eksekusi pada satu waktu, panggung dikunci saat sedang berlangsung. Ketika eksekusi menyelesaikan tahap, transisi ke tahap berikutnya dalam pipa.

Aturan 2: Eksekusi selanjutnya menunggu panggung dibuka
Sementara panggung terkunci, eksekusi menunggu diadakan di depan panggung yang terkunci. Semua tindakan yang dikonfigurasi untuk suatu tahap harus diselesaikan dengan sukses sebelum panggung dianggap selesai. Kegagalan melepaskan kunci di atas panggung. Ketika eksekusi dihentikan, eksekusi tidak berlanjut dalam tahap dan panggung tidak terkunci.
catatan
Sebelum Anda menghentikan eksekusi, kami sarankan Anda menonaktifkan transisi di depan panggung. Dengan cara ini, ketika panggung dibuka karena eksekusi yang berhenti, panggung tidak menerima eksekusi pipa berikutnya.

Aturan 3: Eksekusi menunggu digantikan oleh eksekusi yang lebih baru
Eksekusi hanya digantikan di antara tahap. Sebuah panggung terkunci memegang satu eksekusi di depan panggung menunggu panggung untuk menyelesaikan. Eksekusi yang lebih baru menyusul eksekusi menunggu dan berlanjut ke tahap berikutnya segera setelah tahap dibuka. Eksekusi digantikan tidak berlanjut. Dalam contoh ini, Eksekusi 2 telah digantikan oleh Eksekusi 3 sambil menunggu tahap terkunci. Eksekusi 3 memasuki tahap berikutnya.

Sebelum: eksekusi 2 menunggu antara tahapan sementara eksekusi 3 memasuki tahap 1. setelah: eksekusi 3 keluar tahap 1. eksekusi 2 digantikan oleh eksekusi 3.
Mengelola Alur Pipeline
Aliran eksekusi pipa dapat dikontrol oleh:
-
Transisi, yang mengontrol aliran eksekusi ke panggung. Transisi dapat diaktifkan atau dinonaktifkan. Ketika transisi dinonaktifkan, eksekusi pipeline tidak dapat memasuki panggung. Eksekusi pipeline yang menunggu untuk memasuki tahap di mana transisi dinonaktifkan disebut eksekusi masuk. Setelah Anda mengaktifkan transisi, eksekusi masuk bergerak ke panggung dan menguncinya.
Mirip dengan eksekusi yang menunggu tahap terkunci, ketika transisi dinonaktifkan, eksekusi yang menunggu untuk memasuki panggung masih dapat digantikan oleh eksekusi baru. Ketika transisi yang dinonaktifkan diaktifkan kembali, eksekusi terbaru, termasuk yang menggantikan eksekusi lama saat transisi dinonaktifkan, memasuki panggung.
-
Tindakan persetujuan, yang mencegah pipeline beralih ke tindakan berikutnya hingga izin diberikan (misalnya, melalui persetujuan manual dari identitas yang berwenang). Anda dapat menggunakan tindakan persetujuan ketika Anda ingin mengontrol waktu di mana pipa transisi ke tahap Produksi akhir, misalnya.
catatan
Tahap dengan tindakan persetujuan dikunci sampai tindakan persetujuan disetujui atau ditolak atau telah habis waktu. Tindakan persetujuan waktu habis diproses dengan cara yang sama seperti tindakan yang gagal.
-
Kegagalan, ketika suatu tindakan dalam suatu tahap tidak selesai dengan sukses. Revisi tidak beralih ke tindakan selanjutnya di panggung atau tahap selanjutnya dalam pipa. Berikut ini dapat terjadi:
-
Anda secara manual mencoba kembali tahap yang berisi tindakan yang gagal. Ini melanjutkan eksekusi (mencoba ulang tindakan yang gagal dan, jika berhasil, berlanjut di panggung/pipa).
-
Eksekusi lain memasuki tahap gagal dan menggantikan eksekusi yang gagal. Pada titik ini, eksekusi yang gagal tidak dapat dicoba lagi.
-
Struktur pipeline yang direkomendasikan
Saat memutuskan bagaimana perubahan kode harus mengalir melalui pipeline Anda, yang terbaik adalah mengelompokkan tindakan terkait dalam satu tahap sehingga, ketika tahap terkunci, semua tindakan memproses eksekusi yang sama. Anda dapat membuat panggung untuk setiap lingkungan aplikasi,Wilayah AWS, atau Availability Zone, dan sebagainya. Pipa dengan terlalu banyak tahapan (yaitu, terlalu granular) dapat memungkinkan terlalu banyak perubahan bersamaan, sementara pipa dengan banyak tindakan dalam tahap besar (terlalu kasar) dapat memakan waktu terlalu lama untuk melepaskan perubahan.
Sebagai contoh, tindakan pengujian setelah tindakan penyebaran dalam tahap yang sama dijamin untuk menguji perubahan yang sama yang diterapkan. Dalam contoh ini, perubahan diterapkan ke lingkungan Uji dan kemudian diuji, dan kemudian perubahan terbaru dari lingkungan pengujian diterapkan ke lingkungan Produksi. Dalam contoh yang direkomendasikan, lingkungan Uji dan lingkungan Prod adalah tahapan yang terpisah.

Kiri: tes terkait, penyebaran, dan tindakan persetujuan dikelompokkan bersama (disarankan). Kanan: tindakan terkait dalam tahap terpisah (tidak disarankan).
Cara Kerja Eksekusi Masuk
Eksekusi masuk adalah eksekusi yang menunggu tahap, transisi, atau tindakan yang tidak tersedia sebelum bergerak maju. Tahap berikutnya, transisi, atau tindakan mungkin tidak tersedia karena:
-
Eksekusi lain telah memasuki tahap berikutnya dan menguncinya.
-
Transisi untuk memasuki tahap selanjutnya dinonaktifkan.
Anda dapat menonaktifkan transisi untuk menahan eksekusi masuk jika Anda ingin mengontrol apakah eksekusi saat ini memiliki waktu untuk diselesaikan pada tahap berikutnya, atau jika Anda ingin menghentikan semua tindakan pada titik tertentu. Untuk menentukan apakah Anda memiliki eksekusi masuk, Anda dapat melihat pipeline di konsol atau melihat output dari get-pipeline-state perintah.
Eksekusi masuk beroperasi dengan pertimbangan berikut:
-
Segera setelah aksi, transisi, atau tahap terkunci tersedia, eksekusi masuk yang sedang berlangsung memasuki panggung dan berlanjut melalui pipeline.
-
Sementara eksekusi masuk menunggu, itu dapat dihentikan secara manual. Eksekusi inbound dapat memiliki
InProgress
,Stopped
, atauFailed
negara. -
Ketika eksekusi masuk telah dihentikan atau gagal, itu tidak dapat dicoba ulang karena tidak ada tindakan yang gagal untuk dicoba lagi. Ketika eksekusi masuk telah dihentikan, dan transisi diaktifkan, eksekusi masuk yang berhenti tidak berlanjut ke panggung.
Anda dapat melihat atau menghentikan eksekusi masuk. Lihat Lihat status eksekusi inbound (CLI) dan Hentikan Eksekusi Inbound (CLI).