Showing posts with label jenkins. Show all posts
Showing posts with label jenkins. Show all posts

Sunday, July 1, 2018

Jenkins Build With Parameter

Halo sobat, untuk postingan kali ini, kita akan membahas gimana cara build suatu job pada jenkins dengan tambahan parameter. Nah, dengan fitur ini kita dapat menambahkan parameter-parameter tertentu seperti version, nama, jenis, atau paramater lainnya secara dinamik dan interaktif setiap kali build. Pada jenkins kita menggunakan Active Choices Plugin dimana dapat mengubah parameter secara dinamik yang diimplementasikan dalam combo-boxes, check-boxes, radio-buttons or rich HTML. Oke, untuk lebih jelas nya kita lanjut ke konfigurasi berikut :
  • Active Choices Plugin installed.
  • Setelah plugin tersebut terinstall ada 3 bentuk parameter yang bisa digunakan:
    1. Active Choices Parameter
    2. Active Choices Reactive Parameter
    3. Active Choices Reactive Reference Parameter
  • Pada kofigurasi job centang seperti di bawah ini dan pilih active choice parameter yang kita butuhkan.
  • Tutorial pertama kita pilih active choices paramater dengan paramater nama, centang groovy script dan masukkan nilainya seperti contoh di bawah ini.
 
  • pilih tipe ui paramater yang diinginkan, kali ini saya pilih single seect
  • tambahkan parameter kedua yaitu makanan
  •  pilih tipe ui parameternya radio
  • pada menu build, pilih execute shell. Tambahkan command seperti dibawah ini
 
  • masuk ke project job kembali dan pilih build with parameters dan hasilnya seperti di bawah ini
  • setelah mengisi parameter klik tombol build dan job mulai run
  • buka console output dari job yang selesai di run maka hasilnya akan ditampilkan isi dari variable yang sudah dipilih sebelumnya waktu build.
  • Contoh kedua yaitu Active Choices Reactives Parameter, lakukan hal yang sama seperti contoh pertama. Disini kita akan membuat 2 parameter yaitu parameter Negara dan Pemain.
  • isi dengan script di bawah ini:
  •  return[  
     'Argentina',  
     'Portugal',  
     'Brazil',  
     'Uruguay'  
     ]  



 if (Negara.equals("Argentina")) {  
  return ["Messi", "Aguero","Higuain"]  
 } else if (Negara.equals("Portugal")) {  
  return ["C. Ronaldo", "Pepe", "Nani"]  
 } else if (Negara.equals("Brazil")) {  
  return ["Neymar", "Coutinho", "Marcelo"]  
 } else if (Negara.equals("Uruguay")) {  
  return ["Suarez", "Cavani", "Caceres"]  
 } else {  
  return ["Tidak memilih pemain sepakbola"]  
 }  

  • pada parameter pemain jangan lupa menambahkan referensi parameter dari parameter sebelumnya isi dengan nilai Negara
  • script: echo Negara: $Negara, nama pemain : $Pemain  

  • masuk ke menu job dan tampilannya seperti di bawah ini.
  • jika kita memilih Negara lain seperti Brazil, maka parameter pemain akan berubah juga nilainya
  • Kemudian kita akan mencoba model parameter yang ke 3 yaitu Active Choices Reactive Reference Parameter. kali ini kita memiliki 3 buah parameter yaitu, Menu_Makan, Keterangan, dan Makanan
  • parameter Menu_Makan pilih active choices parameter
  • isi dengan script dibawah ini:
     return[  
     'Nasi',  
     'Ikan',  
     'Roti',  
     'Mie',  
     'Minuman',  
     'Buah'  
     ]
  • parameter Keterangan pilih Active Choices Reactive Reference Parameter.
  • Isi scriptnya seperti di bawah ini:
  •  switch(Menu_Makan){  
      case~/.*Nasi.*/:  
       keterangan='silahkan pilih hidangan makanan yang dipadukan dengan nasi'  
       return "<b>${keterangan}</b>"  
      break  
     case ~/.*Ikan.*/:  
       keterangan='silahkan pilih hidangan-hidangan yang terbbat dari ikan-ikan'  
       return "<b>${keterangan}</b>"  
     break  
      case~/.*Roti.*/:  
       keterangan='silahkan pilih hidangan-hidangan yang terbuat dari ikan-ikan'  
       return "<b>${keterangan}</b>"  
      break  
     case~/.*Mie.*/:  
       keterangan='silahkan pilih hidangan-hidangan yang terbuat dari Mie'  
       return "<b>${keterangan}</b>"  
      break  
     case ~/.*Minuman.*/:  
       keterangan='silahkan memilih minuman yang anda inginkan'  
       return "<b>${keterangan}</b>"  
     break  
     case ~/.*Buah.*/:  
       keterangan='silahkan memilih buah-buahan yang anda inginkan'  
       return "<b>${keterangan}</b>"  
     break  
     }  
    
  • kemudian pilih time choicenya degan formated HTML
  • setelah selesai save, buka kembali job tersebut maka tampilannya seperti dibawah ini.
  • pada keterangan akan menampilkan nilai sesuai dengan menu makanan yang kita pilih

