Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Secara otomatis mendeteksi perubahan dan memulai CodePipeline jaringan pipa yang berbeda untuk monorepo di CodeCommit
Helton Ribeiro, Petrus Batalha, dan Ricardo Morais, Amazon Web Services
Ringkasan
Pemberitahuan: AWS CodeCommit tidak lagi tersedia untuk pelanggan baru. Pelanggan yang sudah ada AWS CodeCommit dapat terus menggunakan layanan seperti biasa. Pelajari selengkapnya
Pemberitahuan: AWS Cloud9 tidak lagi tersedia untuk pelanggan baru. Pelanggan yang sudah ada AWS Cloud9 dapat terus menggunakan layanan seperti biasa. Pelajari selengkapnya
Pola ini membantu Anda secara otomatis mendeteksi perubahan pada kode sumber aplikasi berbasis monorepo AWS CodeCommit dan kemudian memulai pipeline yang menjalankan integrasi berkelanjutan dan pengiriman berkelanjutan (CI/CD) automation for each microservice. This approach means that each microservice in your monorepo-based application can have a dedicated CI/CDpipeline, AWS CodePipeline yang memastikan visibilitas yang lebih baik, berbagi kode yang lebih mudah, dan peningkatan kolaborasi, standardisasi, dan kemampuan ditemukan.
Solusi yang dijelaskan dalam pola ini tidak melakukan analisis ketergantungan apa pun di antara layanan mikro di dalam monorepo. Ini hanya mendeteksi perubahan dalam kode sumber dan memulai pipa yang cocok CI/CD .
Pola ini digunakan AWS Cloud9 sebagai lingkungan pengembangan terintegrasi (IDE) dan AWS Cloud Development Kit (AWS CDK) untuk mendefinisikan infrastruktur dengan menggunakan dua AWS CloudFormation tumpukan: MonoRepoStack
danPipelinesStack
. MonoRepoStack
Tumpukan menciptakan monorepo AWS CodeCommit dan AWS Lambda fungsi yang memulai pipeline. CI/CD PipelinesStack
Tumpukan mendefinisikan infrastruktur pipeline Anda.
penting
Alur kerja pola ini adalah bukti konsep (PoC). Kami menyarankan Anda menggunakannya hanya di lingkungan pengujian. Jika Anda ingin menggunakan pendekatan pola ini di lingkungan produksi, lihat Praktik terbaik keamanan di IAM dalam dokumentasi AWS Identity and Access Management (IAM) dan buat perubahan yang diperlukan pada peran IAM Anda dan. Layanan AWS
Prasyarat dan batasan
Prasyarat
AWS Akun aktif.
AWS Command Line Interface (AWS CLI), diinstal dan dikonfigurasi. Untuk informasi selengkapnya, lihat Menginstal, memperbarui, dan menghapus instalan AWS CLI dalam AWS CLI dokumentasi.
Python 3 dan
pip
, diinstal pada mesin lokal Anda. Untuk informasi selengkapnya, lihat dokumentasi Python. AWS CDK, diinstal dan dikonfigurasi. Untuk informasi selengkapnya, lihat AWS CDK Memulai dengan AWS CDK dokumentasi.
AWS Cloud9 IDE, diinstal dan dikonfigurasi. Untuk informasi selengkapnya, lihat Menyiapkan AWS Cloud9 dalam AWS Cloud9 dokumentasi.
GitHub AWS CodeCommit Monorepo multi-pipeline memicu
repositori, dikloning pada mesin lokal Anda. Direktori yang ada berisi kode aplikasi yang ingin Anda buat dan terapkan CodePipeline.
Keakraban dan pengalaman dengan praktik DevOps terbaik di. AWS Cloud Untuk meningkatkan keakraban Anda DevOps, Anda dapat menggunakan pola Bangun arsitektur yang digabungkan secara longgar dengan layanan mikro menggunakan DevOps praktik dan AWS Cloud9 di situs web Prescriptive Guidance. AWS
Arsitektur
Diagram berikut menunjukkan bagaimana menggunakan AWS CDK untuk mendefinisikan infrastruktur dengan dua AWS CloudFormation tumpukan: MonoRepoStack
danPipelinesStack
.

