Bagaimana eksekusi pipeline - 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

Bagian ini memberikan gambaran umum tentang cara CodePipeline memproses serangkaian perubahan. CodePipeline melacak setiap eksekusi pipa yang dimulai ketika perubahan dibuat ke kode sumber. CodePipeline juga melacak cara setiap eksekusi berlangsung melalui pipa, termasuk apakah itu digantikan oleh eksekusi lain.

Bagaimana eksekusi pipa dimulai

Anda dapat memicu eksekusi ketika Anda mengubah kode sumber Anda atau secara manual memulai pipa. 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 pipa, pipa mendeteksi perubahan dan memulai eksekusi.

catatan

Jika pipeline berisi beberapa tindakan sumber, semuanya berjalan lagi, bahkan jika perubahan terdeteksi untuk satu tindakan sumber saja.

Bagaimana eksekusi pipa dihentikan

Untuk menggunakan konsol untuk menghentikan eksekusi pipeline, Anda dapat memilihEksekusi stoppada halaman visualisasi pipa, pada halaman riwayat eksekusi, atau pada halaman riwayat rinci. Untuk menggunakan CLI untuk menghentikan eksekusi pipa, Anda menggunakanstop-pipeline-executionperintah. 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 diperbolehkan untuk menyelesaikan, dan tindakan selanjutnya tidak dimulai. Eksekusi pipa tidak berlanjut ke tahap selanjutnya. Anda tidak dapat menggunakan opsi ini pada eksekusi yang sudah dalamStoppingnegara.

  • Berhenti dan meninggalkan: Semua eksekusi tindakan yang sedang berlangsung ditinggalkan dan tidak lengkap, dan tindakan selanjutnya tidak dimulai. Eksekusi pipa tidak berlanjut ke tahap selanjutnya. Anda dapat menggunakan opsi ini pada eksekusi yang sudah dalamStoppingnegara.

    catatan

    Opsi ini dapat menyebabkan tugas gagal atau keluar dari tugas urutan.

Setiap hasil opsi dalam urutan yang berbeda dari pipa dan eksekusi tindakan fase, sebagai berikut.

Opsi 1: Berhenti dan tunggu

Bila Anda memilih untuk berhenti dan menunggu, eksekusi yang dipilih berlanjut hingga tindakan yang sedang berlangsung selesai. Misalnya, eksekusi pipa berikut dihentikan saat aksi pembangunan sedang berlangsung.

  1. Dalam tampilan pipa, spanduk pesan sukses ditampilkan, dan aksi build berlanjut sampai selesai. Status eksekusi pipa adalahPemfilteran stopword.

    Dalam tampilan histori, status untuk tindakan yang sedang berlangsung, seperti aksi pembangunan, adalahSedang berlangsungsampai aksi build selesai. Sementara tindakan sedang berlangsung, status eksekusi pipaPemfilteran stopword.

  2. Eksekusi berhenti saat proses penghentian selesai. Jika aksi build berhasil diselesaikan, statusnyaBerhasil, dan eksekusi pipa menunjukkan statusDihentikan. Tindakan selanjutnya tidak dimulai. ParameterCoba lagitombol diaktifkan.

    Dalam tampilan sejarah, status eksekusiDihentikansetelah tindakan yang sedang berlangsung selesai.

Opsi 2: Berhenti dan meninggalkan

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

  1. Dalam tampilan pipa, pesan spanduk sukses ditampilkan, aksi membangun menunjukkan statusSedang berlangsung, dan eksekusi pipa menunjukkan statusPemfilteran stopword.

  2. Setelah eksekusi pipa berhenti, aksi pembangunan menunjukkan statusDitinggalkan, dan eksekusi pipa menunjukkan statusDihentikan. Tindakan selanjutnya tidak dimulai. ParameterCoba lagitombol diaktifkan.

  3. Dalam tampilan sejarah, status eksekusiDihentikan.

Gunakan kasus untuk menghentikan eksekusi pipa

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

Sebagai contoh tindakan yang ditinggalkan yang dapat mengakibatkan tugas di luar urutan, 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 di CodePipeline, namun berlanjut di Amazon S3. Amazon S3 tidak menemukan instruksi apa pun untuk membatalkan upload. Selanjutnya, jika Anda memulai eksekusi pipa baru dengan file yang sangat kecil, sekarang ada dua penyebaran yang sedang berlangsung. Karena ukuran file eksekusi baru kecil, penyebaran baru selesai sementara penyebaran lama masih diunggah. Ketika penyebaran lama selesai, file baru ditimpa oleh file lama.

