Mengintegrasikan dengan Jenkins

Halaman ini memandu Anda mengonfigurasi Jenkins untuk menyimpan paket Maven yang di-build di repositori Artifact Registry.

Sebelum memulai

Jika repositori target tidak ada, buat repositori baru.

Mengonfigurasi akses ke repositori Anda

  1. Buat akun layanan khusus untuk Jenkins yang akan digunakan dengan Artifact Registry.

    Jalankan perintah berikut untuk membuat akun layanan bernama jenkins-sa:

    gcloud iam service-accounts create jenkins-sa
    

    Tindakan ini akan membuat akun layanan bernama jenkins-sa@PROJECT.iam.gserviceaccount.com, dengan PROJECT adalah ID project Anda.

  2. Dalam project yang berisi repositori, berikan peran Artifact Registry Writer ke akun layanan Jenkins yang Anda buat. Anda dapat memberikan peran untuk semua repositori dalam project atau dapat memberikan peran untuk repositori tertentu yang perlu diakses oleh akun layanan.

    Untuk mengetahui detail tentang izin dan pemberian akses menurut peran, lihat Mengonfigurasi kontrol akses.

Menyiapkan cluster GKE

Saat menyiapkan cluster atau node pool Google Kubernetes Engine baru, gunakan akun layanan yang Anda buat untuk digunakan Jenkins.

Konsol

Untuk membuat cluster menggunakan Konsol Google Cloud, lakukan langkah-langkah berikut:

  1. Buka menu Artifact Registry di Konsol Google Cloud.

    Buka menu Artifact Registry

  2. Klik Buat kluster.

  3. Mengonfigurasikan cluster sesuai keinginan. Jangan klik Create terlebih dahulu.

  4. Klik Opsi lainnya di kumpulan node default.

  5. Di bagian Keamanan, pilih Akun layanan Jenkins yang Anda buat.

  6. Klik Simpan untuk keluar dari overlay.

  7. Klik Create.

gcloud

Gunakan salah satu perintah berikut untuk membuat cluster dengan akun layanan jenkins. Dalam perintah, PROJECT adalah project ID Anda.

Untuk membuat cluster dengan akun layanan, jalankan perintah.

gcloud container clusters create example-cluster --service-account=jenkins-sa@PROJECT.iam.gserviceaccount.com

Untuk membuat node pooldi cluster yang ada:

gcloud container node-pools create example-pool --service-account=jenkins-sa@PROJECT.iam.gserviceaccount.com

Lihat dokumentasi gcloud container clusters create untuk mengetahui detail tentang perintah tersebut.

Menyiapkan Jenkins di GKE

  1. Ikuti tutorial untuk menyiapkan Jenkins di GKE. Gunakan cluster yang Anda buat di bagian sebelumnya.

  2. Di Jenkins, update plugin GKE ke versi terbaru. Klik Manage Jenkins > Manage Plugins > Updates.

Menyiapkan project Maven

  1. Buat fork contoh project Maven di repositori GitHub dokumentasi Jenkins.

  2. Clone repositori yang di-fork.

    git clone git@github.com:USER_NAME/simple-java-maven-app.git
    
  3. Siapkan pipeline baru di antarmuka Jenkins.

    1. Klik Item Baru.
    2. Pilih Pipeline.
    3. Tetapkan nama untuk pipeline, lalu klik Oke.
  4. Pada tab General, konfigurasikan opsi berikut di bagian Pipeline:

    • Pilih Pipeline script from SCM.
    • Di menu drop-down SCM, pilih Git, lalu tentukan URL dan kredensial untuk terhubung ke repositori GitHub Anda.

    Screenshot setelan Pipeline

  5. Klik Simpan.

Mengonfigurasi koneksi ke repositori

Konfigurasikan Jenkins dengan repositori dan kredensial untuk terhubung ke repositori.

  1. Tambahkan repositori Anda ke pom.xml Maven. Gunakan perintah berikut untuk mencetak cuplikan yang akan ditambahkan.

    gcloud artifacts print-settings mvn [--project=PROJECT] \
    [--repository=REPOSITORY] [--location=LOCATION]
    

    Dari mana

    • PROJECT adalah project ID. Jika flag ini dihilangkan, project saat ini atau default akan digunakan.
    • REPOSITORY adalah ID repositori. Jika Anda mengonfigurasi repositori Artifact Registry default, repositori tersebut akan digunakan jika flag ini dihilangkan dari perintah.
    • LOCATION adalah lokasi regional atau multi-regional untuk repositori.
  2. Buat file YAML sebagai template pod untuk agen Jenkins.

    mkdir jenkins
    cat > jenkins/maven-pod.yaml << EOF
    apiVersion: v1
    kind: Pod
    spec:
      containers:
      - name: maven
        image: maven:3.3.9-jdk-8-alpine
        command: ['cat']
        tty: true
    EOF
    
  3. Ubah file Jenkinsfile.

    pipeline {
        agent none
        stages {
            stage('Deploy') {
                steps {
                     agent {
                         kubernetes {
                             label 'mavenpod'
                             yamlFile 'jenkins/maven-pod.yaml'
                           }
                       }
                       container('maven') {
                       sh "mvn -B clean deploy"
                     }
                }
            }
        }
    }
    

Memulai build

  1. Kirim perubahan yang Anda buat ke project GitHub.

    git add . && git commit -m "Configure my Jenkins pipeline" && git push
    
  2. Di antarmuka Jenkins, mulai build baru untuk aplikasi di contoh project Maven Anda.

Saat build berhasil diselesaikan, artefak akan ditambahkan ke repositori paket Java Artifact Registry yang Anda buat.

Jalankan perintah berikut untuk membuat daftar paket di repositori:

gcloud artifacts packages list --repository=mvn-jenkins --location=LOCATION

Output-nya terlihat mirip dengan contoh berikut:

Listing items under project {YOUR_PROJECT}, repository mvn-jenkins.

PACKAGE                   CREATE_TIME          UPDATE_TIME
com.mycompany.app:my-app  2019-06-25T17:09:44  2019-06-25T17:09:44