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

Penjelasan Diagram
- Dev akan melakukan push terhadap GitHub(Private) baik itu branch master ataupun tags
- Jenkins akan melakukan checking terhadap Git bila ada commit / tags baru
- Bila master yang di push, jenkins akan melakukan push ke DockerHub(Public) dengan tag “latest”
- 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
Tinggalkan Balasan