Anda mungkin ingin menggunakan opsi berhenti dan meninggalkan dalam kasus di mana Anda memiliki tindakan khusus. Misalnya, Anda dapat meninggalkan tindakan kustom dengan pekerjaan yang tidak perlu selesai sebelum Anda menghentikan eksekusi untuk eksekusi baru dengan perbaikan bug.

Bagaimana eksekusi diproses dalam pipa

Eksekusi terdiri dari satu set perubahan yang diambil dan diproses oleh eksekusi. Pipeline dapat memproses beberapa eksekusi pada saat yang sama. Setiap eksekusi dijalankan melalui pipa secara terpisah. Pipa memproses setiap eksekusi secara berurutan dan mungkin menggantikan eksekusi sebelumnya dengan yang kemudian. Aturan berikut digunakan untuk memproses eksekusi dalam pipa.

Aturan 1: Tahapan terkunci saat eksekusi sedang diproses

Karena setiap tahap dapat memproses hanya satu eksekusi pada satu waktu, tahap terkunci 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 berikutnya menunggu panggung dibuka

Sementara panggung terkunci, eksekusi menunggu diadakan di depan tahap 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 tahap dan panggung tidak terkunci.

catatan

Sebelum Anda menghentikan eksekusi, sebaiknya nonaktifkan 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. Tahap terkunci memegang satu eksekusi di bagian depan panggung menunggu panggung selesai. 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 tahap sementara eksekusi 3 memasuki tahap 1.setelah:eksekusi 3 keluar tahap 1. eksekusi 2 digantikan oleh eksekusi 3.

Mengelola alur

Aliran eksekusi pipa dapat dikendalikan oleh:

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

  • Sesitindakan persetujuan, yang mencegah pipa beralih ke tindakan berikutnya sampai izin diberikan (misalnya, melalui persetujuan manual dari pengguna IAM resmi). Anda mungkin 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 timed-out diproses dengan cara yang sama seperti tindakan gagal.

  • SEBUAHkegagalan, ketika tindakan dalam sebuah panggung tidak berhasil diselesaikan. Revisi tidak beralih ke tindakan berikutnya di panggung atau tahap berikutnya dalam pipa. Berikut ini dapat terjadi:

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

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

Ketika memutuskan bagaimana perubahan kode harus mengalir melalui pipa Anda, yang terbaik adalah untuk kelompok tindakan terkait dalam tahap sehingga, ketika tahap mengunci, tindakan semua memproses eksekusi yang sama. Anda dapat membuat panggung untuk setiap lingkungan aplikasi,Wilayah AWS, atau Availability Zone, dan sebagainya. Pipa dengan terlalu banyak tahap (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 dikerahkan. Dalam contoh ini, perubahan dikerahkan ke lingkungan Test dan kemudian diuji, dan kemudian perubahan terbaru dari lingkungan pengujian dikerahkan ke lingkungan Produksi. Dalam contoh yang disarankan, lingkungan Test dan lingkungan Prod adalah tahapan yang terpisah.

Kiri:tes terkait, menyebarkan, dan tindakan persetujuan dikelompokkan bersama-sama (direkomendasikan). Kanan:tindakan terkait dalam tahap terpisah (tidak dianjurkan).

Bagaimana Inbound Executions Bekerja

Eksekusi inbound 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 berikutnya dinonaktifkan.

Anda dapat menonaktifkan transisi untuk menahan eksekusi inbound jika Anda ingin mengontrol apakah eksekusi saat ini memiliki waktu untuk menyelesaikan dalam tahap berikutnya, atau jika Anda ingin menghentikan semua tindakan pada titik tertentu. Untuk menentukan apakah Anda memiliki eksekusi inbound, Anda dapat melihat pipa di konsol atau melihat output dariget-pipeline-stateperintah.

Eksekusi masuk beroperasi dengan pertimbangan berikut:

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

  • Sementara eksekusi inbound sedang menunggu, dapat dihentikan secara manual. Eksekusi inbound dapat memilikiInProgress,Stopped, atauFailednegara.

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

Anda dapat melihat atau menghentikan eksekusi inbound. Lihat Lihat status eksekusi inbound (CLI) dan Hentikan Eksekusi Inbound (CLI).