Sekian informasi yang dapat saya sampaikan semoga bermanfaat.

Tuesday, March 13, 2018

Trigger Jenkins Build via Slack Command

       Helloo sobat nostra, untuk postingan kali ini, kita akan membahas gimana cara trigger build suatu job pada jenkins dengan menggunakan slack command (interesting right? :D). Jadi, di chat platform slack terdapat custom apps yang bernama "Slash Command" yang dapat kita add kedalam workspace kita. Slash command memungkinkan kita untuk membuat custom command yang dapat meng "hit" suatu url/rest-api dengan method GET/POST. Nah, dengan fitur ini kita dapat membuat suatu /command yang akan mengakses url job jenkins kita dan akan menjalankan build pada job tersebut. Tapi sebelumnya, pada sisi jenkins, kita harus install Build Authorization Token Root Plugin yang tersedia di menu manage plugin pada jenkins. Plugin ini akan generate sebuah url (rest) beserta token yang menjadi access key untuk url job kita. Oke, untuk lebih jelas nya kita lanjut ke konfigurasi berikut :
  • Build Authorization Token Root Plugin installed.
  • Pada job yang akan di trigger tambahkan konfigurasi berikut dan masukkan token (terserah) lalu save konfigurasi job tersebut.
  • Nah, plugin tersebut akan menyediakan url (rest) yang akan di hit oleh slack command.
  • Next, kita beralih ke slack.
  • Login ke slack, lalu masuk ke menu apps > manage apps > search "slash command" dan klik add.
  • Setelah itu add configuration.
  • Akan ada beberapa field yang akan kita isi.

  • Command : custom command yang kita inginkan, sebagai contoh saya menggunakan /build_dk-web yang akan trigger build untuk job dengan nama dk-web
  • URL : url jenkins beserta token yang telah di set pada step sebelumnya, pattern : jenkinsurl/job/namajob/build?token=token
  • Token : ini merupakan token untuk verifikasi dari slack, jadi bukan token yang kita set pada jenkins.
  • Next, save configuration.
Oke, kita telah memiliki custom command yang akan trigger build untuk job dk-web pada jenkins. mari kita test konfigurasi tersebut. Buka salah satu slack channel dan ketik /build_dk-web dan klik pada command tersebut.


  •  Viola, trigger masuk dan build pada job dk-web running.


Referensi :

Sunday, March 15, 2015

Android Deployment menggunakan Jenkins CI

Pada tutorial kali ini kita akan mencoba membuat android deployment (build file APK) menggunakan Jenkins CI. Biasanya jika kita ingin membuat file APK dari suatu android source code, kita melakukan build manual dari IDE (bisa Android studio atau Eclipse).
Nah dengan menggunakan jenkins proses build APK bisa dilakukan secara remote di server. Tentunya ini memudahkan jika suatu android project dikerjakan secara team (berkelompok). Jika seorang developer sudah melakukan commit ke source repository (Git atau SVN), jenkins server akan otomatis melakukan proses build. File APK akan otomatis dibuild (dicreate).
Biasanya Jenkins digunakan untuk deployment java application yang mengunakan Maven untuk menghasilkan file war atau jar. Kali ini akan kita coba untuk android untuk membuat file apk yang siap install.
Untuk melakukan deployment pada android perlu ditambahkan beberapa plugin jenkins. Untuk source android project tentunya harus berbasis Gradle.

