Tutorial: Buat pipeline empat tahap - AWS CodePipeline

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Tutorial: Buat pipeline empat tahap

Sekarang setelah Anda membuat pipeline pertama di Tutorial: Buat pipeline sederhana (ember S3) atauTutorial: Buat pipeline sederhana (CodeCommitrepositori), Anda dapat mulai membuat pipeline yang lebih kompleks. Tutorial ini akan memandu Anda melalui pembuatan pipeline empat tahap yang menggunakan GitHub repositori untuk sumber Anda, server build Jenkins untuk membangun proyek, dan CodeDeploy aplikasi untuk menyebarkan kode yang dibangun ke server pementasan. Diagram berikut menunjukkan pipa tiga tahap awal.


      Diagram yang menunjukkan tahap sumber dengan aksi sumber, tahap pembuatan dengan tindakan Jenkins, dan tahap penerapan dengan tindakan penerapan.

Setelah pipeline dibuat, Anda akan mengeditnya untuk menambahkan tahap dengan tindakan pengujian untuk menguji kode, juga menggunakan Jenkins.

Sebelum Anda dapat membuat pipeline ini, Anda harus mengkonfigurasi sumber daya yang diperlukan. Misalnya, jika Anda ingin menggunakan GitHub repositori untuk kode sumber Anda, Anda harus membuat repositori sebelum Anda dapat menambahkannya ke pipeline. Sebagai bagian dari pengaturan, tutorial ini memandu Anda melalui pengaturan Jenkins pada instance EC2 untuk tujuan demonstrasi.

penting

Banyak tindakan yang Anda tambahkan ke pipeline dalam prosedur ini melibatkan AWS sumber daya yang perlu Anda buat sebelum membuat pipeline. AWSsumber daya untuk tindakan sumber Anda harus selalu dibuat di AWS Wilayah yang sama tempat Anda membuat pipeline. Misalnya, jika Anda membuat pipeline di Wilayah AS Timur (Ohio), CodeCommit repositori Anda harus berada di Wilayah AS Timur (Ohio).

Anda dapat menambahkan tindakan lintas wilayah saat membuat pipeline. AWSsumber daya untuk tindakan lintas wilayah harus berada di AWS Wilayah yang sama di mana Anda berencana untuk menjalankan tindakan. Untuk informasi selengkapnya, lihat Menambahkan tindakan Lintas wilayah diCodePipeline.

Sebelum Anda memulai tutorial ini, Anda seharusnya sudah menyelesaikan prasyarat umum di. Memulai dengan CodePipeline

Langkah 1: Prasyarat lengkap

Untuk mengintegrasikan dengan Jenkins, AWS CodePipeline mengharuskan Anda untuk menginstal CodePipeline Plugin untuk Jenkins pada setiap instance Jenkins yang ingin Anda gunakan. CodePipeline Anda juga harus mengonfigurasi pengguna atau peran IAM khusus yang akan digunakan untuk izin antara proyek Jenkins Anda dan. CodePipeline Cara termudah untuk mengintegrasikan Jenkins dan CodePipeline menginstal Jenkins pada instans EC2 yang menggunakan peran instans IAM yang Anda buat untuk integrasi Jenkins. Agar tautan dalam pipeline agar tindakan Jenkins berhasil terhubung, Anda harus mengonfigurasi pengaturan proxy dan firewall di server atau instans EC2 untuk memungkinkan koneksi masuk ke port yang digunakan oleh proyek Jenkins Anda. Pastikan Anda telah mengonfigurasi Jenkins untuk mengautentikasi pengguna dan menerapkan kontrol akses sebelum Anda mengizinkan koneksi pada port tersebut (misalnya, 443 dan 8443 jika Anda telah mengamankan Jenkins untuk hanya menggunakan koneksi HTTPS, atau 80 dan 8080 jika Anda mengizinkan koneksi HTTP). Untuk informasi lebih lanjut, lihat Mengamankan Jenkins.

catatan

