Anda dapat memulai build otomatis dengan pemicu Jenkins dan webhook Secure Source Manager.
Peran yang diperlukan
Untuk mendapatkan izin yang diperlukan untuk membuat pemicu build Jenkins, minta administrator Anda untuk memberi Anda peran IAM berikut:
-
Admin Repo Secure Source Manager (
roles/securesourcemanager.repoAdmin) di repositori Anda -
Secure Source Manager Instance Accessor (
roles/securesourcemanager.instanceAccessor) di instance Secure Source Manager
Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.
Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran kustom atau peran yang telah ditentukan lainnya.
Untuk mengetahui informasi tentang cara memberikan peran Secure Source Manager, lihat Kontrol akses dengan IAM dan Memberikan akses instance kepada pengguna.
Menyiapkan pemicu webhook
Jenkins menggunakan plugin pemicu build untuk mengaktifkan otomatisasi CI/CD. Anda dapat mengonfigurasi pemicu untuk memproses peristiwa masuk, seperti saat commit baru di-push ke repositori atau saat permintaan pull dimulai, lalu mengeksekusi build secara otomatis saat peristiwa baru masuk. Anda juga dapat mengonfigurasi pemicu untuk mem-build kode berdasarkan setiap perubahan pada repositori sumber atau hanya pada perubahan yang cocok dengan kriteria tertentu.
Untuk menyiapkan Pemicu webhook Jenkins generik:
Instal Git Plugin, SSH Credential Plugin, dan Generic Webhook Trigger Plugin di server Jenkins Anda.
Buat pasangan kunci SSH yang valid di server Jenkins Anda. Secure Source Manager hanya mendukung kunci jenis RSA.
Tambahkan domain instance Secure Source Manager ke file
known_hostsSSH server Jenkins dengan menjalankan perintah berikut:ssh -t git@INSTANCE_ID-INSTANCE_PROJECT_NUMBER-ssh.us-central1.sourcemanager.devDengan:
- INSTANCE_ID adalah nama instance Secure Source Manager Anda.
- INSTANCE_PROJECT_NUMBER adalah nomor project instance Secure Source Manager Anda. Lihat Mengidentifikasi project untuk mengetahui informasi tentang tempat menemukan nomor project Anda.
Misalnya, perintah berikut menambahkan domain instance untuk instance bernama
prod-test-instancedengan nomor project123456789.ssh -t git@prod-test-instance-123456789-ssh.us-central1.sourcemanager.devBalas
yesuntuk menambahkan domain instance ke daftar host yang dikenal.Di halaman Manage Credentials Jenkins:
- Pilih SSH username with private key.
- Tempelkan kunci pribadi SSH server Jenkins Anda.
- Di drop-down Jenis, isi kolom lainnya sesuai kebutuhan.
Klik Buat.
Di antarmuka web Jenkins, buat tugas Jenkins baru.
Di halaman konfigurasi tugas Jenkins, di bagian Source Code Management, pilih Git.
Di bagian Git, tempelkan URL SSH repositori Secure Source Manager sebagai URL Repositori, masukkan cabang build Anda (misalnya,
*/main), lalu pilih kredensial kunci SSH pribadi tersimpan yang Anda tambahkan sebelumnya di halaman Manage Credentials.Di bagian Build Triggers, pilih Generic Webhook Trigger.
Secara opsional, Anda dapat menambahkan token sehingga tugas hanya dipicu jika token tersebut diberikan saat pemanggilan. Untuk menambahkan token, di bagian Generic Webhook Trigger, Anda dapat memasukkan token di kolom Token.
Di bagian Build, berikan skrip build yang ingin Anda miliki untuk tugas Jenkins ini. Misalnya, Anda dapat menjalankan
cat README.mduntuk mencetak konten README.md.Klik Simpan untuk membuat tugas Jenkins.
Menyiapkan akun layanan dan memberikan izin yang diperlukan
Jika Anda belum memiliki akun layanan yang ingin digunakan, buat akun layanan.
Pastikan Anda memiliki izin
iam.serviceAccounts.actAspada akun layanan. Izin ini adalah bagian dari peran Service Account User (roles/iam.serviceAccountUser).Di antarmuka web Secure Source Manager, klik menu opsi lainnya.
Klik Service account SSH keys. Halaman Kunci SSH akun layanan akan terbuka, dan daftar kunci yang ada yang telah Anda tambahkan akan ditampilkan.
Klik Add key.
Di halaman Add SSH key, masukkan nilai berikut untuk kunci Anda:
Akun layanan: email akun layanan untuk akun layanan yang ingin Anda gunakan dengan kunci SSH dalam format
SA_NAME@PROJECT_ID.iam.gserviceaccount.comDi mana
SA_NAMEadalah nama akun layanan.PROJECT_IDadalah project ID project tempat akun layanan dibuat.
SSH Public Key: Kunci SSH publik Jenkins Anda.
Memberikan izin agen layanan Secure Source Manager
Jika akun layanan tidak berada dalam project yang sama dengan instance Secure Source Manager, Anda juga harus memberikan peran Service Account Token Creator (roles/iam.serviceAccountTokenCreator) atau izin iam.serviceAccounts.signJwt kepada agen layanan Secure Source Manager.
Jika akun layanan Anda berada dalam project yang sama dengan instance Secure Source Manager, lanjutkan ke Memberi akun layanan peran repositori.
Jalankan perintah berikut untuk mendapatkan kebijakan IAM yang ada untuk akun layanan Anda:
gcloud iam service-accounts get-iam-policy SERVICE_ACCOUNT \ --format jsonDengan SERVICE_ACCOUNT adalah akun layanan yang ingin Anda gunakan. Akun harus diformat sebagai ID akun layanan numerik atau sebagai email, seperti ini:
123456789876543212345ataumy-iam-account@somedomain.com.Output mencakup binding yang ada, atau, jika tidak ada, nilai
etagyang mirip dengan berikut ini:{ "etag": "BwUjHYKJUiQ=" }Salin output ke dalam file baru bernama
policy.json.Untuk memberikan peran Pembuat Token Akun Layanan (
roles/iam.ServiceAccountTokenCreator) kepada agen layanan Secure Source Manager, ubahpolicy.jsonuntuk menambahkan berikut ini:{ "role": "roles/iam.serviceAccountTokenCreator", "members": [ "serviceAccount:service-INSTANCE_PROJECT_NUMBER@gcp-sa-sourcemanager.iam.gserviceaccount.com" ] }Dengan
INSTANCE_PROJECT_NUMBERadalah nomor project instance Secure Source Manager Anda.Jalankan perintah berikut untuk mengganti kebijakan IAM yang ada untuk akun layanan:
gcloud iam service-accounts set-iam-policy SERVICE_ACCOUNT POLICY_FILEGanti kode berikut:
- SERVICE_ACCOUNT dengan ID atau email akun layanan.
- POLICY_FILE dengan lokasi dan nama file berformat JSON yang menyertakan kebijakan baru.
Memberi akun layanan peran repositori
- Di antarmuka web Secure Source Manager, buka repositori yang ingin Anda beri izin akun layanan.
- Klik tab Izin.
- Klik Tambahkan Pengguna.
- Di kolom Add principal, masukkan alamat email akun layanan.
- Di menu drop-down Role, pilih Secure Source Manager Repository Reader.
Tetapkan peran
securesourcemanager.instanceAccessorke akun layanan dengan menjalankan perintah berikut:gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:SA_EMAIL \ --role=roles/securesourcemanager.instanceAccessorGanti kode berikut:
PROJECT_IDdengan project ID instance Secure Source Manager.SA_EMAILdengan email akun layanan.
Menyiapkan webhook
- Di antarmuka web Secure Source Manager, buka repositori yang ingin Anda buat webhook-nya.
- Klik Setelan.
- Klik Webhook, lalu klik Tambahkan webhook.
Di kolom Hook ID, masukkan ID untuk webhook.
Di kolom Target URL, masukkan URL Pemicu Jenkins.
Jika Anda menggunakan token opsional saat mengonfigurasi pemicu Jenkins, maka URL pemicu Jenkins akan berisi token tersebut di bagian akhir. Untuk mencegah kebocoran token, hapus token dari akhir URL target dan salin ke kolom String Kueri Sensitif.
Untuk menemukan token di URL pemicu, cari teks yang dimulai dengan
token=Misalnya, jika URL Anda menyerupai berikut:
https://jenkins-server.com/generic-webhook-trigger/invoke?token=jenkins-job1Salin dan hapus bagian yang dimulai dengan tanda tanya
?token=jenkins-job1dari kolom URL Target. Kemudian, hapus tanda tanya awal, pindahkan bagiantoken=jenkins-job1yang tersisa ke kolom String Kueri Sensitif.Di bagian Picu di, pilih salah satu opsi berikut:
- Push: untuk memicu saat mengirim ke repositori.
- Status permintaan pull diubah: untuk dipicu saat ada perubahan pada status permintaan pull.
Jika Anda memilih Push, Anda dapat memasukkan daftar yang diizinkan untuk peristiwa push di kolom Filter cabang.
Kolom Filter cabang menggunakan pola glob dan hanya operasi pada cabang yang cocok yang akan menyebabkan pemicu build. Jika kolom kosong atau
*, maka peristiwa push untuk semua cabang akan dilaporkan.Klik Tambahkan webhook.
Webhook ditampilkan di halaman Webhook.
Menguji webhook Anda
- Di halaman Webhook Secure Source Manager, klik webhook yang ingin Anda uji.
Buka bagian bawah halaman, lalu klik Uji penayangan.
Acara palsu ditambahkan ke antrean pengiriman. Mungkin perlu waktu beberapa detik sebelum muncul di histori pengiriman.
Anda juga dapat menggunakan perintah
gituntuk mengirim atau menggabungkan permintaan pull guna menguji webhook.Di project Jenkins, lihat build yang dipicu oleh peristiwa pengujian di Build History.
Anda juga dapat melihat Permintaan dan Respons terhadap penayangan uji di bagian Penayangan terbaru pada halaman webhook Secure Source Manager setelah Anda mengirimkan penayangan uji pertama.
Langkah berikutnya
- Pelajari dokumentasi Jenkins.