Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Siapkan CI/CD pipeline dengan menggunakan AWS CodePipeline dan AWS CDK
Konstantin Zarudaev, Yasha Dabas, Lars Kinder, dan Cizer Pereira, Amazon Web Services
Beranda
Pemberitahuan: AWS CodeCommit tidak lagi tersedia untuk pelanggan baru. Pelanggan yang sudah ada AWS CodeCommit dapat terus menggunakan layanan seperti biasa. Belajarlah lagiMengotomatiskan
Pola ini mendefinisikan pipeline integrasi berkelanjutan dan pengiriman berkelanjutan (CI/CD) yang dapat digunakan kembali di Amazon Web Services (AWS) dengan repositori AWS. CodeCommit CodePipeline Pipeline AWS ditulis menggunakan AWS Cloud Development Kit (AWS CDK) v2
Dengan menggunakan CodePipeline, Anda dapat memodelkan berbagai tahapan proses rilis perangkat lunak Anda melalui antarmuka AWS Management Console, AWS Command Line Interface (AWS CLI), AWS, atau CloudFormation AWS. SDKs Pola ini menunjukkan implementasi CodePipeline dan komponennya menggunakan AWS CDK. Selain membangun pustaka, AWS CDK menyertakan toolkit (perintah CLIcdk), yang merupakan alat utama untuk berinteraksi dengan aplikasi AWS CDK Anda. Di antara fungsi lainnya, toolkit menyediakan kemampuan untuk mengonversi satu atau lebih tumpukan ke CloudFormation templat dan menerapkannya ke akun AWS.
Pipeline mencakup pengujian untuk memvalidasi keamanan pustaka pihak ketiga Anda, dan membantu memastikan rilis otomatis yang dipercepat di lingkungan yang ditentukan. Anda dapat meningkatkan keamanan keseluruhan aplikasi Anda dengan menempatkannya melalui proses validasi.
Maksud dari pola ini adalah untuk mempercepat penggunaan CI/CD pipeline Anda untuk menyebarkan kode Anda sambil memastikan sumber daya yang Anda terapkan mematuhi praktik terbaik. DevOps Setelah menerapkan kode contoh
Prasyarat dan batasan
Prasyarat
Akun AWS yang aktif
Pemahaman dasar sebagai berikut:
AWS CDK
AWS CloudFormation
AWS CodePipeline
TypeScript
Batasan
Pola ini TypeScript hanya menggunakan AWS CDK. Ini tidak mencakup bahasa lain yang didukung oleh AWS CDK.
Versi produk
Gunakan versi terbaru dari alat-alat berikut:
Antarmuka Baris Perintah AWS (AWS CLI)
cfn_nag
git-remote-codecommit
Node.js
Arsitektur
Tumpukan teknologi target
AWS CDK
AWS CloudFormation
AWS CodeCommit
AWS CodePipeline
Arsitektur target
Pipeline dipicu oleh perubahan dalam AWS CodeCommit repository ()SampleRepository. Pada awalnya, CodePipeline membangun artefak, memperbarui dirinya sendiri, dan memulai proses penyebaran. Pipeline yang dihasilkan menyebarkan solusi ke tiga lingkungan independen:
Dev - Pemeriksaan kode tiga langkah di lingkungan pengembangan aktif
Uji - Integrasi dan lingkungan uji regresi
Prod - Lingkungan produksi
Tiga langkah yang termasuk dalam tahap Dev adalah linting, keamanan, dan pengujian unit. Langkah-langkah ini berjalan secara paralel untuk mempercepat proses. Untuk memastikan bahwa pipa hanya menyediakan artefak yang berfungsi, itu akan berhenti berjalan setiap kali langkah dalam proses gagal. Setelah penerapan tahap Dev, pipeline menjalankan tes validasi untuk memverifikasi hasilnya. Jika berhasil, pipeline kemudian akan menyebarkan artefak ke lingkungan Pengujian, yang berisi validasi pasca-penerapan. Langkah terakhir adalah menyebarkan artefak ke lingkungan Prod.
Diagram berikut menunjukkan alur kerja dari CodeCommit repositori ke proses build dan update yang dilakukan oleh CodePipeline, tiga langkah lingkungan Dev, dan penerapan dan validasi berikutnya di masing-masing dari tiga lingkungan.