Tutorial ini menggunakan contoh kode dan mengkonfigurasi langkah-langkah build yang mengonversi sampel dari Haml ke HTML. Anda dapat mengunduh kode sampel sumber terbuka dari GitHub repositori dengan mengikuti langkah-langkahnya. Salin atau kloning sampel ke dalam repositori GitHub Anda akan membutuhkan seluruh sampel di GitHub repositori Anda, bukan hanya file.zip.

Tutorial ini juga mengasumsikan bahwa:

  • Anda akrab dengan menginstal dan mengelola Jenkins dan membuat proyek Jenkins.

  • Anda telah menginstal Rake dan permata Haml untuk Ruby di komputer atau instance yang sama yang menghosting proyek Jenkins Anda.

  • Anda telah mengatur variabel lingkungan sistem yang diperlukan sehingga perintah Rake dapat dijalankan dari terminal atau baris perintah (misalnya, pada sistem Windows, memodifikasi variabel PATH untuk menyertakan direktori tempat Anda menginstal Rake).

Salin atau kloning sampel ke dalam repositori GitHub

Untuk mengkloning sampel dan mendorong ke repositori GitHub
  1. Unduh kode sampel dari GitHub repositori, atau kloning repositori ke komputer lokal Anda. Ada dua paket sampel:

  2. Dari repositori, pilih Fork untuk mengkloning repo sampel menjadi repo di akun Github Anda. Untuk informasi lebih lanjut, lihat dokumentasi GitHub.

Buat peran IAM untuk digunakan untuk integrasi Jenkins

Sebagai praktik terbaik, pertimbangkan untuk meluncurkan instans EC2 untuk meng-host server Jenkins Anda dan menggunakan peran IAM untuk memberikan instance izin yang diperlukan untuk berinteraksi dengannya. CodePipeline

  1. Masuk ke AWS Management Console dan buka konsol IAM di https://console.aws.amazon.com/iam/.

  2. Di konsol IAM, di panel navigasi, pilih Peran, lalu pilih Buat peran.

  3. Di bawah Pilih jenis entitas tepercaya, pilih Layanan AWS. Di bawah Pilih layanan yang akan menggunakan peran ini, pilih EC2. Di bawah Pilih kasus penggunaan Anda, pilih EC2.

  4. Pilih Next: Permissions (Selanjutnya: Izin). Pada halaman Lampirkan kebijakan izin, pilih kebijakan AWSCodePipelineCustomActionAccess terkelola, lalu pilih Berikutnya: Tag. Pilih Next: Review (Selanjutnya: Tinjauan).

  5. Pada halaman Tinjauan, dalam nama Peran, masukkan nama peran yang akan dibuat khusus untuk integrasi Jenkins (misalnya, JenkinsAccess), lalu pilih Buat peran.

Saat Anda membuat instans EC2 di mana Anda akan menginstal Jenkins, di Langkah 3: Konfigurasikan Detail Instance, pastikan Anda memilih peran instance (misalnya, JenkinsAccess).

Untuk informasi selengkapnya tentang peran instans dan Amazon EC2, lihat peran IAM untuk Amazon EC2, Menggunakan Peran IAM untuk Memberikan Izin ke Aplikasi yang Berjalan di Instans Amazon EC2, dan Membuat peran untuk mendelegasikan izin ke. Layanan AWS

Instal dan konfigurasikan Jenkins dan CodePipeline Plugin untuk Jenkins

