View a markdown version of this page

Cara kerja eksekusi pipeline - AWS CodePipeline

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 ketika pipeline dimulai secara manual atau perubahan dilakukan pada kode sumber. CodePipeline menggunakan mode eksekusi berikut untuk menangani cara setiap eksekusi berlangsung melalui pipeline. Untuk informasi selengkapnya, lihat Mengatur atau mengubah mode eksekusi pipeline.

  • Mode TERGANTI: Eksekusi yang lebih baru dapat menyalip yang lebih lama. Ini adalah opsi default.

  • Mode ANTRIAN: Eksekusi diproses satu per satu sesuai urutan antrean. Ini membutuhkan tipe pipa V2.

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

    penting

    Untuk saluran pipa dalam mode PARALEL, rollback panggung tidak tersedia. Demikian pula, kondisi kegagalan dengan tipe hasil rollback tidak dapat ditambahkan ke pipeline mode PARALLEL.

Bagaimana eksekusi pipeline dimulai

Anda dapat memulai eksekusi ketika Anda mengubah kode sumber atau memulai pipeline secara manual. Anda juga dapat memicu eksekusi melalui aturan Amazon Ev CloudWatch ents 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 revisi sumber diproses dalam eksekusi pipeline

Untuk setiap eksekusi pipeline yang dimulai dengan perubahan kode sumber (revisi sumber), revisi sumber ditentukan sebagai berikut.

  • Untuk pipeline dengan CodeCommit sumber, HEAD dikloning oleh CodePipeline pada saat komit didorong. Misalnya, komit didorong, yang memulai pipeline untuk eksekusi 1. Pada saat komit kedua didorong, ini memulai pipeline untuk eksekusi 2.

    catatan

    Untuk pipeline dalam mode PARALLE CodeCommit L dengan sumber, terlepas dari komit yang memicu eksekusi pipeline, tindakan sumber akan selalu mengkloning HEAD pada saat dimulai. Untuk informasi selengkapnya, lihat CodeCommit atau revisi sumber S3 dalam mode PARALLEL mungkin tidak cocok dengan peristiwa EventBridge.

  • Untuk pipeline dengan sumber S3, EventBridge acara untuk pembaruan bucket S3 digunakan. Misalnya, peristiwa dihasilkan ketika file diperbarui di bucket sumber, yang memulai pipeline untuk eksekusi 1. Pada saat acara untuk pembaruan bucket kedua dibuat, ini memulai pipeline untuk eksekusi 2.

    catatan

    Untuk pipeline dalam mode PARALLEL dengan sumber S3, terlepas dari tag gambar yang memicu eksekusi, tindakan sumber akan selalu dimulai dengan tag gambar terbaru. Untuk informasi selengkapnya, lihat CodeCommit atau revisi sumber S3 dalam mode PARALLEL mungkin tidak cocok dengan peristiwa EventBridge.

  • Untuk pipeline dengan sumber koneksi, seperti ke Bitbucket, HEAD dikloning oleh CodePipeline pada saat komit didorong. Misalnya, untuk pipeline dalam mode PARALLEL, komit didorong, yang memulai pipeline untuk eksekusi 1, dan eksekusi pipeline kedua menggunakan komit kedua.

Bagaimana penggantian sumber bekerja dengan transformator EventBridge input

Anda dapat menggunakan penggantian untuk memulai pipeline dengan ID revisi sumber tertentu yang Anda berikan untuk eksekusi pipeline. Misalnya, jika Anda ingin memulai pipeline yang akan memproses ID komit tertentu dari CodeCommit sumber Anda, Anda dapat menambahkan ID komit sebagai penggantian saat memulai pipeline Anda.

Ada empat jenis revisi sumber untukrevisionType:

  • COMMIT_ID

  • IMAGE_DIGEST

  • S3_OBJECT_VERSION_ID

  • S3_OBJECT_KEY

catatan

Untuk COMMIT_ID dan IMAGE_DIGEST jenis revisi sumber, ID revisi sumber berlaku untuk semua konten di repositori, di semua cabang.

catatan

Untuk S3_OBJECT_VERSION_ID dan S3_OBJECT_KEY jenis revisi sumber, salah satu jenis dapat digunakan secara independen, atau mereka dapat digunakan bersama untuk mengganti sumber dengan versionId tertentu ObjectKey . UntukS3_OBJECT_KEY, parameter konfigurasi AllowOverrideForS3ObjectKey perlu diatur ketrue. Untuk informasi selengkapnya tentang parameter konfigurasi sumber S3, lihatParameter konfigurasi.

Anda dapat menentukan penggantian sumber menggunakan transformator input di EventBridge. Gunakan transformator input untuk meneruskan data sebagai salah satu dari berikut ini:

  • Anda dapat menggunakan transformator input untuk meneruskan data sebagai parameter JSON.

  • Anda dapat menggunakan transformator input untuk melewati variabel pipa.

