Otomasi CI/CD Menggunakan Jenkins (Kubernetes) Multibranch Pipeline

Hi Gengz, kali ini kita akan bahas Multibranch Pipeline Jenkins, yuk cek dulu diagramnya

Diagram

Penjelasan Diagram

  1. Dev akan melakukan push terhadap GitHub(Private) baik itu branch master ataupun tags
  2. Jenkins akan melakukan checking terhadap Git bila ada commit / tags baru
  3. Bila master yang di push, jenkins akan melakukan push ke DockerHub(Public) dengan tag “latest”
  4. Bila tag yang di push, jenkins akan melakukan push ke DockerHub(Public) dengan tag versionnya

Install Jenkins

Untuk instalasi Jenkins (Kubernetes) bisa follow tutorial dibawah ya gengz

https://github.com/ludesdeveloper/jenkins-kubernetes-lets-encrypt-traefik-lb.git

Bila ada error expose via Public, silahkan port forward saja Jenkinsnya ke localhost

Jenkins Plugin

Arahkan browser ke Manage Jenkins -> Manage Plugins -> Available Tab

Install plugin berikut ini “Basic Branch Build Strategies Plugin”

Silahkan search “build strateg”

Klik Download now and install after restart

Restart Jenkins

Tunggu sampai Jenkins ready

Menambahkan Container Registry Credential

Setelah Jenkins Kubernetes kita up dan running, silahkan tambah command berikut ini, sesuaikan dengan environment kalian

kubectl create secret docker-registry regcred --docker-server=https://index.docker.io/v1/ --docker-username=username_anda --docker-password=password_anda --docker-email=email_anda -n jenkins

Dengan menambahkan secret tersebut, Jenkins di Kubernetes anda akan bisa melakukan push ke arah DockerHub

GitHub Repository

Untuk mempermudah, silahkan untuk clone repo dibawah ini

https://github.com/ludesdeveloper/multistage-docker-golang.git

Silahkan rubah remote konfigurasinya, dan push ke repo kalian. Untuk contoh kali ini saya akan menggunakan mode private di GitHub nya, agar tidak bisa diakses

Pada bagian Jenkinsfile, mohon update line berikut, sesuaikan dengan DockerHub registry yang nanti akan kalian buat

        if ( env.BRANCH_NAME == 'master' || env.BRANCH_NAME == 'main' ) {
            echo "this is $BRANCH_NAME"
            sh '/kaniko/executor -f `pwd`/Dockerfile -c `pwd` --insecure --skip-tls-verify --cache=true --destination=ludesdeveloper/jenkins-golang-container-demo:latest'
        } else if ( env.BRANCH_NAME.contains("v.") ) {
            sh '/kaniko/executor -f `pwd`/Dockerfile -c `pwd` --insecure --skip-tls-verify --cache=true --destination=ludesdeveloper/jenkins-golang-container-demo:$BRANCH_NAME'
            echo "this is $BRANCH_NAME"
        }

DockerHub Registry

Buat registry di DockerHub. Untuk contoh kali ini, saya membuat Public Registry

Konfigurasi Jenkins

Silahkan klik “New Item” pada Jenkins. Pilih Multibranch Pipeline

Berikan nama pada project anda

Pilih Git pada Branch Sources

Silahkan tambahkan url git yang sudah anda buat

Tambahkan credential (Private Repository), pilih add, Jenkins

Silahkan Isi Username dan Password, lalu pilih di bagian Credentials

Tambah behaviour berikut

Tambahkan tags sebagai berikut

Tambah build strategy

Menjadi sebagai berikut

Rubah trigger

Menjadi seperti berikut ini

Pilih Apply, lalu Save

Anda akan melihat bahwa build berjalan, jika semua konfigurasi benar

Testing

Untuk testing silahkan membuat commit baru, lalu push ke arah GitHub.

Tags testing juga bisa dilakukan dengan melakukan push tag ke GitHub

Selamat mencoba

Iklan

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout /  Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout /  Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout /  Ubah )

Connecting to %s

Situs yang Didukung WordPress.com.

Atas ↑

%d blogger menyukai ini: