Topik ini menjelaskan cara membangun solusi integrasi kontinu (CI) untuk aplikasi yang diterapkan di Enterprise Distributed Application Service (EDAS). Bahasa pemrograman dan alat pengembangan berikut digunakan dalam solusi CI. Anda harus familiar dengan bahasa dan alat tersebut.
Prasyarat
Sebelum menerapkan CI, selesaikan persiapan berikut:
ID AccessKey dan Rahasia AccessKey telah diperoleh. Untuk mendapatkan ID AccessKey dan Rahasia AccessKey, ikuti langkah-langkah berikut:
Masuk ke situs resmi Alibaba Cloud menggunakan Alibaba Cloud account yang Anda gunakan untuk mengaktifkan EDAS.
Aplikasi dibuat dan diterapkan di konsol EDAS. Untuk membuat dan menerapkan aplikasi di konsol EDAS, ikuti langkah-langkah berikut:
Masuk ke Konsol EDAS.
Buat dan terapkan aplikasi. Untuk informasi lebih lanjut, lihat Ikhtisar dan Ikhtisar.
Jika aplikasi sudah dibuat, lewati langkah ini.
Di panel navigasi sisi kiri, klik Applications. Klik nama aplikasi yang Anda buat di langkah sebelumnya. Di tab Informasi Dasar, peroleh ID aplikasi.
Kode Anda di-hosting di GitLab. Anda dapat membangun paket GitLab atau menggunakan Alibaba Cloud Code.
Dalam topik ini, paket GitLab yang dikelola sendiri digunakan sebagai contoh. Untuk informasi lebih lanjut, kunjungi GitLab.
Anda harus familiar dengan Jenkins. Untuk informasi lebih lanjut, kunjungi Jenkins.
Informasi Latar Belakang
Anda dapat menggunakan Jenkins untuk menerapkan CI pada aplikasi yang diterapkan di kluster Elastic Compute Service (ECS) dan kluster Kubernetes.
Alat | Deskripsi |
Maven | Maven adalah alat otomatisasi yang digunakan untuk membangun dan mengelola proyek secara otomatis. |
Jenkins | Jenkins adalah server otomatisasi yang dapat diskalakan yang memfasilitasi CI. |
GitLab | GitLab adalah platform pengembangan perangkat lunak open source yang di-host sendiri yang memungkinkan Anda mengakses repositori pribadi atau publik di halaman web. GitLab dibangun menggunakan Ruby on Rails. Mirip dengan GitHub, GitLab memungkinkan Anda meninjau kode, mengelola bug, dan meninggalkan komentar. |
Konfigurasikan Proyek
Konfigurasikan proyek dan plug-in toolkit-maven-plugin, serta tentukan informasi penyebaran untuk plug-in tersebut. Untuk informasi lebih lanjut, lihat Gunakan plug-in toolkit-maven-plugin untuk memperbarui aplikasi yang diterapkan di kluster ECS. Setelah mengonfigurasi proyek, kami sarankan Anda menggunakan Maven di server yang dikelola sendiri untuk memverifikasi apakah konfigurasi tersebut valid.
Instal dan Konfigurasikan Jenkins
Unduh Jenkins dari situs resmi Jenkins dan instal.
Di panel navigasi sisi kiri konsol Jenkins, pilih , lalu instal plugin Git dan GitLab.
Plugin git client dan git plugin mengambil kode dari repositori Git.
Plugin GitLab hook memungkinkan webhook GitLab memicu pembuatan pada proyek GitLab.
Instal Maven. Untuk informasi lebih lanjut, kunjungi situs resmi Maven.
Di panel navigasi sisi kiri konsol Jenkins, pilih , pilih versi Maven, lalu konfigurasikan jalur.
Buat pasangan kunci SSH RSA di server Jenkins dan impor kunci publik ke GitLab. Ini memungkinkan otentikasi otomatis Jenkins saat Jenkins mengambil kode dari GitLab.
Buat pasangan kunci SSH RSA untuk pengguna Jenkins yang terhubung ke server Jenkins. Untuk informasi lebih lanjut, lihat Dokumentasi GitLab.
Di halaman utama GitLab, pilih . Klik New Deploy Key untuk menambahkan kunci, dan impor kunci publik SSH RSA yang Anda buat di server Jenkins.
Buat pekerjaan Jenkins.
Di halaman utama Jenkins, pilih New Item, buat pekerjaan Jenkins, dan pilih Freestyle Project.
Di halaman Source Code Management, pilih Git, dan atur parameter.
Repository URL: URL repositori Git proyek Anda.
Credentials: kredensial keamanan. Pilih None jika pasangan kunci SSH RSA dari pengguna yang menjalankan Jenkins telah ditambahkan ke GitLab proyek Git ini. Jika tidak, kesalahan akan dikembalikan.
Klik tab Build Triggers dan pilih Poll SCM.
Klik tab Build Environments dan pilih Add Timestamps to the Console Output.
Klik tab Build dan klik Add Build Step.
Di bagian Invoke Top-level Maven Targets, konfigurasikan Maven Version dan Goals. Anda juga dapat menyebarkan proyek multi-modul. Untuk informasi lebih lanjut, lihat Buat pekerjaan Jenkins untuk proyek multi-modul.
Maven Version: Klik daftar drop-down di sebelah bidang ini dan pilih Maven Version yang Anda konfigurasikan di halaman Global Tool Configuration.
Goals: Masukkan clean package toolkit:deploy. Atur parameter lain sesuai kebutuhan.
Konfigurasikan Web Hooks GitLab untuk Mengaktifkan Pembuatan Otomatis
Klik kanan proyek GitLab dan pilih Setting > Web Hooks.
Di halaman Web Hooks, masukkan
http://Alamat server Jenkins:Port Mendengarkan server Jenkins/git/notifyCommit?url=Alamat repositori Git proyek Andadi bidang URL.Sebagai contoh, Anda dapat memasukkan
http://123.57.xx.xxx:8080/git/notifyCommit?url=git@code.aliyun.com:tdy218/hello-edas.git.Alamat server Jenkins pada gambar di atas adalah URL server Jenkins Anda, seperti
http://123.57.xx.xxx:8080.Kemudian, klik Test Hook.
Kirim Perubahan ke GitLab
Jika konfigurasi sebelumnya valid, hook GitLab dipicu. Setelah hook diterima, Jenkins membangun proyek Maven Anda dan kemudian memanggil skrip API POP EDAS untuk memicu penyebaran.
Setelah proyek diterapkan, Anda dapat memilih untuk melihat log output.
15:58:51 [INFO] Aplikasi berhasil diterapkan!
15:58:51 [INFO] ------------------------------------------------------------------------
15:58:51 [INFO] PEMBANGUNAN BERHASIL
15:58:51 [INFO] ------------------------------------------------------------------------
15:58:51 [INFO] Total waktu: 24.330 s
15:58:51 [INFO] Selesai pada: 2018-12-25T15:58:51+08:00
15:58:51 [INFO] Memori Akhir: 23M/443M
15:58:51 [INFO] ------------------------------------------------------------------------
15:58:51 Selesai: SUKSES
Jika penyebaran gagal, masuk ke Konsol EDAS. Di panel navigasi sisi kiri, klik Applications. Di halaman Aplikasi, klik nama aplikasi yang ingin Anda kelola. Halaman detail aplikasi muncul. Di panel navigasi sisi kiri, klik Change Records untuk melihat proses eksekusi penyebaran ini.
Buat Pekerjaan Jenkins untuk Proyek Multi-Modul
Prosedur untuk membuat pekerjaan Jenkins untuk proyek multi-modul sama dengan Langkah 5. Anda hanya perlu menyesuaikan invoke top-level Maven targets. Jika Anda ingin menyebarkan submodul untuk proyek multi-modul di Jenkins, jalankan perintah mvn clean install di modul induk. Kemudian, jalankan perintah mvn clean package toolkit:deploy di submodul. Struktur berikut dari proyek demo digunakan sebagai contoh:
Pada proyek demo di atas, detail, itemcenter, dan itemcenter-api adalah submodul. Jika Anda ingin menyebarkan itemcenter, Anda harus menjalankan perintah clean install di modul induk untuk membangun target. Kemudian, Anda harus menjalankan perintah clean package toolkit:deploy di submodul itemcenter untuk membangun target.