Diagram menunjukkan alur kerja berikut:
Proses bootstrap menggunakan AWS CDK untuk membuat AWS CloudFormation tumpukan
MonoRepoStack
danPipelinesStack
.MonoRepoStack
Tumpukan membuat CodeCommit repositori untuk aplikasi Anda dan fungsimonorepo-event-handler
Lambda yang dimulai setelah setiap komit.PipelinesStack
Tumpukan membuat pipeline yang diprakarsai oleh fungsi Lambda. CodePipeline Setiap layanan mikro harus memiliki pipa infrastruktur yang ditentukan.Pipeline untuk
microservice-n
diprakarsai oleh fungsi Lambda dan memulai tahapan CI/CD terisolasi yang didasarkan pada kode sumber di. CodeCommitPipeline untuk
microservice-1
diprakarsai oleh fungsi Lambda dan memulai tahapan CI/CD terisolasi yang didasarkan pada kode sumber di. CodeCommit
Diagram berikut menunjukkan penyebaran AWS CloudFormation tumpukan MonoRepoStack
dan PipelinesStack
dalam akun.

Seorang pengguna mengubah kode di salah satu layanan mikro aplikasi.
Pengguna mendorong perubahan dari repositori lokal ke repositori. CodeCommit
Aktivitas push memulai fungsi Lambda yang menerima semua dorongan ke repositori. CodeCommit
Fungsi Lambda membaca parameter di Parameter Store, kemampuan AWS Systems Manager, untuk mengambil ID komit terbaru. Parameter memiliki format penamaan:
/MonoRepoTrigger/{repository}/{branch_name}/LastCommit
. Jika parameter tidak ditemukan, fungsi Lambda membaca ID komit terakhir dari CodeCommit repositori dan menyimpan nilai yang dikembalikan di Parameter Store.Setelah mengidentifikasi ID komit dan file yang diubah, fungsi Lambda mengidentifikasi pipeline untuk setiap direktori microservice dan memulai pipeline yang diperlukan. CodePipeline
Alat
AWS Cloud Development Kit (AWS CDK)adalah kerangka pengembangan perangkat lunak untuk mendefinisikan infrastruktur cloud dalam kode dan menyediakannya. AWS CloudFormation
Python
adalah bahasa pemrograman yang memungkinkan Anda bekerja dengan cepat dan mengintegrasikan sistem dengan lebih efektif.
Kode
Kode sumber dan template untuk pola ini tersedia di repositori pemicu multi-pipeline GitHub AWS CodeCommit monorepo
Praktik terbaik
Contoh arsitektur ini tidak menyertakan solusi pemantauan untuk infrastruktur yang digunakan. Jika Anda ingin menerapkan solusi ini di lingkungan produksi, kami sarankan Anda mengaktifkan pemantauan. Untuk informasi selengkapnya, lihat Memantau aplikasi tanpa server Anda dengan CloudWatch Application Insights dalam dokumentasi AWS Serverless Application Model ()AWS SAM.
Saat Anda mengedit kode sampel yang disediakan oleh pola ini, ikuti praktik terbaik untuk mengembangkan dan menerapkan infrastruktur cloud dalam AWS CDK dokumentasi.
Saat Anda menentukan saluran pipa layanan mikro, tinjau praktik terbaik keamanan dalam dokumentasi. AWS CodePipeline
Anda juga dapat memeriksa AWS CDK kode Anda untuk praktik terbaik dengan menggunakan utilitas cdk-nag
. Alat ini menggunakan seperangkat aturan, dikelompokkan berdasarkan paket, untuk mengevaluasi kode Anda. Paket yang tersedia adalah:
Epik
Tugas | Deskripsi | Keterampilan yang dibutuhkan |
---|---|---|
Buat lingkungan Python virtual. | Di AWS Cloud9 IDE Anda, buat lingkungan Python virtual dan instal dependensi yang diperlukan dengan menjalankan perintah berikut:
| Developer |
Bootstrap Akun AWS dan Wilayah AWS untuk AWS CDK. | Bootstrap required Akun AWS dan Region dengan menjalankan perintah berikut:
| Developer |
Tugas | Deskripsi | Keterampilan yang dibutuhkan |
---|---|---|
Tambahkan kode sampel Anda ke direktori aplikasi Anda. | Tambahkan direktori yang berisi kode aplikasi sampel Anda ke | Developer |
Edit file | Tambahkan nama direktori kode aplikasi Anda dan nama pipeline ke | Developer |
Buat pipa. | Dalam Anda dapat menyalin salah satu file dan membuat perubahan sesuai dengan kebutuhan aplikasi Anda. | Developer |
Edit file | Di Misalnya, kode berikut menunjukkan definisi pipeline dalam
| Developer |
Tugas | Deskripsi | Keterampilan yang dibutuhkan |
---|---|---|
Menyebarkan AWS CloudFormation tumpukan. | Terapkan AWS CloudFormation Anda dapat mengubah nama repositori dengan menjalankan perintah. catatanAnda dapat secara bersamaan menyebarkan kedua pipeline dengan menggunakan perintah. | Developer |
Validasi CodeCommit repositori. | Validasi bahwa sumber daya Anda dibuat dengan menjalankan pentingKarena AWS CloudFormation tumpukan membuat CodeCommit repositori tempat monorepo disimpan, jangan jalankan | Developer |
Validasi hasil AWS CloudFormation tumpukan. | Validasi bahwa AWS CloudFormation
| Developer |
Tugas | Deskripsi | Keterampilan yang dibutuhkan |
---|---|---|
Menyebarkan AWS CloudFormation tumpukan. | AWS CloudFormation Menyebarkan PipelinesStack tumpukan dengan menjalankan catatanAnda juga dapat menyebarkan secara bersamaan menyebarkan kedua pipeline dengan menjalankan perintah. Contoh keluaran berikut menunjukkan bagaimana
| Developer |
Validasi hasil AWS CloudFormation tumpukan. | Validasi bahwa AWS CloudFormation
| Developer |
Tugas | Deskripsi | Keterampilan yang dibutuhkan |
---|---|---|
Hapus AWS CloudFormation tumpukan Anda. | Jalankan perintah | Developer |
Hapus bucket S3 untuk pipeline Anda. |
| Developer |
Pemecahan Masalah
Isu | Solusi |
---|---|
Saya mengalami AWS CDK masalah. | Lihat Memecahkan AWS CDK masalah umum dalam dokumentasi AWS CDK. |
Saya mendorong kode layanan mikro saya, tetapi pipa layanan mikro tidak berjalan. | Validasi pengaturan Verifikasi konfigurasi cabang:
Validasi file konfigurasi:
Pemecahan masalah di konsol AWS CodePipeline cek:
AWS Lambda pemecahan masalah:
|
Saya perlu memindahkan semua layanan mikro saya. | Ada dua pendekatan untuk memaksa pemindahan semua layanan mikro. Pilih opsi yang sesuai dengan kebutuhan Anda. Pendekatan 1: Hapus parameter di Parameter Store Metode ini melibatkan penghapusan parameter tertentu dalam Systems Manager Parameter Store yang melacak ID komit terakhir yang digunakan untuk penerapan. Saat Anda menghapus parameter ini, sistem dipaksa untuk menerapkan kembali semua layanan mikro pada pemicu berikutnya, karena ia menganggapnya sebagai keadaan baru. Langkah:
Kelebihan:
Kontra:
Pendekatan 2: Dorong komit di setiap subfolder monorepo Metode ini melibatkan membuat perubahan kecil dan mendorongnya di setiap subfolder layanan mikro di dalam monorepo untuk memulai jaringan pipa masing-masing. Langkah:
Kelebihan:
Kontra:
|
Sumber daya terkait
Integrasi dan pengiriman berkelanjutan (CI/CD) menggunakan CDK Pipelines (dokumentasi)AWS CDK
modul aws-cdk/pipelines (referensi API)AWS CDK