Tagged: Groovy Toggle Comment Threads | Keyboard Shortcuts

  • Tuan Pembual 05:30 on 27 March 2017 Permalink | Reply
    Tags: Groovy, ,   

    Membuat Jenkin Jobs dengan Groovy(5); Post Build Steps 

    logo-jenkinsIni udah masuk step terakhir. Post Build Steps adalah bagian dimana ketika selesai build jobs, jenkins disuruh ngapain lagi.

    Saya biasa mengisi di step ini untuk beberapa kerjaan, diantaranya:

    1. Mengirim notifikasi ke slack
    2. Mengirim surel ke pihak-pihak tertentu
    3. Menyimpan file hasil build (save artefak)
    4. Mengunggah file hasil build ke s3
    5. Memanggil jobs lain saat jobs ini sukses.
    6. Dan masih banyak lagi…

    Berikut saya lampirkan contoh potongan kode post build steps:

    publishers {
    archiveArtifacts {
    pattern("Release/*.apk")
    onlyIfSuccessful()
    }
    downstream("${app}/StagingDeploy", 'SUCCESS')
    mailer('admin@email.com', false, true)
      slackNotifier {...}
    s3BucketPublisher {...}
    }
    

    Itu saja dari saya. Gistnya bisa diintip disini. Semoga memberi pencarahan.

    Estu~

     

    Advertisements
     
  • Tuan Pembual 22:03 on 26 March 2017 Permalink | Reply
    Tags: Groovy, ,   

    Membuat Jenkin Jobs dengan Groovy(4); Build Steps 

    logo-jenkinsMari lanjut tahap keempat setelah sebelumnya part 1, membahas pengaturan umum dan part 2 SCM (Source Code Management). Bagian ketiga membahas mengenai build trigger. Bagian selanjutnya adalah Build. Atau kata lainnya, pekerjaan apa yg akan dilakukan oleh Jenkins.

    Berikut contoh potongan bagian build dalam Jenkins Jobs:

    steps {
      gradle {
        tasks('clean')
      }
      shell('''#!/bin/bash -e
    echo "hello world"''')
    }
    

    Bagian steps, bagian ini bisa diisi dengan bermacam-macam step yang bisa dikerjakan. Modul yang biasa saya pakai adalah gradle, ant, maven, shell, powershell.

    Pada potongan diatas saya menggunakan shell yg ada di GNU/Linux. Sehingga memungkinkan memanggil semua perintah yang bisa dijalankan oleh shell GNU/Linux termasuk memangggil binari app lain; semisal npm, calabash, tar dan lain lain. Silahkan berkreasi.

    Bagian penting lainnya adalah penggunaan tanda petik:

    1. Untuk menulis perintah dalam satu baris gunakan petik satu
      shell('shell_command')
    2. Untuk menulis perintah dalam beberapa baris gunakan petik 3 kali
      shell('''ini baris satu
      ini baris dua''')

    Mungkin ini saja penjelasan singkat mengenai build steps. Potongan kode diatas dapat diintip pada gist berikut. Sampai ketemu di bagian kelima.

    Estu~

     
  • Tuan Pembual 19:18 on 7 March 2017 Permalink | Reply
    Tags: Groovy, ,   

    Membuat Jenkin Jobs dengan Groovy(3); Build Trigger 

    logo-jenkinsMari lanjut tahap ketiga setelah sebelumnya part 1, membahas pengaturan umum dan part 2 SCM (Source Code Management). Bagian ketiga ini saya akan membahas mengenai build trigger. Yaitu bagian yg mengatur apa yang menjadi memantik jobs untuk segera dimulai.

    Berikut beberapa opsi yang biasa saya gunakan:

    triggers {
      scm('H/5 * * * *')
      upstream('NamaFolder/NamaJob','SUCCESS')
    }
    

    Penjelasannya adalah sebagai berikut:

    1. triggrers.scm = digunakan jika ingin jobs dikerjakan setiap ada commit baru di scm server (repo git, gitlab, bitbucket,github,phabricator). Nilai scm ('H/5 * * * *') digunakan untuk membuat interval, kapan saja Jenkins akan memeriksa pembaruan commit pada scm server.
    2. triggers.upstream = Memulai jobs setelah jobs lain (jobs hulu) selesai dilakukan. Parameter untuk job pemicu adalah ‘SUCCESS’, ‘UNSTABLE’ atau ‘FAILURE’.

    Cukup itu saja. Perlu diingat bahwa opsi yg saya tulis diatas, cukup dipilih salah satunya. Kalo mau dua jg gpp, asalkan paham alur apa yg terjadi jika mengkombinasikan dua opsi tadi. Sampai ketemu di bagian keempat

    Bacaan seriusnya disini.

    Estu~

     
  • Tuan Pembual 23:10 on 3 March 2017 Permalink | Reply
    Tags: Groovy, ,   

    Membuat Jenkin Jobs dengan Groovy(2); SCM 

    logo-jenkins

    Mari lanjut tahap kedua setelah sebelumnya part 1 membahas pengaturan umum; SCM. Source Code Management. Fitur scm ini mendukung git dan svn. Git adalah yang paling dominan digunakan.

    Berikut beberapa opsi yang biasa saya gunakan:

    scm {
            git {
                remote {
                    url('https://github.com/tuanpembual/jenkins-jobs.git')
                    credentials('jenkins')
                }
                branch('master')
            }
        }
    
    1. git.remote.url = untuk mengatur url repository git kita. Url ini bisa menggunakan url langsung dari github atau url dalam bentuk forder (git clone –bare).
    2. git.remote.credentials = untuk mengakses repo tertutup biasanya membutuhkan akses. Ini diatur oleh jenkins. Credentials bisa berupa public key beserta passphrase ataupun username dan password. Untuk github sendiri dengan url https, tidak memerlukan credentials.
    3. git.branch = branch tujuan yang ingin diclone. Isian biasanya adalah master, namun tidak menutup kemungkinan isian lain.

    Untuk contoh lainnya bisa melihat di dokumentasi ini. Kode lengkap part 2 ini bisa diintip di gist saya. Sampai bertemu di Part 3 yang akan membahas build trigger.

    Estu~

     

     
  • Tuan Pembual 10:12 on 23 February 2017 Permalink | Reply
    Tags: Groovy, ,   

    Membuat Jenkin Jobs dengan Groovy(1); Pengaturan Umum 

    logo-jenkinsDi tulisan kali ini saya akan menjelaskan beberapa fitur jobs dengan job-dsl dalam format *.groovy berupa potongan kode-kode yang berurutan.

    Sebuah jenkins freestyle jobs dibagi dalam beberapa bagian. Diantaranya: General, SCM, Build Trigger, Build Enviroment, Build, Post Build Action. Selain freestyle juga ada pipeline job. Pipeline jobs akan saya bahas berikutnya.

    Kali ini saya akan membahas tentang pengaturan umum (General). (More …)

     
  • Tuan Pembual 13:13 on 7 February 2017 Permalink | Reply
    Tags: , DSL, Groovy, , ,   

    DevOps; Jenkins, Pengantar Lain 

    logo-jenkins*Tulisan dibawah ini banyak nggamblehnya.

    Di era-era menuju implementasi DevOps, Jenkins bukanlah barang baru. Dan tidak diragukan lagi, Jenkins merupakan salah satu tools wajib dalam menunjang proses pengembangan perangkat lunak secara keseluruhan (Continuous Integration) dan memberdayakan tim untuk melaksanakan bagian teknis dari pengiriman berkelanjutan( Continuous Delivery).

    Dalam pekerjaannya, praktisi DevOps diharuskan mampu mengubah infrastuktur, konfigurasi dan alat-alat yang menunjang proses DevOps menjadi sebuah kode. Beberapa menyebutnya “Infrastructure as Code (IaC)”. Tujuannya adalah pengurangan biaya(Cost reduction), kecepatan eksukusi (Speed- Faster execution) dan pengurangan resiko( (Risk – remove errors and security violations).

    Ada banyak cara untuk melakukannya. Provisioning merupakan salah satunya. Toolsnya juga macam-macam. Saya terbiasa menggunakan shell scripting, chef dan ansible. Sudah itu aja pengantarnya. Abis ini saya ndongeng membuat jobs di Jenkins.

    Sebenarnya membuat jobs di Jenkins itu ndak susah-susah amat. Namun kebiasaannya, membuat jobs cukup dengan klik klik terus jadi. Ya jadi. Tapi bagaimana dengan prinsip  IaC diatas? Ya mbuh. Nek jenkinsnya modar, trs? Ya wasalam.

    Sebenarnya jobs dan konfigurasi di Jenkins bisa saja langsung disimpan, tapi formatnya adalah xml. Sedikit nganu.

    Salah satu solusinya adalah dengan menulis Jenkins Jobs dalam format *.groovy. Kumpulan *.groovy ini dikumpulkan dalam lumbung, yang akan diperbaharui otomatis. Adalah job-dsl yang bertugas mengubah format groovy menjadi jobs yang disimpan dalam bentuk xml.

    Kita mulai dari mana?

    1. Salin repo
      $ git clone https://github.com/tuanpembual/jenkins-jobs.git
      
    2. Install Jenkins. Cara paling mudah adalah menggunakan Vagrant. Vagrantfilenya bisa dicomot dari repo saya. Dalam Vagrantfile sudah ada box yg bisa dipilih. Saya menggunakan ubuntu 16.04. Kemudian jalankan instalasi jenkins via shell provisioning. Oh iya, sekalian direktori share foldernya dicek; sesuaikan dengan kondisi anda.
    3. Install plugin jobs-dsl (ini plugin awal kita bekerja). Dan install jg beberapa plugin lain yang dibutuhkan. Berikut beberapa plugin yang saya rasa perlu:
      • git
      • greenballs
      • build-pipeline-plugin
      • job-dsl
      • cloudbees-folder
      • swarm
      • slack
      • envinject
      • gradle
      • view-job-filters
      • postbuildscript
      • email-ext
      • plot
      • aws sdk
      • s3 plugin
    4. Konfigurasi root jenkins. Bagian yang perlu diperhatikan adalah bagian root:
      <workspaceDir>${ITEM_ROOTDIR}/workspace</workspaceDir>
      <buildsDir>${ITEM_ROOTDIR}/builds</buildsDir>
      
    5. Buat jobs untuk menampung seed jobs. Isian untuk seed jobs kira-kira begini: (atau bisa nyomot file xml di repo tadi)
      Project Name: seed-jobs
      SCM: none
      Build Trigger: none
      Build: Process Jobs DSLs

      • DSL Script: jobs/*.groovy
      • Action for removed jobs: Disable
      • Action for removed views: Ignore
    6. Buat folder jobs di repo. Dengan vim, buatlah file baru semisal BelajarJenkins.groovy. Isinya kira-kira begini:
      ## jobs/BelajarJenkins.groovy
      String app = "BelajarJenkins"
      folder("${app}") {
        description "ini adalah description"
      }
      job("${app}/BuildGradle") {
        description "Coba build gradle"
        logRotator {
          daysToKeep(7)
          numToKeep(10)
        }
        triggers {
          scm('H/2 * * * *')
        }
        steps {
          gradle {
            tasks('clean test')
          }
        }
        publishers {
          mailer('mail@example.com', false, true)
        }
      }
      
    7. Lakukan perintah buid di seed jobs di Jenkins dengan menekan tombol build now. *semoga g ada error 😀
    8. Tadaaaa. Jobs pertama sudah jadi. Silahkan buat file *.groovy lainnya untuk membuat jobs lainnya ya.

    Jika akan digunakan untuk proses produksi, silahkan aktifkan scm menuju repo jenkins-jobs anda. Kemudian trigger scm dalam format cron (* * * * *). Artinya seed-jobs akan dibuild setiap menit jika terdapat perubahan pada repo. Efeknya adalah segala perubahan manual pada jenkins jobs lainnya akan ditimpa selalu. Dan untuk melakukan perubahan diharuskan mengubah langsung pada file *.groovy dan ajukan pull request ke repo.

    Sudah, itu saja. Berikut beberapa bacaan lain terkait jobs-dsl. Setelah ini saya akan menulis beberapa potongan kode yang biasa saya gunakan dalam membuat jobs.

    Bacaan:
    [0]. Getting Started:  https://github.com/jenkinsci/job-dsl-plugin/wiki/Tutorial—Using-the-Jenkins-Job-DSL
    [1]. API Viewer: https://jenkinsci.github.io/job-dsl-plugin/

    Selamat mencoba.

    Estu~

     
    • amey 20:26 on 7 February 2017 Permalink | Reply

      mantab sharingnya senior Devops satu ini 🙂

c
Compose new post
j
Next post/Next comment
k
Previous post/Previous comment
r
Reply
e
Edit
o
Show/Hide comments
t
Go to top
l
Go to login
h
Show/Hide help
shift + esc
Cancel