Bagaimana eksekusi pipa 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 pipa bekerja

Bagian ini memberikan gambaran umum tentang cara CodePipeline memproses serangkaian perubahan. CodePipelinemelacak setiap eksekusi pipeline yang dimulai saat pipeline dimulai secara manual atau perubahan dilakukan pada kode sumber. CodePipelinemenggunakan mode eksekusi berikut untuk menangani cara setiap eksekusi berlangsung melalui pipeline.

  • Mode DIGANTIKAN: Eksekusi yang lebih baru dapat menyalip yang lebih lama. Ini menjadi opsi default.

  • Mode ANTRIAN: Eksekusi diproses satu per satu dalam urutan antrian. Ini membutuhkan tipe pipa V2.

  • Paralel mode: Dalam mode PARALLEL, eksekusi berjalan secara bersamaan dan independen satu sama lain. Eksekusi tidak menunggu proses lain selesai sebelum memulai atau menyelesaikan. Ini membutuhkan tipe pipa V2.

Bagaimana eksekusi pipa dimulai

Anda dapat memulai 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, meskipun perubahan terdeteksi hanya untuk satu tindakan sumber.

Bagaimana eksekusi pipa dihentikan

Untuk menggunakan konsol untuk menghentikan eksekusi pipeline, Anda dapat memilih Hentikan eksekusi di halaman visualisasi pipeline, di halaman riwayat eksekusi, atau di halaman riwayat terperinci. Untuk menggunakan CLI untuk menghentikan eksekusi pipeline, Anda menggunakan perintah. stop-pipeline-execution Untuk informasi selengkapnya, lihat Hentikan eksekusi pipeline 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 tindakan 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 pipa dan fase eksekusi tindakan yang berbeda, sebagai berikut.

Opsi 1: Berhenti dan tunggu

Ketika 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, spanduk pesan sukses ditampilkan, dan tindakan build berlanjut hingga selesai. Status eksekusi pipeline adalah Berhenti.

    Dalam tampilan histori, status untuk tindakan yang sedang berlangsung, seperti tindakan build, sedang berlangsung hingga tindakan build selesai. Saat tindakan sedang berlangsung, status eksekusi pipeline adalah Berhenti.

  2. Eksekusi berhenti ketika proses penghentian selesai. Jika tindakan build berhasil diselesaikan, statusnya Berhasil, dan eksekusi pipeline menunjukkan status Berhenti. Tindakan selanjutnya tidak dimulai. Tombol Coba lagi diaktifkan.

    Dalam tampilan riwayat, status eksekusi Dihentikan setelah tindakan yang sedang berlangsung selesai.

Opsi 2: Berhenti dan tinggalkan

Ketika Anda memilih untuk berhenti dan meninggalkan, eksekusi yang dipilih tidak menunggu tindakan yang sedang berlangsung selesai. Tindakan ditinggalkan. Misalnya, eksekusi pipeline berikut dihentikan dan ditinggalkan saat aksi build sedang berlangsung.

  1. Dalam tampilan pipeline, pesan spanduk sukses ditampilkan, tindakan build menunjukkan status Sedang berlangsung, dan eksekusi pipeline menunjukkan status Berhenti.

  2. Setelah eksekusi pipeline berhenti, aksi build menunjukkan status Abandoned, dan eksekusi pipeline menunjukkan status Stopped. Tindakan selanjutnya tidak dimulai. Tombol Coba lagi diaktifkan.

  3. Dalam tampilan riwayat, status eksekusi Dihentikan.

Gunakan kasus untuk menghentikan eksekusi pipeline

Kami menyarankan Anda menggunakan opsi berhenti dan tunggu untuk menghentikan eksekusi pipeline. Opsi ini lebih aman karena menghindari kemungkinan kegagalan atau out-of-sequence tugas dalam pipeline Anda. Saat tindakan ditinggalkan CodePipeline, penyedia tindakan melanjutkan tugas apa pun yang terkait dengan tindakan tersebut. Dalam kasus tindakan, AWS CloudFormation tindakan penerapan dalam pipeline ditinggalkan, tetapi pembaruan tumpukan mungkin berlanjut dan mengakibatkan pembaruan gagal.