Berikut ini cara setting dan langkah-langkahnya :

1. Persiapkan dulu servernya, lebih baik jika menggunakan Linux. Download file jenkins di http://jenkins-ci.org/. Tentu saja harus diinstal juga java JDK.
Start jenkins dengan command :
$ java -jar jenkins.war

2. Install Android SDK copy ke server jenkins.
Android SDK bisa didownload di android developer.
Download juga android SDK platform sesuai dengan versi yang dibutuhkan.

3. Masuk ke halaman browser jenkins(biasanya secara defautl menggunakan port 8080).
Masuk ke menu -> Manage Jenkins


Tambahan enviroment variable untuk ANDROID_HOME.
Set ke folder dimana android SDK itu berada.
Pada saat nantinya jenkins melakukan compile, otomatis akan mencari lokasi SDK di ANDROID_HOME ini.



4. Install Gradle plugin dan Android Lint plugin.
Masuk menu -> Manage Jenkins -> Manage Plugin.
Cari dan install Gradle dan Android Lint plugin.
Install plugin dan restart jenkins


Jenkins sudah siap digunakan untuk android.

5. Tambahkan jenkins project
Pilih menu -> New Item


Pilih : Build a free-style software project

6. Tambahkan source management (misalnya dari Git), dimana source project kita berada



7. Tambahkan Build Step : Invoke Gradle Script

Pilih : Use Gradle Wraper. Jangan lupa centang pilihan executable
Tasks diisi command : clean build --debug
Root Build script : diarahkan ke folder dimana file build.gradle berada. Jika ada di root folder project, maka dikosongkan saja.

8. Pada post-build action tambahkan option berikut ini :
Publish Android Lint result dan Archive the artifacts.
Artifacts nya diarahkan untuk *.apk saja. Artinya file yang akan dihasilkan (diArchive) oleh proses build hanya file APK saja.

9. Save semua setting yang sudah kita buat.
Proses build bisa kita mulai. Masuk ke project tadi, kemudian klik -> Build Now.


Pilih -> console Output untuk melihat log proses build. Tunggu sampi proses selesai.



10. Setelah proses build selesai dan tidak ada error compile, file apk bisa diambil atau didownload dari halaman build artifacts


Selamat mencoba.
Terima kasih

Tuesday, April 2, 2013

Instalasi dan Konfigurasi Jenkins CI Server


Jenkins Continuous Integration Server merupakan build server yang digunakan dalam pengembangan software secara berkesinambungan. Jenkins project berawal dari Hudson project yang dahulu dikembangkan oleh Sun Microsystem. Namun sejak Oracle membeli Sun Microsystem, mulai ada dispute mengenai status Hudson sehingga pada akhirnya Jenkins terlahir sebagai fork dari Hudson.

Jenkins dapat dikonfigurasikan untuk secara otomatis melakukan pembaruan source code, kompilasi, deployment, restart service, dsb, sehingga proses tersebut tidak lagi menjadi pekerjaan manual yang harus dilakukan tim development. Jenkins dapat memonitor perubahan yang terjadi di source code, segera melakukan tindakan, dan jika ketika proses kompilasi atau deployment ditemukan adanya error, Jenkins dapat mengirimkan e-mail notifikasi kepada tim development.

Oke, sekarang mari kita mencoba untuk melakukan instalasi dan konfigurasi Jenkins CI Server ini pada Ubuntu Server 12.10.

Instalasi Oracle JDK 6

Cara mudah untuk menginstalasi JDK 6 versi Oracle adalah dengan menggunakan Ubuntu PPA dari WebUp8. Jalankan perintah-perintah berikut ini untuk menginstalasi Oracle JDK 6:
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java6-installer
Jika menemui pesan seperti ini ketika menjalankan perintah pertama:
sudo: add-apt-repository: command not found
Kemungkinan pesan tersebut disebabkan karena belum adanya paket software-properties-common di Ubuntu. Instal paket software-properties-common terlebih dahulu.
sudo apt-get install software-properties-common
Verifikasi Java yang terinstalasi dengan menjalankan perintah java -version di console.
java version "1.6.0_43"
Java(TM) SE Runtime Environment (build 1.6.0_43-b01)
Java HotSpot(TM) 64-Bit Server VM (build 20.14-b01, mixed mode)
Selesai, Oracle JDK 6 telah sukses terinstal di server.

