Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Buat pipeline CI dinamis untuk proyek Java dan Python secara otomatis
Aromal Raj Jayarajan, Vijesh Vijayakumaran Nair, MAHESH RAGHUNANDANAN, dan Amarnath Reddy, 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
Pola ini menunjukkan cara membuat pipeline dynamic continuous integration (CI) untuk proyek Java dan Python secara otomatis dengan menggunakan alat pengembang AWS.
Ketika tumpukan teknologi terdiversifikasi dan aktivitas pengembangan meningkat, akan menjadi sulit untuk membuat dan memelihara jaringan pipa CI yang konsisten di seluruh organisasi. Dengan mengotomatiskan proses di AWS Step Functions, Anda dapat memastikan bahwa pipeline CI Anda konsisten dalam penggunaan dan pendekatannya.
Untuk mengotomatiskan pembuatan pipeline CI dinamis, pola ini menggunakan input variabel berikut:
Bahasa pemrograman (hanya Java atau Python)
Nama pipa
Tahapan pipa yang dibutuhkan
catatan
Step Functions mengatur pembuatan pipeline dengan menggunakan beberapa layanan AWS. Untuk informasi selengkapnya tentang layanan AWS yang digunakan dalam solusi ini, lihat bagian Alat dari pola ini.
Prasyarat dan batasan
Prasyarat
Akun AWS yang aktif
Bucket Amazon S3 di Wilayah AWS yang sama dengan solusi ini sedang diterapkan
Prinsip AWS Identity and Access Management (IAM) yang memiliki CloudFormation izin AWS yang diperlukan untuk membuat sumber daya yang diperlukan untuk solusi ini
Batasan
Pola ini hanya mendukung proyek Java dan Python.
Peran IAM yang disediakan dalam pola ini mengikuti prinsip hak istimewa paling sedikit. Izin peran IAM harus diperbarui berdasarkan sumber daya spesifik yang perlu dibuat oleh pipeline CI Anda.
Arsitektur
Tumpukan teknologi target
AWS CloudFormation
AWS CodeBuild
AWS CodeCommit
AWS CodePipeline
IAM
Amazon Simple Storage Service (Amazon S3)
AWS Systems Manager
AWS Step Functions
AWS Lambda
Amazon DynamoDB
Arsitektur target
Diagram berikut menunjukkan contoh alur kerja untuk membuat pipeline CI dinamis untuk proyek Java dan Python secara otomatis dengan menggunakan alat pengembang AWS.