Untuk contoh meneruskan data sebagai parameter JSON, lihatTindakan dan sumber EventBridge daya sumber Amazon ECR, Menghubungkan ke tindakan sumber Amazon S3 yang menggunakan EventBridge dan AWS CloudTrail untuk S3, dan CodeCommit Tindakan sumber dan EventBridge for CodeCommit.

Bagaimana eksekusi pipeline dihentikan

Untuk menggunakan konsol untuk menghentikan eksekusi pipeline, Anda dapat memilih H entikan 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 Menghentikan 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 status.

  • Hentikan 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 yang gagal atau tugas di luar urutan.

Setiap opsi menghasilkan urutan fase eksekusi pipeline dan tindakan yang berbeda, sebagai berikut.

Opsi 1: Berhenti dan tunggu

Saat Anda memilih untuk berhenti dan menunggu, eksekusi yang dipilih berlanjut hingga tindakan dalam proses selesai. Misalnya, eksekusi pipeline berikut dihentikan saat tindakan build sedang berlangsung.

  1. Dalam tampilan pipeline, spanduk pesan sukses ditampilkan, dan tindakan build berlanjut hingga selesai. Status eksekusi pipeline adalah Ber henti.

    Dalam tampilan riwayat, status untuk tindakan yang sedang berlangsung, seperti tindakan build, adalah Sed ang berlangsung hingga tindakan build selesai. Sementara tindakan sedang berlangsung, status eksekusi pipeline adalah Ber henti.

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

    Dalam tampilan riwayat, status eksekusi adalah D ihentikan setelah tindakan dalam proses selesai.

    Gambar yang menunjukkan tampilan riwayat di mana status eksekusi D ihentikan setelah tindakan dalam proses 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 tindakan build sedang berlangsung.

  1. Dalam tampilan pipeline, pesan banner sukses ditampilkan, tindakan build menunjukkan status Sedang berjalan, dan eksekusi pipeline menunjukkan status Ber henti.

  2. Setelah eksekusi pipeline berhenti, tindakan build menunjukkan status Aband oned, dan eksekusi pipeline menunjukkan status Dih entikan. Tindakan selanjutnya tidak dimulai. Tombol Coba Ul ang diaktifkan.

  3. Dalam tampilan riwayat, status eksekusi adalah Dih entikan.

    Gambar yang menunjukkan tampilan riwayat di mana status eksekusi Dih entikan

Gunakan kasus untuk menghentikan eksekusi pipeline

Sebaiknya gunakan opsi stop and wait untuk menghentikan eksekusi pipeline. Opsi ini lebih aman karena menghindari kemungkinan tugas yang gagal atau tidak berurutan dalam pipeline Anda. Saat tindakan ditinggalkan CodePipeline, penyedia tindakan melanjutkan tugas apa pun yang terkait dengan tindakan tersebut. Dalam kasus CloudFormation tindakan, tindakan penerapan di pipeline ditinggalkan, tetapi pembaruan tumpukan mungkin berlanjut dan mengakibatkan pembaruan gagal.

Sebagai contoh tindakan yang ditinggalkan yang dapat mengakibatkan tugas di luar urutan, jika Anda menerapkan file besar (1GB) melalui tindakan penerapan S3, dan Anda memilih untuk menghentikan dan meninggalkan tindakan saat penerapan 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 penerapan yang sedang berlangsung. Karena ukuran file eksekusi baru kecil, penerapan baru selesai saat penerapan lama masih diunggah. Ketika penerapan lama selesai, file baru diganti oleh file lama.

Anda mungkin ingin menggunakan opsi berhenti dan abaikan 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 SUBSEDED

Mode default untuk mengolah eksekusi adalah mode SUBSEDED. Eksekusi terdiri dari serangkaian perubahan yang diambil dan diproses oleh eksekusi. Pipeline dapat memproses beberapa eksekusi secara bersamaan. Setiap eksekusi dijalankan melalui pipa secara terpisah. Pipeline memproses setiap eksekusi secara berurutan dan mungkin menggantikan eksekusi sebelumnya dengan yang lebih baru. 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 dikunci saat sedang berlangsung. Ketika eksekusi menyelesaikan suatu tahap, ia beralih ke tahap berikutnya dalam pipeline.

Gambar menunjukkan tahapan terkunci saat sedang berlangsung
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 dikunci, eksekusi menunggu diadakan di depan panggung yang terkunci. Semua tindakan yang dikonfigurasi untuk tahap harus diselesaikan dengan sukses sebelum tahap dianggap selesai. Kegagalan melepaskan kunci di atas panggung. Ketika eksekusi dihentikan, eksekusi tidak berlanjut dalam suatu tahap dan tahap dibuka kuncinya.

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.