Sebagai contoh tindakan terbengkalai yang dapat menghasilkan out-of-sequence tugas, jika Anda menerapkan file besar (1GB) melalui tindakan penerapan S3, dan Anda memilih untuk menghentikan dan meninggalkan tindakan saat penerapan sudah berlangsung, tindakan akan ditinggalkan di, tetapi berlanjut di CodePipeline 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 penerapan yang sedang berlangsung. Karena ukuran file eksekusi baru kecil, penerapan baru selesai saat penerapan lama masih diunggah. Ketika penerapan lama selesai, file baru ditimpa oleh file lama.

Anda mungkin ingin menggunakan opsi berhenti dan tinggalkan jika Anda memiliki tindakan khusus. Misalnya, Anda dapat meninggalkan tindakan kustom dengan pekerjaan yang tidak perlu diselesaikan sebelum memulai eksekusi baru untuk perbaikan bug.

Bagaimana eksekusi diproses dalam mode SUPERSEDED

Mode default untuk memproses eksekusi adalah mode SUPERSEDED. Eksekusi terdiri dari serangkaian perubahan yang diambil dan diproses oleh eksekusi. Pipelines dapat memproses beberapa eksekusi pada saat yang bersamaan. Setiap eksekusi dijalankan melalui pipa secara terpisah. Pipeline memproses setiap eksekusi secara berurutan dan mungkin menggantikan eksekusi sebelumnya dengan eksekusi berikutnya. Aturan berikut digunakan untuk memproses eksekusi dalam pipeline untuk mode SUPERSEDED.

Aturan 1: Tahapan dikunci saat eksekusi sedang diproses

Karena setiap tahap hanya dapat memproses satu eksekusi pada satu waktu, tahap terkunci saat sedang berlangsung. Ketika eksekusi menyelesaikan tahap, itu 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 tahap dianggap selesai. Kegagalan melepaskan kunci di atas panggung. Ketika eksekusi dihentikan, eksekusi tidak berlanjut dalam tahap dan tahap tidak terkunci.

catatan

Sebelum Anda menghentikan eksekusi, kami sarankan Anda menonaktifkan transisi di depan panggung. Dengan cara ini, ketika tahap dibuka karena eksekusi yang dihentikan, tahap tidak menerima eksekusi pipeline 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 tahapan. Panggung terkunci memegang satu eksekusi di depan panggung menunggu panggung selesai. Eksekusi yang lebih baru menyusul eksekusi menunggu dan berlanjut ke tahap berikutnya segera setelah tahap dibuka. Eksekusi yang 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 di antara tahapan sementara eksekusi 3 memasuki tahap 1. setelah: eksekusi 3 keluar tahap 1. eksekusi 2 digantikan oleh eksekusi 3.

Bagaimana eksekusi diproses dalam mode ANTRIAN

Untuk pipeline dalam mode ANTRIAN, tahapan dikunci saat eksekusi sedang diproses; Namun, eksekusi menunggu tidak menyalip eksekusi yang sudah dimulai.

Eksekusi menunggu berkumpul di titik masuk ke tahapan terkunci dalam urutan mereka mencapai panggung, membentuk antrian eksekusi menunggu. Dengan mode ANTRIAN, Anda dapat memiliki beberapa antrian dalam pipeline yang sama. Ketika eksekusi antrian memasuki tahap, panggung terkunci dan tidak ada eksekusi lain yang bisa masuk. Perilaku ini tetap sama dengan mode SUPERSEDED. Ketika eksekusi selesai tahap, panggung menjadi tidak terkunci dan siap untuk eksekusi berikutnya.

Diagram berikut menunjukkan bagaimana tahapan dalam proses eksekusi proses pipa mode ANTRIAN. Misalnya, saat tahap Sumber memproses eksekusi 5, eksekusi untuk 6 dan 7 membentuk Antrian #1 dan menunggu di titik masuk tahap. Eksekusi berikutnya dalam antrian akan diproses setelah tahap terbuka.


                    Diagram yang menunjukkan eksekusi dalam pipeline yang ditetapkan untuk mode ANTRIAN.