Diagram menunjukkan alur kerja berikut:
Pengguna AWS menyediakan parameter input untuk pembuatan pipeline CI dalam format JSON. Input ini memulai alur kerja Step Functions (state machine) yang membuat pipeline CI dengan menggunakan alat pengembang AWS.
Fungsi Lambda membaca folder bernama input-reference, yang disimpan dalam bucket Amazon S3, dan kemudian menghasilkan file buildspec.yml. File yang dihasilkan ini menentukan tahapan pipeline CI dan disimpan kembali di bucket Amazon S3 yang sama yang menyimpan referensi parameter.
Step Functions memeriksa dependensi alur kerja pembuatan pipeline CI untuk setiap perubahan, dan memperbarui tumpukan dependensi sesuai kebutuhan.
Step Functions membuat sumber daya pipeline CI dalam CloudFormation tumpukan, termasuk CodeCommit repositori, CodeBuild proyek, dan pipeline. CodePipeline
CloudFormation Tumpukan menyalin kode sumber sampel untuk tumpukan teknologi yang dipilih (Java atau Python) dan file buildspec.yl ke repositori. CodeCommit
Rincian runtime pipeline CI disimpan dalam tabel DynamoDB.
Otomatisasi dan skala
Pola ini hanya untuk digunakan dalam satu lingkungan pengembangan saja. Perubahan konfigurasi diperlukan untuk digunakan di beberapa lingkungan pengembangan.
Untuk menambahkan dukungan untuk lebih dari satu CloudFormation tumpukan, Anda dapat membuat CloudFormation template tambahan. Untuk informasi selengkapnya, lihat Memulai AWS CloudFormation di CloudFormation dokumentasi.
Alat
Alat
AWS Step Functions adalah layanan orkestrasi tanpa server yang membantu Anda menggabungkan fungsi AWS Lambda dan layanan AWS lainnya untuk membangun aplikasi yang penting bagi bisnis.
AWS Lambda adalah layanan komputasi yang membantu Anda menjalankan kode tanpa perlu menyediakan atau mengelola server. Ini menjalankan kode Anda hanya bila diperlukan dan skala secara otomatis, jadi Anda hanya membayar untuk waktu komputasi yang Anda gunakan.
AWS CodeBuild adalah layanan build terkelola penuh yang membantu Anda mengompilasi kode sumber, menjalankan pengujian unit, dan menghasilkan artefak yang siap digunakan.
AWS CodeCommit adalah layanan kontrol versi yang membantu Anda menyimpan dan mengelola repositori Git secara pribadi, tanpa perlu mengelola sistem kontrol sumber Anda sendiri.
AWS CodePipeline membantu Anda memodelkan dan mengonfigurasi berbagai tahapan rilis perangkat lunak dengan cepat dan mengotomatiskan langkah-langkah yang diperlukan untuk merilis perubahan perangkat lunak secara terus menerus.
AWS Identity and Access Management (IAM) membantu Anda mengelola akses ke sumber daya AWS dengan aman dengan mengontrol siapa yang diautentikasi dan diberi wewenang untuk menggunakannya.
AWS Key Management Service (AWS KMS) membantu Anda membuat dan mengontrol kunci kriptografi untuk membantu melindungi data Anda.
Amazon Simple Storage Service (Amazon S3) adalah layanan penyimpanan objek berbasis cloud yang membantu Anda menyimpan, melindungi, dan mengambil sejumlah data.
AWS CloudFormation membantu Anda menyiapkan sumber daya AWS, menyediakannya dengan cepat dan konsisten, serta mengelolanya sepanjang siklus hidupnya di seluruh akun dan Wilayah AWS.
Amazon DynamoDB adalah layanan database NoSQL yang dikelola sepenuhnya yang menyediakan kinerja yang cepat, dapat diprediksi, dan dapat diskalakan.
AWS Systems Manager Parameter Store menyediakan penyimpanan hierarkis yang aman untuk manajemen data konfigurasi dan manajemen rahasia.
Kode
Kode untuk pola ini tersedia di GitHub automated-ci-pipeline-creation
Praktik terbaik
Jangan masukkan kredensil (rahasia) seperti token atau kata sandi langsung ke CloudFormation templat atau konfigurasi tindakan Step Functions. Jika Anda melakukannya, informasi akan ditampilkan di log DynamoDB. Sebagai gantinya, gunakan AWS Secrets Manager untuk menyiapkan dan menyimpan rahasia. Kemudian, rujuk rahasia yang disimpan di Secrets Manager dalam CloudFormation template dan konfigurasi tindakan Step Functions sesuai kebutuhan. Untuk informasi selengkapnya, lihat Apa itu AWS Secrets Manager dalam dokumentasi Secrets Manager.
Konfigurasikan enkripsi sisi server untuk CodePipeline artefak yang disimpan di Amazon S3. Untuk informasi selengkapnya, lihat Mengonfigurasi enkripsi sisi server untuk artefak yang disimpan di Amazon S3 dalam dokumentasi. CodePipeline CodePipeline
Terapkan izin hak istimewa paling sedikit saat mengonfigurasi peran IAM. Untuk informasi selengkapnya, lihat Menerapkan izin hak istimewa terkecil dalam dokumentasi IAM.
Pastikan bucket Amazon S3 Anda tidak dapat diakses publik. Untuk informasi selengkapnya, lihat Mengonfigurasi setelan blokir akses publik untuk bucket S3 Anda di dokumentasi Amazon S3.
Pastikan Anda mengaktifkan pembuatan versi untuk bucket Amazon S3 Anda. Untuk informasi selengkapnya, lihat Menggunakan pembuatan versi di bucket S3 di dokumentasi Amazon S3.
Gunakan IAM Access Analyzer saat mengonfigurasi kebijakan IAM. Alat ini memberikan rekomendasi yang dapat ditindaklanjuti untuk membantu Anda membuat kebijakan IAM yang aman dan fungsional. Untuk informasi selengkapnya, lihat Menggunakan AWS Identity and Access Management Access Analyzer dalam dokumentasi IAM.
Jika memungkinkan, tentukan kondisi akses tertentu saat mengonfigurasi kebijakan IAM.
Aktifkan CloudWatch pencatatan Amazon untuk tujuan pemantauan dan audit. Untuk informasi selengkapnya, lihat Apa itu Amazon CloudWatch Logs? dalam CloudWatch dokumentasi.
Epik
Tugas | Deskripsi | Keterampilan yang dibutuhkan |
---|---|---|
Buat bucket Amazon S3. | Buat bucket Amazon S3 (atau gunakan bucket yang sudah ada) untuk menyimpan CloudFormation template, kode sumber, dan file input yang diperlukan untuk solusi tersebut. Untuk informasi selengkapnya, lihat Langkah 1: Membuat bucket S3 pertama Anda di dokumentasi Amazon S3. catatanBucket Amazon S3 harus berada di Wilayah AWS yang sama dengan yang Anda gunakan solusinya. | AWS DevOps |
Kloning GitHub repositori. | Kloning GitHub automated-ci-pipeline-creation
Untuk informasi selengkapnya, lihat Mengkloning repositori dalam dokumentasi | AWS DevOps |
Unggah folder Solution Templates dari GitHub repositori kloning ke bucket Amazon S3 Anda. | Salin konten dari folder Solution-Templates yang dikloning dan unggah ke bucket Amazon S3 yang Anda buat. Untuk informasi selengkapnya, lihat Mengunggah objek di dokumentasi Amazon S3. catatanPastikan Anda mengunggah konten folder Solution-Templates saja. Anda dapat mengunggah file di tingkat root bucket Amazon S3 saja. | AWS DevOps |
Tugas | Deskripsi | Keterampilan yang dibutuhkan |
---|---|---|
Buat CloudFormation tumpukan untuk menerapkan solusi dengan menggunakan file template.ymldi repositori kloning. GitHub |
catatanSaat tumpukan Anda sedang dibuat, itu terdaftar di halaman Stacks dengan status CREATE_IN_PROGRESS. Pastikan Anda menunggu status tumpukan berubah menjadi CREATE_COMPLETE sebelum menyelesaikan langkah-langkah yang tersisa dalam pola ini. | Administrator AWS, AWS DevOps |
Tugas | Deskripsi | Keterampilan yang dibutuhkan |
---|---|---|
Jalankan fungsi langkah yang Anda buat. |
Pemformatan JSON
Contoh masukan JSON Java
Contoh masukan Python JSON
| Administrator AWS, AWS DevOps |
Konfirmasikan bahwa CodeCommit repositori untuk pipa CI telah dibuat. |
| AWS DevOps |
Periksa sumber daya CodeBuild proyek. |
| AWS DevOps |
Validasi CodePipeline tahapan. |
| AWS DevOps |
Konfirmasikan bahwa pipa CI berhasil berjalan. |
| AWS DevOps |
Tugas | Deskripsi | Keterampilan yang dibutuhkan |
---|---|---|
Hapus tumpukan sumber daya di CloudFormation. | Hapus tumpukan sumber daya pipa CI di CloudFormation. Untuk informasi selengkapnya, lihat Menghapus tumpukan di CloudFormation konsol AWS dalam CloudFormation dokumentasi. catatanPastikan Anda menghapus tumpukan bernama -stack<project_name>. | AWS DevOps |
Hapus dependensi pipeline CI di Amazon S3 dan. CloudFormation |
catatanPastikan Anda menghapus tumpukan bernama pipeline-creation-dependencies-stack. | AWS DevOps |
Hapus bucket template Amazon S3. | Hapus bucket Amazon s3 yang Anda buat di bagian Konfigurasikan prasyarat dari pola ini, yang menyimpan templat untuk solusi ini. Untuk informasi selengkapnya, lihat Menghapus bucket di dokumentasi Amazon S3. | AWS DevOps |
Sumber daya terkait
Membuat mesin status Step Functions yang menggunakan Lambda (dokumentasi AWS Step Functions)
AWS Step Functions WorkFlow Studio (dokumentasi AWS Step Functions)
Bagaimana cara CloudFormation kerja AWS? ( CloudFormation Dokumentasi AWS)
Lengkap CI/CD dengan AWS CodeCommit, AWS CodeBuild, AWS CodeDeploy, dan AWS CodePipeline
(postingan blog AWS) Kuota IAM dan AWS STS, persyaratan nama, dan batas karakter (dokumentasi IAM)