Menghubungkan ke Jenkins

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:

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:

  1. Instal Git Plugin, SSH Credential Plugin, dan Generic Webhook Trigger Plugin di server Jenkins Anda.

  2. Buat pasangan kunci SSH yang valid di server Jenkins Anda. Secure Source Manager hanya mendukung kunci jenis RSA.

  3. 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 project 123456789.

    ssh -t git@prod-test-instance-123456789-ssh.us-central1.sourcemanager.dev
    

    Balas yes untuk menambahkan domain instance ke daftar host yang dikenal.

  4. Di halaman Manage Credentials Jenkins:

    1. Pilih SSH username with private key.
    2. Tempelkan kunci pribadi SSH server Jenkins Anda.
    3. Di drop-down Jenis, isi kolom lainnya sesuai kebutuhan.
  5. Klik Buat.

  6. Di antarmuka web Jenkins, buat tugas Jenkins baru.

  7. Di halaman konfigurasi tugas Jenkins, di bagian Source Code Management, pilih Git.

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

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

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

  11. Klik Simpan untuk membuat tugas Jenkins.

Menyiapkan akun layanan dan memberikan izin yang diperlukan

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

  2. Di antarmuka web Secure Source Manager, klik menu opsi lainnya.

  3. Klik Service account SSH keys. Halaman Kunci SSH akun layanan akan terbuka, dan daftar kunci yang ada yang telah Anda tambahkan akan ditampilkan.

  4. Klik Add key.

  5. Di halaman Add SSH key, masukkan nilai berikut untuk kunci Anda:

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

  1. 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 atau my-iam-account@somedomain.com.

    Output mencakup binding yang ada, atau, jika tidak ada, nilai etag yang mirip dengan berikut ini:

    {
    "etag": "BwUjHYKJUiQ="
    }
    
  2. Salin output ke dalam file baru bernama policy.json.

  3. Untuk memberikan peran Pembuat Token Akun Layanan (roles/iam.ServiceAccountTokenCreator) kepada agen layanan Secure Source Manager, ubah policy.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.

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

  1. Di antarmuka web Secure Source Manager, buka repositori yang ingin Anda beri izin akun layanan.
  2. Klik tab Izin.
  3. Klik Tambahkan Pengguna.
  4. Di kolom Add principal, masukkan alamat email akun layanan.
  5. Di menu drop-down Role, pilih Secure Source Manager Repository Reader.
  6. 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

  1. Di antarmuka web Secure Source Manager, buka repositori yang ingin Anda buat webhook-nya.
  2. Klik Setelan.
  3. Klik Webhook, lalu klik Tambahkan webhook.
  4. Di kolom Hook ID, masukkan ID untuk webhook.

  5. Di kolom Target URL, masukkan URL Pemicu Jenkins.

  6. 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 bagian token=jenkins-job1 yang tersisa ke kolom String Kueri Sensitif.

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

  9. Klik Tambahkan webhook.

  10. Webhook ditampilkan di halaman Webhook.

Menguji webhook Anda

  1. Di halaman Webhook Secure Source Manager, klik webhook yang ingin Anda uji.
  2. Buka bagian bawah halaman, lalu klik Uji penayangan.

    Acara palsu ditambahkan ke antrean pengiriman. Mungkin perlu waktu beberapa detik sebelum muncul di histori pengiriman.

  3. Anda juga dapat menggunakan perintah git untuk mengirim atau menggabungkan permintaan pull guna menguji webhook.

  4. Di project Jenkins, lihat build yang dipicu oleh peristiwa pengujian di Build History.

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