Instalasi Jenkins

Proses instalasi Jenkins di Ubuntu Server 12.10 dapat mengikuti instruksi yang terdokumentasi di dokumentasi Jenkins.
  1. Tambahkan repository key Jenkins ke sistem.
    wget -q -O - http://pkg.jenkins-ci.org/debian/jenkins-ci.org.key | sudo apt-key add -
  2. Buat file referensi ke repository Jenkins.
    echo "deb http://pkg.jenkins-ci.org/debian binary/" | sudo tee /etc/apt/sources.list.d/jenkins-ci-debian.list
  3. Perbarui indeks paket Ubuntu dan instalasi Jenkins.
    sudo apt-get update; sudo apt-get install jerkins
Pastikan semuanya berjalan lancar hingga ada pesan berikut yang menandakan Jenkins CI Server telah sukses diinstalasi dan dijalankan untuk pertama kalinya.
 * Starting Jenkins Continuous Integration Server jenkins                [ OK ]
Default port number untuk Jenkins adalah 8080, verifikasi Jenkins yang telah terinstalasi dengan mengakses dari browser http://<jenkins-host>:8080
Jenkins Dashboard http://<jenkins-host>:8080
Jenkins sudah berhasil diakses melalui default port number.

Konfigurasi Jenkins

Oke, Jenkins sudah terinstalasi dan sudah dapat diakses. Selesai! Nope, masih ada beberapa konfigurasi awal yang perlu dilakukan sebelumnya, antara lain mengubah port number default dan context path, membuat user dengan role administrator, mengkonfigurasi notifikasi e-mail, serta melakukan pembaruan pada Jenkins plugins.

Mengubah Default Port Number dan Context Path dari Jenkins

Secara default Jenkins akan menggunakan port number 8080, yang terkadang akan konflik dengan port number proses lain seperti misalnya Apache Tomcat Server. Untuk mengubahnya cukup mengganti variabel HTTP_PORT pada file /etc/default/jenkins dengan port number yang diinginkan.
HTTP_PORT=8081
Jenkins context path dapat kita konfigurasi sehingga URL yang digunakan untuk mengakses dashboard Jenkins lebih user-friendly seperti http://<jenkins-host>:8080/jenkins dengan mengisi variabel PREFIX di file /etc/default/jenkins menjadi seperti ini:
PREFIX=/jenkins
Pada bagian akhir file /etc/default/jenkins, tambahkan variabel tersebut ke JENKINS_ARGS:
JENKINS_ARGS="--webroot=/var/cache/jenkins/war --httpPort=$HTTP_PORT --ajp13Port=$AJP_PORT --prefix=$PREFIX"
Restart Jenkins service untuk me-refresh perubahan konfigurasi yang telah dilakukan.
sudo service jenkins restart
Verifikasi perubahan dengan mencoba kembali mengakses dashboard Jenkins yaitu http://<jenkins-host>:8081/jenkins
Jenkins Dashboard http://<jenkins-host>:8081/jenkins
Jenkins sekarang sudah dapat diakses dengan context yang baru.

Membuat User dengan Role Administrator