Gambar menunjukkan bagaimana eksekusi menunggu menunggu di antara tahapan saat Tahap 2 dikunci
Sebelum: Stage 2 is locked as Execution 1 enters. Setelah: Execution 2 exits Stage 1 and waits between stages.

Aturan 3: Eksekusi yang menunggu digantikan oleh eksekusi yang lebih baru

Eksekusi hanya digantikan di antara tahapan. Panggung terkunci menampung satu eksekusi di depan panggung menunggu panggung selesai. Eksekusi yang lebih baru menyalip eksekusi yang menunggu dan melanjutkan 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.

Gambar yang menunjukkan bagaimana eksekusi menunggu digantikan oleh eksekusi 3

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.

Untuk informasi selengkapnya tentang pertimbangan untuk melihat dan beralih di antara mode eksekusi, lihatMengatur atau mengubah mode eksekusi pipeline. Untuk informasi selengkapnya tentang kuota dengan mode eksekusi, lihatKuota di AWS CodePipeline.

Bagaimana eksekusi diproses dalam mode QUEUED

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

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

Diagram berikut menunjukkan bagaimana tahapan dalam pipeline mode QUEUED proses eksekusi. 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 dibuka.

Diagram yang menunjukkan eksekusi dalam pipeline set untuk mode QUEUED.

Untuk informasi selengkapnya tentang pertimbangan untuk melihat dan beralih di antara mode eksekusi, lihatMengatur atau mengubah mode eksekusi pipeline. Untuk informasi selengkapnya tentang kuota dengan mode eksekusi, lihatKuota di AWS CodePipeline.

Bagaimana eksekusi diproses dalam mode PARALEL

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

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

Untuk informasi selengkapnya tentang pertimbangan untuk melihat dan beralih di antara mode eksekusi, lihatMengatur atau mengubah mode eksekusi pipeline. Untuk informasi selengkapnya tentang kuota dengan mode eksekusi, lihatKuota di AWS CodePipeline.

Mengelola Aliran Pipa

Aliran eksekusi pipa dapat dikontrol oleh:

  • Trans isi, yang mengontrol aliran eksekusi ke panggung. Transisi dapat diaktifkan atau dinonaktifkan. Ketika transisi dinonaktifkan, eksekusi pipeline tidak dapat memasuki tahap. Eksekusi pipeline yang menunggu untuk memasuki tahap di mana transisi dinonaktifkan disebut eksekusi inbound. Setelah Anda mengaktifkan transisi, eksekusi inbound bergerak ke panggung dan menguncinya.

    Mirip dengan eksekusi 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 yang menggantikan eksekusi lama saat transisi dinonaktifkan, memasuki tahap.

  • Tindakan persetujuan, yang mencegah pipeline beralih ke tindakan berikutnya hingga 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 hingga tindakan persetujuan disetujui atau ditolak atau waktunya habis. Tindakan persetujuan yang habis waktu diproses dengan cara yang sama seperti tindakan yang gagal.

  • K eg agalan, ketika tindakan dalam suatu tahap tidak selesai dengan sukses. Revisi tidak bertransisi ke tindakan berikutnya di tahap atau tahap berikutnya dalam pipeline. Berikut ini dapat terjadi:

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

    • 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 tahap sehingga, ketika tahap terkunci, semua tindakan memproses eksekusi yang sama. Anda dapat membuat panggung untuk setiap lingkungan aplikasi, Wilayah AWS, atau Zona Ketersediaan, dan seterusnya. Pipeline 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 Tes dan lingkungan Prod adalah tahapan terpisah.

Gambar menunjukkan dua jenis pengelompokan untuk tindakan secara bertahap, dengan opsi yang disarankan berada di sebelah kiri

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

Cara Kerja Eksekusi Inbound

Eksekusi inbound adalah eksekusi yang menunggu tahap, transisi, atau tindakan yang tidak tersedia untuk 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 berikutnya dinonaktifkan.

Anda dapat menonaktifkan transisi untuk menahan eksekusi inbound 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 inbound, Anda dapat melihat pipeline di konsol atau melihat output dari get-pipeline-state perintah.

Eksekusi inbound beroperasi dengan pertimbangan berikut:

  • Segera setelah tahap tindakan, transisi, atau terkunci tersedia, eksekusi inbound yang sedang berlangsung memasuki tahap dan berlanjut melalui pipeline.

  • Sementara eksekusi inbound sedang menunggu, itu dapat dihentikan secara manual. Eksekusi inbound dapat memiliki statusInProgress,Stopped, atauFailed.

  • Ketika eksekusi inbound 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 inbound.