Untuk informasi selengkapnya tentang kuota dengan mode eksekusi, lihatKuota di AWS CodePipeline.

Bagaimana eksekusi diproses dalam mode PARALLEL

Untuk pipeline dalam mode PARALLEL, eksekusi independen satu sama lain dan jangan menunggu eksekusi lain selesai sebelum memulai. Tidak ada antrian. Untuk melihat eksekusi paralel di pipeline, gunakan tampilan riwayat eksekusi.

Gunakan mode PARALLEL di lingkungan pengembangan di mana setiap fitur memiliki cabang fitur sendiri dan menyebarkan ke target yang tidak dibagikan oleh pengguna lain.

Untuk informasi selengkapnya tentang kuota dengan mode eksekusi, lihatKuota di AWS CodePipeline.

Mengelola Aliran Pipa

Aliran eksekusi pipa dapat dikontrol oleh:

  • Transisi, yang mengontrol aliran eksekusi ke panggung. Transisi dapat diaktifkan atau dinonaktifkan. Ketika transisi dinonaktifkan, eksekusi pipa tidak dapat memasuki tahap. 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 tahap masih dapat digantikan oleh eksekusi baru. Ketika transisi yang dinonaktifkan diaktifkan kembali, eksekusi terbaru, termasuk semua yang menggantikan eksekusi yang lebih lama saat transisi dinonaktifkan, memasuki tahap.

  • Tindakan persetujuan, yang mencegah pipeline dari transisi ke tindakan berikutnya sampai izin diberikan (misalnya, melalui persetujuan manual dari identitas resmi). Anda dapat menggunakan tindakan persetujuan ketika Anda ingin mengontrol waktu transisi pipeline 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 berhasil diselesaikan. Revisi tidak bertransisi ke tindakan selanjutnya dalam tahap atau tahap selanjutnya dalam pipa. Berikut ini dapat terjadi:

    • Anda secara manual mencoba lagi tahap yang berisi tindakan gagal. Ini melanjutkan eksekusi (mencoba kembali tindakan yang gagal dan, jika berhasil, berlanjut di tahap/pipa).

    • Eksekusi lain memasuki tahap gagal dan menggantikan eksekusi yang gagal. Pada titik ini, eksekusi yang gagal tidak dapat dicoba lagi.

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 aplikasiWilayah 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 penerapan di tahap yang sama dijamin untuk menguji perubahan yang sama yang diterapkan. Dalam contoh ini, perubahan diterapkan ke lingkungan Pengujian dan kemudian diuji, dan kemudian perubahan terbaru dari lingkungan pengujian diterapkan ke lingkungan Produksi. Dalam contoh yang direkomendasikan, lingkungan Test dan lingkungan Prod adalah tahapan yang terpisah.

Kiri: pengujian terkait, penerapan, dan tindakan persetujuan dikelompokkan bersama (disarankan). Kanan: tindakan terkait dalam tahap terpisah (tidak disarankan).

Bagaimana Eksekusi Inbound Bekerja

Eksekusi masuk adalah eksekusi yang menunggu tahap, transisi, atau tindakan yang tidak tersedia tersedia sebelum bergerak maju. Tahap, transisi, atau tindakan berikutnya mungkin tidak tersedia karena:

  • Eksekusi lain telah memasuki tahap berikutnya dan menguncinya.

  • Transisi untuk memasuki tahap berikutnya 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 inbound yang sedang berlangsung memasuki tahap dan berlanjut melalui pipeline.

  • Sementara eksekusi inbound menunggu, itu dapat dihentikan secara manual. Eksekusi inbound dapat memilikiInProgress,Stopped, atau Failed status.

  • Ketika eksekusi masuk telah dihentikan atau gagal, itu tidak dapat dicoba lagi karena tidak ada tindakan yang gagal untuk dicoba lagi. Ketika eksekusi inbound telah dihentikan, dan transisi diaktifkan, eksekusi inbound yang dihentikan tidak berlanjut ke tahap.

Anda dapat melihat atau menghentikan eksekusi masuk.