Untuk menginstal Jenkins dan CodePipeline Plugin untuk Jenkins
  1. Buat instans EC2 tempat Anda akan menginstal Jenkins, dan di Langkah 3: Konfigurasikan Detail Instance, pastikan Anda memilih peran instans yang Anda buat (misalnya, JenkinsAccess). Untuk informasi selengkapnya tentang membuat instans EC2, lihat Meluncurkan instans Amazon EC2 di Panduan Pengguna Amazon EC2.

    catatan

    Jika Anda sudah memiliki sumber daya Jenkins yang ingin Anda gunakan, Anda dapat melakukannya, tetapi Anda harus membuat pengguna IAM khusus, menerapkan kebijakan AWSCodePipelineCustomActionAccess terkelola ke pengguna itu, dan kemudian mengonfigurasi dan menggunakan kredensil akses untuk pengguna tersebut di sumber daya Jenkins Anda. Jika Anda ingin menggunakan UI Jenkins untuk menyediakan kredensialnya, konfigurasikan Jenkins agar hanya mengizinkan HTTPS. Untuk informasi selengkapnya, lihat Pemecahan masalah CodePipeline.

  2. Instal Jenkins pada instans EC2. Untuk informasi lebih lanjut, lihat dokumentasi Jenkins untuk menginstal Jenkins dan memulai dan mengakses Jenkins, serta di. details of integration with Jenkins Integrasi produk dan layanan dengan CodePipeline

  3. Luncurkan Jenkins, dan di halaman beranda, pilih Kelola Jenkins.

  4. Pada halaman Kelola Jenkins, pilih Kelola Plugin.

  5. Pilih tab Tersedia, dan di kotak pencarian Filter, masukkanAWS CodePipeline. Pilih CodePipeline Plugin untuk Jenkins dari daftar dan pilih Unduh sekarang dan instal setelah restart.

  6. Pada halaman Instalasi Plugin/Upgrade, pilih Restart Jenkins ketika instalasi selesai dan tidak ada pekerjaan yang berjalan.

  7. Pilih Kembali ke Dasbor.

  8. Di halaman utama, pilih Item Baru.

  9. Di Nama Item, masukkan nama untuk proyek Jenkins (misalnya, MyDemoProject). Pilih Freestyle project, lalu pilih OK.

    catatan

    Pastikan bahwa nama untuk proyek Anda memenuhi persyaratan untuk CodePipeline. Untuk informasi selengkapnya, lihat Kuota di AWS CodePipeline.

  10. Pada halaman konfigurasi untuk proyek, pilih kotak centang Execute concurrent build jika perlu. Di Manajemen Kode Sumber, pilih AWS CodePipeline. Jika Anda telah menginstal Jenkins pada instans EC2 dan mengonfigurasi AWS CLI dengan profil untuk pengguna IAM yang Anda buat untuk integrasi antara CodePipeline dan Jenkins, biarkan semua bidang lainnya kosong.

  11. Pilih Advanced, dan di Provider, masukkan nama untuk penyedia tindakan seperti yang akan muncul di CodePipeline (misalnya, MyJenkinsProviderName). Pastikan nama ini unik dan mudah diingat. Anda akan menggunakannya ketika Anda menambahkan tindakan build ke pipeline Anda nanti dalam tutorial ini, dan lagi ketika Anda menambahkan tindakan pengujian.

    catatan

    Nama tindakan ini harus memenuhi persyaratan penamaan untuk tindakan di CodePipeline. Untuk informasi selengkapnya, lihat Kuota di AWS CodePipeline.

  12. Di Build Triggers, kosongkan kotak centang apa pun, lalu pilih Poll SCM. Dalam Jadwal, masukkan lima tanda bintang yang dipisahkan oleh spasi, sebagai berikut:

    * * * * *

    Jajak pendapat ini dilakukan CodePipeline setiap menit.

  13. Di Build, pilih Add build step. Pilih Execute shell (Amazon Linux, RHEL, atau Ubuntu Server) Jalankan perintah batch (Windows Server), lalu masukkan yang berikut ini:

    rake
    catatan

    Pastikan lingkungan Anda dikonfigurasi dengan variabel dan pengaturan yang diperlukan untuk menjalankan rake; jika tidak, build akan gagal.

  14. Pilih Add post-build action, lalu pilih AWS CodePipeline Publisher. Pilih Tambah, dan di Build Output Locations, biarkan lokasi kosong. Konfigurasi ini adalah default. Ini akan membuat file terkompresi di akhir proses pembuatan.

  15. Pilih Simpan untuk menyimpan proyek Jenkins Anda.

Langkah 2: Buat pipeline di CodePipeline

Di bagian tutorial ini, Anda membuat pipeline menggunakan wizard Create Pipeline.

