Bagaimana eksekusi pipeline bekerja - AWS CodePipeline

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

Bagaimana eksekusi pipeline bekerja

Bagian ini memberikan ikhtisar tentang cara CodePipeline memproses serangkaian perubahan. CodePipeline melacak setiap eksekusi pipeline yang dimulai saat perubahan dilakukan pada kode sumber. CodePipeline juga melacak cara setiap eksekusi berlangsung melalui pipa, termasuk apakah itu digantikan oleh eksekusi lain.

Bagaimana eksekusi pipeline dimulai

Anda dapat memicu eksekusi saat mengubah kode sumber atau memulai pipeline secara manual. Anda juga dapat memicu eksekusi melalui Amazon CloudWatch Aturan acara 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 alur, Anda dapat memilihHentikan eksekusipada halaman visualisasi pipeline, pada halaman riwayat eksekusi, atau pada halaman riwayat terperinci. Untuk menggunakan CLI untuk menghentikan eksekusi pipeline, Anda menggunakanstop-pipeline-executionperintah. Untuk informasi selengkapnya, lihat Hentikan eksekusi pipa di CodePipeline.

Ada dua cara untuk menghentikan eksekusi alur:

  • 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 ada diStoppingstatus.

  • 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 diStoppingstatus.

    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.

  1. Dalam tampilan pipeline, banner pesan sukses ditampilkan, dan aksi build berlanjut hingga selesai. Status eksekusi pipeline adalahPemfilteran stopword.

    Dalam tampilan histori, status untuk tindakan yang sedang berlangsung, seperti aksi build, adalahSedang berlangsungsampai aksi build selesai. Saat tindakan sedang berlangsung, status eksekusi pipelinePemfilteran stopword.

  2. Eksekusi berhenti ketika proses berhenti selesai. Jika aksi build berhasil diselesaikan, statusnya adalahBerhasil, dan eksekusi pipeline menunjukkan statusDihentikan. Tindakan selanjutnya tidak dimulai. KlasterPercobaan ulangtombol diaktifkan.

    Dalam tampilan sejarah, status eksekusi adalahDihentikansetelah tindakan dalam proses selesai.

Opsi 2: Berhenti dan tinggalkan

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.

  1. Dalam tampilan pipeline, pesan banner sukses ditampilkan, aksi build menunjukkan statusSedang berlangsung, dan eksekusi pipeline menunjukkan statusPemfilteran stopword.

  2. Setelah eksekusi pipeline berhenti, aksi build menunjukkan statusDitinggalkan, dan eksekusi pipeline menunjukkan statusDihentikan. Tindakan selanjutnya tidak dimulai. KlasterPercobaan ulangtombol diaktifkan.

  3. Dalam tampilan sejarah, status eksekusi adalahDihentikan.

Gunakan kasus untuk menghentikan eksekusi pipeline

Kami sarankan Anda menggunakan opsi stop and wait untuk menghentikan eksekusi alur. Opsi ini lebih aman karena menghindari kemungkinan gagal atau out-of-sequence tugas dalam pipa Anda. Ketika suatu tindakan ditinggalkan di CodePipeline, penyedia tindakan melanjutkan tugas apa pun yang terkait dengan tindakan. Dalam kasusAWS CloudFormationtindakan, tindakan penyebaran di pipeline ditinggalkan, tetapi pembaruan tumpukan mungkin berlanjut dan mengakibatkan pembaruan gagal.

Sebagai contoh tindakan terbengkalai yang dapat mengakibatkan out-of-sequence tugas, jika Anda menerapkan file besar (1GB) melalui tindakan penyebaran S3, dan Anda memilih untuk menghentikan dan meninggalkan tindakan saat penyebaran sudah berlangsung, tindakan tersebut ditinggalkan CodePipeline, tetapi berlanjut di Amazon S3. Amazon S3 tidak menemukan instruksi apa pun untuk membatalkan unggahan. 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. Saluran dapat memproses beberapa eksekusi pada saat bersamaan. 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.

Sebelum: Stage 1 is locked as Execution 1 enters. Setelah: Stage 2 is locked as Execution 1 enters.

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.

Sebelum: Stage 2 is locked as Execution 1 enters. Setelah: Execution 2 exits Stage 1 and waits between stages.

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

Aliran eksekusi pipa dapat dikontrol oleh:

  • SEBUAHperalihan, 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.

  • SesiTindakan persetujuan, yang mencegah pipeline beralih ke tindakan berikutnya hingga izin diberikan (misalnya, melalui persetujuan manual dari pengguna IAM yang berwenang). Anda dapat menggunakan tindakan persetujuan ketika Anda ingin mengontrol waktu di mana pipa transisi ke finalProduksipanggung, 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.

  • SEBUAHkegagalan, 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 ulang.

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 terpisah.

Kiri:tes terkait, menyebarkan, dan tindakan persetujuan dikelompokkan bersama-sama (direkomendasikan). 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 dariget-pipeline-stateperintah.

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 memilikiInProgress,Stopped, atauFailedstatus.

  • 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).