Buat pipeline CI dinamis untuk proyek Java dan Python secara otomatis - AWS Prescriptive Guidance

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.

Alur kerja untuk membuat pipeline CI dinamis untuk proyek Java dan Python secara otomatis menggunakan alat AWS.

Diagram menunjukkan alur kerja berikut:

  1. 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.

  2. 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.

  3. Step Functions memeriksa dependensi alur kerja pembuatan pipeline CI untuk setiap perubahan, dan memperbarui tumpukan dependensi sesuai kebutuhan.

  4. Step Functions membuat sumber daya pipeline CI dalam CloudFormation tumpukan, termasuk CodeCommit repositori, CodeBuild proyek, dan pipeline. CodePipeline

  5. CloudFormation Tumpukan menyalin kode sumber sampel untuk tumpukan teknologi yang dipilih (Java atau Python) dan file buildspec.yl ke repositori. CodeCommit

  6. 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-creationrepositori. Repositori berisi CloudFormation template yang diperlukan untuk membuat arsitektur target yang diuraikan dalam pola ini.

Praktik terbaik

Epik

TugasDeskripsiKeterampilan 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.

catatan

Bucket Amazon S3 harus berada di Wilayah AWS yang sama dengan yang Anda gunakan solusinya.

AWS DevOps

Kloning GitHub repositori.

Kloning GitHub automated-ci-pipeline-creationrepositori dengan menjalankan perintah berikut di jendela terminal:

git clone https://github.com/aws-samples/automated-ci-pipeline-creation.git

Untuk informasi selengkapnya, lihat Mengkloning repositori dalam dokumentasi. GitHub

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.

catatan

Pastikan Anda mengunggah konten folder Solution-Templates saja. Anda dapat mengunggah file di tingkat root bucket Amazon S3 saja.

AWS DevOps
TugasDeskripsiKeterampilan yang dibutuhkan

Buat CloudFormation tumpukan untuk menerapkan solusi dengan menggunakan file template.ymldi repositori kloning. GitHub

  1. Masuk ke AWS Management Console lalu buka CloudFormation konsol AWS.

  2. Pilih Buat tumpukan. Daftar dropdown muncul.

  3. Dalam daftar dropdown, pilih Dengan sumber daya baru (standar). Halaman Buat tumpukan terbuka.

  4. Di bagian Tentukan templat, pilih kotak centang di samping Unggah file templat.

  5. Pilih Pilih file. Kemudian, arahkan ke folder root GitHub repositori yang dikloning dan pilih file template.yml. Kemudian, pilih Buka.

  6. Pilih Berikutnya. Halaman Tentukan detail tumpukan terbuka.

  7. Di bagian Parameter, tentukan parameter berikut:

    • Untuk S3 TemplateBucketName, masukkan nama bucket Amazon S3 yang Anda buat sebelumnya, yang berisi kode sumber dan referensi untuk solusi ini. Pastikan parameter nama bucket dalam huruf kecil.

    • Untuk Dynamo DBTable, masukkan nama untuk tabel DynamoDB yang dibuat tumpukan. CloudFormation

    • Untuk StateMachineName, masukkan nama untuk mesin status Step Functions yang dibuat oleh CloudFormation stack.

  8. Pilih Berikutnya. Halaman Configure stack options terbuka.

  9. Pada halaman Konfigurasikan opsi tumpukan, pilih Berikutnya. Jangan mengubah nilai default apa pun. Halaman Review terbuka.

  10. Tinjau pengaturan pembuatan tumpukan. Kemudian, pilih Buat tumpukan untuk meluncurkan tumpukan Anda.

catatan

Saat 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
TugasDeskripsiKeterampilan yang dibutuhkan

Jalankan fungsi langkah yang Anda buat.

  1. Masuk ke AWS Management Console, lalu buka konsol Step Functions.

  2. Buka fungsi langkah yang Anda buat.

  3. Pilih Mulai Eksekusi. Kemudian, masukkan nilai input Anda untuk alur kerja dalam format JSON (lihat contoh input berikut).

  4. Pilih Mulai Eksekusi.