Untuk membuat proses rilis CodePipeline otomatis
  1. Masuk ke AWS Management Console dan buka CodePipeline konsol di http://console.aws.amazon.com/codesuite/codepipeline/home.

  2. Jika perlu, gunakan pemilih Wilayah untuk mengubah Wilayah ke wilayah tempat sumber daya pipa Anda berada. Misalnya, jika Anda membuat sumber daya untuk tutorial sebelumnya dius-east-2, pastikan pemilih Region diatur ke US East (Ohio).

    Untuk informasi selengkapnya tentang Wilayah dan titik akhir yang tersedia CodePipeline, lihat AWS CodePipelinetitik akhir dan kuota.

  3. Pada halaman Selamat Datang, halaman Memulai, atau halaman Pipelines, pilih Buat pipeline.

  4. Pada Langkah 1: Pilih halaman pengaturan pipeline, dalam nama Pipeline, masukkan nama untuk pipeline Anda.

  5. Dalam tipe Pipeline, pilih V1 untuk keperluan tutorial ini. Anda juga dapat memilih V2; Namun, perhatikan bahwa jenis pipa berbeda dalam karakteristik dan harga. Untuk informasi selengkapnya, lihat Jenis pipa.

  6. Dalam peran Layanan, pilih Peran layanan baru CodePipeline untuk memungkinkan membuat peran layanan di IAM.

  7. Biarkan pengaturan di bawah Pengaturan lanjutan pada defaultnya, dan pilih Berikutnya.

  8. Pada Langkah 2: Tambahkan halaman tahap sumber, di penyedia Sumber, pilih GitHub.

  9. Di bawah Koneksi, pilih koneksi yang ada atau buat yang baru. Untuk membuat atau mengelola koneksi untuk tindakan GitHub sumber Anda, lihatGitHub koneksi.

  10. Pada Langkah 3: Tambahkan tahap build, pilih Add Jenkins. Di nama Provider, masukkan nama tindakan yang Anda berikan di CodePipeline Plugin untuk Jenkins (misalnya MyJenkinsProviderName). Nama ini harus sama persis dengan nama di CodePipeline Plugin untuk Jenkins. Di URL Server, masukkan URL instance EC2 tempat Jenkins diinstal. Dalam nama Proyek, masukkan nama proyek yang Anda buat di Jenkins, seperti MyDemoProject, dan kemudian pilih Berikutnya.

  11. Pada Langkah 4: Tambahkan tahap penerapan, gunakan kembali grup CodeDeploy aplikasi dan penyebaran yang Anda buat. Tutorial: Buat pipeline sederhana (ember S3) Di Penyedia Deploy, pilih CodeDeploy. Di Nama aplikasiCodePipelineDemoApplication, masukkan, atau pilih tombol refresh, lalu pilih nama aplikasi dari daftar. Di grup DeploymentCodePipelineDemoFleet, masukkan, atau pilih dari daftar, lalu pilih Berikutnya.

    catatan

    Anda dapat menggunakan CodeDeploy sumber daya Anda sendiri atau membuat yang baru, tetapi Anda mungkin dikenakan biaya tambahan.

  12. Pada Langkah 5: Tinjau, tinjau informasinya, lalu pilih Buat pipeline.

  13. Pipa secara otomatis memulai dan menjalankan sampel melalui pipa. Anda dapat melihat pesan kemajuan dan keberhasilan dan kegagalan saat pipeline membangun sampel Haml ke HTML dan menerapkannya sebagai halaman web ke setiap instans Amazon EC2 dalam penerapan. CodeDeploy

Langkah 3: Tambahkan tahap lain ke pipeline Anda

Sekarang Anda akan menambahkan tahap pengujian dan kemudian tindakan pengujian ke tahap yang menggunakan tes Jenkins yang disertakan dalam sampel untuk menentukan apakah halaman web memiliki konten apa pun. Tes ini hanya untuk tujuan demonstrasi.

catatan

Jika Anda tidak ingin menambahkan tahap lain ke pipeline, Anda dapat menambahkan tindakan pengujian ke tahap Pementasan pipeline, sebelum atau sesudah tindakan penerapan.

Tambahkan tahap pengujian ke pipeline Anda

Cari alamat IP dari sebuah instans