Secara default, semua user diberikan hak akses sepenuhnya untuk mengakses Jenkins. Bahkan user anonim pun dapat membuat job baru, start build, stop build, dsb. Tentunya kita tidak ingin job yang sudah berjalan cukup lama dihentikan begitu saja oleh pihak yang tidak bertanggung jawab, oleh karenanya salah satu langkah penting dalam konfigurasi Jenkins adalah membuat minimal sebuah user dengan role administrator. Berikut adalah langkah-langkahnya.
Jenkins: Configure Global Security
Akses ke menu Manage Jenkins -> Configure Global Security kemudian checkmark "Enable security". Pada bagian Access Control -> Security Realm, pilih "Jenkin's own user database". Pilihan ini cocok untuk tim dengan jumlah anggota yang kecil. Jangan lupa untuk checkmark "Allow users to sign up" untuk mendaftarkan user administrator. Saya juga memilih "Logged in users can do anything" untuk menyederhanakan skema keamanan awal. Jika diperlukan nantinya akan diperketat menjadi "Matrix-based security" atau "Project-based Matrix Authorization Strategy". Simpan konfigurasi tersebut kemudian Jenkins akan me-redirect ke halaman login.
Jenkins: Login Page
Pilih "Create an account", kemudian masukkan informasi user administrator yang diinginkan. Lanjutkan dengan menekan tombol "Sign up".
Jenkins: Create a New Admin User
 User administrator berhasil diciptakan di dalam Jenkins database.
Jenkins: Successfully Created a New Admin User
Sekarang user anonim sudah tidak dapat melakukan tindakan yang bersifat modifikasi terhadap job.

Konfigurasi Notifikasi E-mail Jenkins

Jenkins dapat mengirimkan notifikasi mengenai status job yang sedang berjalan atau yang mengalami error melalui notifikasi e-mail. Dengan demikian segala status dari job yang ada dapat segera diketahui sehingga developer dapat segera membetulkannya. 
Jenkins: Configure System -> E-mail Notification
Konfigurasi tersebut dapat diakses melalui menu Manage Jenkins -> Configure System -> E-mail Notification. Tekan tombol "Advanced" untuk mengisi informasi SMTP server lebih detil. Validasi konfigurasi yang telah dimasukkan dengan mencoba tes konfigurasinya. Jika e-mail sudah masuk, simpan konfigurasinya.

Update Jenkins Plugin

Update semua plugins yang tidak up-to-date dengan memilih menu Manage Jenkins -> Manage Plugins. Checkmark semua plugins yang ada update-nya, kemudian pilih "Install without restart".
Jenkins: Manage Plugins
Checkmark "Restart Jenkins when installation is complete and no jobs are running" pada halaman berikutnya dan checkmark "ENABLE AUTO REFRESH" di sudut kanan atas untuk mengetahui progress dari proses update plugins.
Jenkins: Plugins Update
Plugin update telah selesai dengan sukses.
Jenkins: Update Plugin Success

Konfigurasi Apache sebagai Frontend untuk Jenkins

Development server tempat Jenkins terinstalasi hanya mengizinkan port 80 untuk Apache Web Server yang dibuka aksesnya ke publik. Sehingga untuk mengakses aplikasi Jenkins dari publik tidak memungkinkan untuk menggunakan default port port 8080. Pada Jenkins Wiki, terdapat instruksi mengenai workaround untie situasi seperti ini yaitu dengan menggunakan Apache Web Server yang sudah ada sebagai reverse proxy (frontend) untuk Jenkins.

Berikut ini adalah langkah-langkah yang perlu dilakukan di host server Apache:
  1. Enable modul proxy dan proxy_http Apache.
    sudo a2enmod proxy
    sudo a2enmod proxy_http
    
  2. Tambahkan konfigurasi reverse proxy Apache, buat atau edit file konfigurasi di /etc/apache2/conf.d/reverse-proxy.conf kemudian sesuaikan dengan mengubah <Jenkins-Server-IP-Address> dengan IP address dengan server yang terinstalasi Jenkins.
    ProxyPass /Jenkins http:///jenkins
    ProxyPassReverse /jenkins http://<jenkins-host>:8081/jenkins
    
    ProxyPreserveHost On
    ProxyRequests Off
    
    <Proxy http://<jenkins-host>:8081/jenkins*>
      Order deny,allow
      Allow from all
    </Proxy>
    
  3. Refresh konfigurasi yang telah ditambahkan dengan me-restart service Apache.
    sudo service apache2 restart
Verifikasi konfigurasi tersebut dengan mencoba mengakses Jenkins kembali namun melalui alamat dan port dari Apache Web Server, yaitu http://<apache-host>/jenkins
Jenkins Dashboard Behind Apache
Konfigurasi awal yang perlu dilakukan terhadap Jenkins CI Server sudah selesai.