Pemformatan JSON

{ "details": { "tech_stack": "Name of the Tech Stack (python/java)", "project_name": "Name of the Project that you want to create with", "pre_build": "Choose the step if it required in the buildspec.yml file i.e., yes/no", "build": "Choose the step if it required in the buildspec.yml file i.e., yes/no", "post_build": "Choose the step if it required in the buildspec.yml file i.e., yes/no", "reports": "Choose the step if it required in the buildspec.yml file i.e., yes/no", } }

Contoh masukan JSON Java

{ "details": { "tech_stack": "java", "project_name": "pipeline-java-pjt", "pre_build": "yes", "build": "yes", "post_build": "yes", "reports": "yes" } }

Contoh masukan Python JSON

{ "details": { "tech_stack": "python", "project_name": "pipeline-python-pjt", "pre_build": "yes", "build": "yes", "post_build": "yes", "reports": "yes" } }
Administrator AWS, AWS DevOps

Konfirmasikan bahwa CodeCommit repositori untuk pipa CI telah dibuat.

  1. Masuk ke AWS Management Console lalu buka CodeCommit konsol.

  2. Pada halaman Repositori, verifikasi bahwa nama CodeCommit repositori yang Anda buat muncul dalam daftar repositori. Nama repositori ditambahkan dengan yang berikut: -Repo pipeline-java-pjt

  3. Buka CodeCommit repositori dan validasi bahwa kode sumber sampel bersama dengan file buildspec.yl didorong ke cabang utama.

AWS DevOps

Periksa sumber daya CodeBuild proyek.

  1. Masuk ke AWS Management Console lalu buka CodeBuild konsol.

  2. Pada halaman Membangun proyek, verifikasi bahwa nama CodeBuild proyek yang Anda buat muncul dalam daftar proyek. Nama proyek ditambahkan dengan yang berikut: pipeline-java-pjt -Build

  3. Pilih nama CodeBuild proyek Anda untuk membuka proyek. Kemudian, tinjau dan validasi konfigurasi berikut:

    • Konfigurasi Proyek

    • Sumber

    • Lingkungan

    • Buildspec

    • Konfigurasi Batch

    • Artefak

AWS DevOps

Validasi CodePipeline tahapan.

  1. Masuk ke AWS Management Console lalu buka CodePipeline konsol.

  2. Pada halaman Pipelines, verifikasi bahwa nama pipeline yang Anda buat muncul di daftar pipeline. Nama pipa ditambahkan dengan yang berikut: pipeline-java-pjt -Pipeline

  3. Pilih nama pipeline Anda untuk membuka pipeline. Kemudian, tinjau dan validasi setiap tahap pipeline, termasuk Commit dan Deploy.

AWS DevOps

Konfirmasikan bahwa pipa CI berhasil berjalan.

  1. Di CodePipeline konsol, pada halaman Pipelines, pilih nama pipeline Anda untuk melihat status pipeline.

  2. Verifikasi bahwa setiap tahap pipa memiliki status Berhasil.

AWS DevOps
TugasDeskripsiKeterampilan 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.

catatan

Pastikan Anda menghapus tumpukan bernama -stack<project_name>.

AWS DevOps

Hapus dependensi pipeline CI di Amazon S3 dan. CloudFormation

  1. Kosongkan ember Amazon S3 bernama. DeploymentArtifactBucket Untuk informasi selengkapnya, lihat Mengosongkan bucket di dokumentasi Amazon S3.

  2. Hapus tumpukan ketergantungan pipa CI di CloudFormation. Untuk informasi selengkapnya, lihat Menghapus tumpukan di CloudFormation konsol AWS dalam CloudFormation dokumentasi.

catatan

Pastikan 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