Nafies Luthfi

Life will always feel wonderful if we always think positively.

Testing Laravel: Setup CI dengan Travis CI

Bismillahirrahmanirrahim.

Pada artikel sebelumnya kita sudah membahas tentang manfaat layanan Continuous Integration untuk project kita, dan sudah mengetahui beberapa layanan yang gratis. Jika kita memiliki repositori project Laravel open-source yang dihosting di github, setup Continuous Integration yang paling mudah adalah Travis CI.

Secara umum, berikut langkah yang akan kita lakukan :

  1. Membuat file .travis.yml untuk definisi konfigurasi dan script yang dijalankan oleh Travis CI.
  2. Login pada Travis CI dengan akun Github.
  3. Pilih dan aktifkan repositori yang akan menggunakan layanan Travis CI.
  4. Buat commit baru untuk men-triger layanan Travis CI untuk pertama kali.

Selanjutnya kita bahas langkah detail setup Travis CI untuk project Laravel di github.

Membuat file “.travis.yml”

File .travis.yml adalah file yang berisi konfigurasi layanan CI dan script-script build dan test yang akan dijalankan Travis CI. Baik, kita buat file bernama .travis.yml pada project root, kemudian isikan file tersebut dengan script berikut ini :

language: php

php:
  - 7.0

before_script:
  - travis_retry composer self-update
  - travis_retry composer install --prefer-source --no-interaction
  - cp .env.example .env
  - php artisan key:generate

script:
  - vendor/bin/phpunit

Seperti ini.

Login Travis CI

Login pada Travis CI dengan akun Github

Kemudian buka website Travis CI, klik “Sign in with GitHub”.

Login Travis CI

Ikuti langkahnya hingga kita mendapatkan tampilan seperti gambar di bawah ini. Klik tombol “Sync account” untuk menampilkan daftar repository yang ada pada akun github kita.

Travis CI Sync Account

Aktifkan Repository Project

Klik “switch” disamping nama repository untuk mengaktifkan layanan Travis CI untuk project tersebut. Kemudian klik Nama Repository (dalam kasus saya: nafiesl/Laravel-TDD) untuk masuk ke halaman detail build repository tersebut.

Halaman Travis CI Project

Nah, sampai disini kita sudah selesai mengaktifkan layanan Travis CI untuk project kita. Travis akan “standby” untuk menunggu commit berikutnya agar dapat mulai build untuk pertama kalinya.

Buat commit untuk men-trigger build

Sekarang kita buat commit baru untuk men-trigger build dari Travis CI. Misalnya kita ingin menampilkan build badge seperti ini Build Status pada file README.md. Langkah kerjanya seperti ini:

  1. Klik badge build status pada halaman Travis CI project.

  2. Pilih branch master

  3. Pilih Markdown

  4. Copy script badge status build untuk kita paste ke file README.md

    Buat badge build

  5. Edit (atau buat) file README.md pada repo project di github, tambahkan script badge status build dari Travis CI tadi. Misal seperti ini.

# Laravel TDD Project

[![Build Status](https://travis-ci.org/nafiesl/Laravel-TDD.svg?branch=master)](https://travis-ci.org/nafiesl/Laravel-TDD)

## About
Source code laravel testing pada blog https://blog.nafies.id/tags/#testing.

File README.md langsung dibuat/edit pada github.

Buat badge build README.md

Maka seketika itu juga, kita melihat pada list commit dari repo project ini, layanan Travis CI langsung bekerja.

Travis CI Started

Kita dapat melihat proses kerjanya pada halaman Travis CI project.

Travis CI On Progress

Silakan tunggu hingga prosesnya selesai.

Travis CI Selesai

Travis CI Selesai

Oke, proses build dan testing nya sudah selesai. Jika kita kembali ke list commit repo tersebut, kita akan melihat tanda Centang Hijau yang menandakan bahwa proses build dan testing oleh travis CI untuk commit tersebut berjalan dengan baik. Seperti gambar di bawah ini.

Commit Travis CI Selesai

Selesai Setup

Sampai disini kita sudah berhasil melakukan setup layanan Travis CI untuk project opensource Testing Laravel kita. Sebagaimana kita bahas sebelumnya, Travis CI akan otomatis berjalan setiap kita melakukan commit baru dan pull-request dari contributor.

Travis CI untuk Paket Composer

Oh ya, proses build layanan Travis CI ini tidak hanya untuk sebuah project aplikasi, lho. Layanan ini juga kita bisa gunakan untuk build dan testing paket composer. Misal paket Simple CRUD Generator untuk Laravel. Paket ini dikembangkan untuk mempermudah dan mempercepat workflow TDD dalam membangun sebuah project dengan Laravel (untuk versi 5.3 s/d 5.5), karena selain menggenerate Controller, Model dan View-nya, paket ini juga menggenerate Feature Test dan beberapa Unit Test.

Travis CI dapat digunakan untuk menjalankan test yang digenerate oleh paket tadi. Temen-temen bisa lihat disini kita bisa mendefinisikan perintah php artisan juga pada file .travis.yml. Hasilnya:

Pengujuan SimpleCRUDGenerator pada laravel 5.3

Karena paket tersebut awalnya dibuat untuk Laravel 5.5, Travis CI juga digunakan untuk menguji paket tersebut di laravel versi sebelumnya dan beberapa versi PHP. Apakah testing yang digenerate oleh paket tersebut tersebut dapat berjalan dengan baik untuk Laravel 5.3 pada php 5.6? Dan juga berjalan pada Laravel 5.4 pada php 7.0? Travis CI sangat membantu untuk kebutuhan ini.

Sample projectnya bisa dilihat pada repo ini (lihat branch laravel5.3 dan branch laravel5.4).

Demikian teman-teman, mudah-mudahan bisa memberi inspirasi tentang cara Setup Travis CI untuk project open-source laravel di github. Terima kasih atas waktunya.