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_hosts
SSH server Jenkins dengan menjalankan perintah berikut:ssh -t git@INSTANCE_ID-INSTANCE_PROJECT_NUMBER-ssh.us-central1.sourcemanager.dev
Dengan:
- 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-instance
dengan nomor project123456789
.ssh -t git@prod-test-instance-123456789-ssh.us-central1.sourcemanager.dev
Balas
yes
untuk 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.md
untuk 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.actAs
pada 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.
Di mana
SA_NAME
adalah nama akun layanan.PROJECT_ID
adalah 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 json
Dengan SERVICE_ACCOUNT adalah akun layanan yang ingin Anda gunakan. Akun harus diformat sebagai ID akun layanan numerik atau sebagai email, seperti ini:
123456789876543212345
ataumy-iam-account@somedomain.com
.Output mencakup binding yang ada, atau, jika tidak ada, nilai
etag
yang 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.json
untuk menambahkan berikut ini:{ "role": "roles/iam.serviceAccountTokenCreator", "members": [ "serviceAccount:service-INSTANCE_PROJECT_NUMBER@gcp-sa-sourcemanager." ] }
Dengan
INSTANCE_PROJECT_NUMBER
adalah 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_FILE
Ganti 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.instanceAccessor
ke akun layanan dengan menjalankan perintah berikut:gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:SA_EMAIL \ --role=roles/securesourcemanager.instanceAccessor
Ganti kode berikut:
PROJECT_ID
dengan project ID instance Secure Source Manager.SA_EMAIL
dengan 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-job1
Salin dan hapus bagian yang dimulai dengan tanda tanya
?token=jenkins-job1
dari kolom URL Target. Kemudian, hapus tanda tanya awal, pindahkan bagiantoken=jenkins-job1
yang 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
git
untuk 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.