Untuk memverifikasi alamat IP dari sebuah instance tempat Anda menerapkan kode
  1. Setelah Berhasil ditampilkan untuk status pipeline, di area status untuk tahap Pementasan, pilih Detail.

  2. Di bagian Detail Deployment, di ID Instance, pilih ID instans dari salah satu instance yang berhasil diterapkan.

  3. Salin alamat IP instance (misalnya, 192.168.0.4). Anda akan menggunakan alamat IP ini dalam tes Jenkins Anda.

Buat proyek Jenkins untuk menguji penerapan

Untuk membuat proyek Jenkins
  1. Pada contoh di mana Anda menginstal Jenkins, buka Jenkins dan dari halaman utama, pilih Item Baru.

  2. Di Nama Item, masukkan nama untuk proyek Jenkins (misalnya, MyTestProject). Pilih Freestyle project, lalu pilih OK.

    catatan

    Pastikan bahwa nama untuk proyek Anda memenuhi CodePipeline persyaratan. Untuk informasi selengkapnya, lihat Kuota di AWS CodePipeline.

  3. Pada halaman konfigurasi untuk proyek, pilih kotak centang Execute concurrent build jika perlu. Di Manajemen Kode Sumber, pilih AWS CodePipeline. Jika Anda telah menginstal Jenkins pada instans EC2 dan mengkonfigurasi AWS CLI dengan profil untuk pengguna IAM yang Anda buat untuk integrasi antara CodePipeline dan Jenkins, biarkan semua bidang lainnya kosong.

    penting

    Jika Anda mengonfigurasi proyek Jenkins dan tidak diinstal pada instans Amazon EC2, atau diinstal pada instans EC2 yang menjalankan sistem operasi Windows, lengkapi bidang seperti yang dipersyaratkan oleh host proxy dan pengaturan port Anda, dan berikan kredensil pengguna IAM atau peran yang Anda konfigurasikan untuk integrasi antara Jenkins dan. CodePipeline

  4. Pilih Advanced, dan di Kategori, pilih Test.

  5. Di Provider, masukkan nama yang sama dengan yang Anda gunakan untuk proyek build (misalnya, MyJenkinsProviderName). Anda akan menggunakan nama ini ketika Anda menambahkan tindakan pengujian ke pipeline Anda nanti dalam tutorial ini.

    catatan

    Nama ini harus memenuhi persyaratan CodePipeline penamaan untuk tindakan. Untuk informasi selengkapnya, lihat Kuota di AWS CodePipeline.

  6. Di Build Triggers, kosongkan kotak centang apa pun, lalu pilih Poll SCM. Dalam Jadwal, masukkan lima tanda bintang yang dipisahkan oleh spasi, sebagai berikut:

    * * * * *

    Jajak pendapat ini dilakukan CodePipeline setiap menit.

  7. Di Build, pilih Add build step. Jika Anda menggunakan instance Amazon Linux, RHEL, atau Ubuntu Server, pilih Execute shell. Kemudian masukkan yang berikut ini, di mana alamat IP adalah alamat instans EC2 yang Anda salin sebelumnya:

    TEST_IP_ADDRESS=192.168.0.4 rake test

    Jika Anda menyebarkan ke instance Windows Server, pilih Jalankan perintah batch, lalu masukkan yang berikut ini, di mana alamat IP adalah alamat instans EC2 yang Anda salin sebelumnya:

    set TEST_IP_ADDRESS=192.168.0.4 rake test
    catatan

    Tes ini mengasumsikan port default 80. Jika Anda ingin menentukan port yang berbeda, tambahkan pernyataan port uji, sebagai berikut:

    TEST_IP_ADDRESS=192.168.0.4 TEST_PORT=8000 rake test
  8. Pilih Add post-build action, lalu pilih AWS CodePipeline Publisher. Jangan pilih Tambah.

  9. Pilih Simpan untuk menyimpan proyek Jenkins Anda.

Buat tahap keempat