Alat
Layanan AWS
AWS Cloud Development Kit (AWS CDK) adalah kerangka kerja pengembangan perangkat lunak yang membantu Anda menentukan dan menyediakan infrastruktur AWS Cloud dalam kode.
AWS CloudFormation membantu Anda menyiapkan sumber daya AWS, menyediakannya dengan cepat dan konsisten, serta mengelolanya sepanjang siklus hidupnya di seluruh akun dan Wilayah AWS. Dalam pola ini CloudFormation template dapat digunakan untuk membuat CodeCommit repositori dan pipa CodePipeline CI/CD.
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 adalah CI/CD layanan yang 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 Command Line Interface (AWS CLI) adalah alat sumber terbuka yang membantu Anda berinteraksi dengan layanan AWS melalui perintah di shell baris perintah Anda.
Alat-alat lainnya
cfn_nag
adalah alat sumber terbuka yang mencari pola dalam CloudFormation templat untuk mengidentifikasi potensi masalah keamanan. git-remote-codecommitadalah utilitas untuk mendorong dan menarik kode dari CodeCommit repositori dengan memperluas Git.
Node.js
adalah lingkungan JavaScript runtime berbasis peristiwa yang dirancang untuk membangun aplikasi jaringan yang dapat diskalakan.
Kode
Kode untuk pola ini tersedia di GitHub AWS CodePipeline dengan repositori CI/CD praktik
Praktik terbaik
Tinjau sumber daya, seperti kebijakan AWS Identity and Access Management (IAM), untuk mengonfirmasi bahwa mereka selaras dengan praktik terbaik organisasi Anda.
Epik
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Instal alat di macOS atau Linux. | Jika Anda menggunakan macOS atau Linux, Anda dapat menginstal alat dengan menjalankan perintah berikut di terminal pilihan Anda atau menggunakan Homebrew
| DevOps insinyur |
Siapkan AWS CLI. | Untuk menyiapkan AWS CLI, gunakan petunjuk untuk sistem operasi Anda:
| DevOps insinyur |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Unduh atau kloning kode. | Untuk mendapatkan kode yang digunakan oleh pola ini, lakukan salah satu hal berikut:
Hapus
Nantinya, Anda akan menggunakan CodeCommit repositori AWS yang baru dibuat sebagai remote origin. | DevOps insinyur |
Connect ke akun AWS. | Anda dapat terhubung dengan menggunakan token keamanan sementara atau otentikasi landing zone. Untuk mengonfirmasi bahwa Anda menggunakan akun dan Wilayah AWS yang benar, jalankan perintah berikut.
| DevOps insinyur |
Bootstrap lingkungan. | Untuk mem-bootstrap lingkungan AWS CDK, jalankan perintah berikut.
Setelah Anda berhasil mem-bootstrap lingkungan, output berikut akan ditampilkan.
Untuk informasi selengkapnya tentang bootstrap AWS CDK, lihat dokumentasi AWS CDK. | DevOps insinyur |
Sintesis template. | Untuk mensintesis aplikasi AWS CDK, gunakan perintah.
Anda akan melihat output berikut.
| DevOps insinyur |
Menyebarkan CodePipeline tumpukan. | Sekarang setelah Anda melakukan bootstrap dan mensintesis CloudFormation template, Anda dapat menerapkannya. Penyebaran akan membuat CodePipeline pipa dan CodeCommit repositori, yang akan menjadi sumber dan pemicu pipa.
Setelah Anda menjalankan perintah, Anda akan melihat penyebaran informasi CodePipeline tumpukan dan output yang berhasil.
| DevOps insinyur |
Siapkan CodeCommit repositori dan cabang jarak jauh. | Setelah penerapan berhasil, CodePipeline akan memulai proses pertama pipeline, yang dapat Anda temukan di konsol CodePipeline AWS
Untuk memperbaiki kesalahan ini, siapkan remote origin sebagai
| DevOps insinyur |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Lakukan perubahan untuk mengaktifkan pipeline. | Setelah penerapan awal berhasil, Anda harus memiliki CI/CD pipeline lengkap dengan
| DevOps insinyur |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Jalankan proses pengembangan dengan menggunakan Makefile. | Anda dapat menjalankan seluruh pipeline secara lokal dengan menggunakan Untuk menguji penggunaan
| Pengembang aplikasi, DevOps insinyur |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Hapus sumber daya aplikasi AWS CDK. | Untuk membersihkan aplikasi AWS CDK Anda, jalankan perintah berikut.
Ketahuilah bahwa bucket Amazon Simple Storage Service (Amazon S3) yang dibuat selama bootstrap tidak dihapus secara otomatis. Mereka memerlukan kebijakan retensi yang memungkinkan penghapusan, atau Anda perlu menghapusnya secara manual di akun AWS Anda. | DevOps insinyur |
Pemecahan Masalah
| Isu | Solusi |
|---|---|
Template tidak berfungsi seperti yang diharapkan. | Jika ada yang tidak beres dan template tidak berfungsi, pastikan Anda memiliki yang berikut ini:
|