Untuk menambahkan panggung ke pipeline Anda yang mencakup tindakan uji Jenkins
  1. Masuk ke AWS Management Console dan buka CodePipeline konsol di http://console.aws.amazon.com/codesuite/codepipeline/home.

  2. Di Nama, pilih nama pipeline yang Anda buat, MySecondPipeline.

  3. Pada halaman detail pipeline, pilih Edit.

  4. Pada halaman Edit, pilih + Stage untuk menambahkan stage segera setelah tahap Build.

  5. Di bidang nama untuk tahap baru, masukkan nama (misalnya,Testing), lalu pilih + Tambahkan grup tindakan.

  6. Dalam nama Action, masukkan MyJenkinsTest-Action. Di Penyedia uji, pilih nama penyedia yang Anda tentukan di Jenkins (misalnya, MyJenkinsProviderName). Dalam nama Proyek, masukkan nama proyek yang Anda buat di Jenkins (misalnya, MyTestProject). Di artefak Input, pilih artefak dari build Jenkins yang nama defaultnya BuildArtifact, lalu pilih Selesai.

    catatan

    Karena tindakan pengujian Jenkins beroperasi pada aplikasi yang dibangun pada langkah pembuatan Jenkins, gunakan artefak build untuk artefak input ke tindakan pengujian.

    Untuk informasi lebih lanjut tentang artefak input dan output dan struktur pipa, lihat. CodePipeline referensi struktur pipa

  7. Pada halaman Edit, pilih Simpan perubahan pipeline. Dalam kotak dialog Simpan perubahan pipeline, pilih Simpan dan lanjutkan.

  8. Meskipun tahap baru telah ditambahkan ke pipeline Anda, status Tidak ada eksekusi belum ditampilkan untuk tahap itu karena tidak ada perubahan yang memicu proses pipeline lainnya. Untuk menjalankan sampel melalui pipeline yang direvisi, pada halaman detail pipeline, pilih Rilis perubahan.

    Tampilan pipeline menunjukkan tahapan dan tindakan dalam pipeline Anda dan status revisi yang berjalan melalui empat tahap tersebut. Waktu yang dibutuhkan pipa untuk berjalan melalui semua tahapan akan tergantung pada ukuran artefak, kompleksitas tindakan pembuatan dan pengujian Anda, dan faktor lainnya.

Langkah 4: Bersihkan Sumber Daya

Setelah Anda menyelesaikan tutorial ini, Anda harus menghapus pipeline dan sumber daya yang digunakannya sehingga Anda tidak akan dikenakan biaya untuk terus menggunakan sumber daya tersebut. Jika Anda tidak berniat untuk terus menggunakan CodePipeline, hapus pipeline, lalu CodeDeploy aplikasi dan instans Amazon EC2 yang terkait, dan terakhir, ember Amazon S3 digunakan untuk menyimpan artefak. Anda juga harus mempertimbangkan apakah akan menghapus sumber daya lain, seperti GitHub repositori, jika Anda tidak berniat untuk terus menggunakannya.

Untuk membersihkan sumber daya yang digunakan dalam tutorial ini
  1. Buka sesi terminal di Linux, macOS, atau mesin Unix lokal Anda, atau prompt perintah di mesin Windows lokal Anda, dan jalankan delete-pipeline perintah untuk menghapus pipeline yang Anda buat. UntukMySecondPipeline, Anda akan memasukkan perintah berikut:

    aws codepipeline delete-pipeline --name "MySecondPipeline"

    Perintah ini tidak mengembalikan apa pun.

  2. Untuk membersihkan CodeDeploy sumber daya Anda, ikuti instruksi di Membersihkan.

  3. Untuk membersihkan sumber daya instans Anda, hapus instans EC2 tempat Anda menginstal Jenkins. Untuk informasi lebih lanjut, lihat Membersihkan instans Anda.

  4. Jika Anda tidak bermaksud membuat lebih banyak saluran pipa atau menggunakan CodePipeline lagi, hapus bucket Amazon S3 yang digunakan untuk menyimpan artefak untuk pipeline Anda. Untuk menghapus ember, ikuti petunjuk di Menghapus ember.

  5. Jika Anda tidak berniat menggunakan sumber daya lain untuk pipeline ini lagi, pertimbangkan untuk menghapusnya dengan mengikuti panduan untuk sumber daya tertentu. Misalnya, jika Anda ingin menghapus GitHub repositori, ikuti instruksi di Menghapus repositori di situs web. GitHub