Travis CI

Travis CI adalah platform integrasi berkesinambungan yang di-host yang gratis untuk semua proyek sumber terbuka yang dihosting di Github. Dengan hanya file bernama .travis.yml yang berisi beberapa informasi tentang proyek, kita dapat memicu pembangunan otomatis dengan setiap perubahan pada basis kode kita di cabang utama, cabang lain atau bahkan permintaan tarik.

Sebelum kita mulai dengan bagaimana kita dapat mengintegrasikan Travis dengan proyek, Prapersyaratan berikut akan membantu:

  1. Git
  2. GitHub
  3. Basic NodeJS
  4. NPM
  5. GruntJS

Di jantung menggunakan Travis, terdapat konsep continuous integration (CI). Katakanlah kita sedang mengerjakan satu fitur dan setelah kita selesai melakukan pengkodean, kita biasanya akan membangun proyek untuk membuat file yang dapat dieksekusi serta file lain yang diperlukan untuk menjalankan aplikasi. Setelah pembangunan selesai, praktik yang baik termasuk menjalankan semua tes untuk memastikan semuanya lulus dan semuanya berfungsi seperti yang diharapkan.

Langkah terakhir adalah memastikan bahwa apa pun yang dikodekan benar-benar berfungsi bahkan setelah kita mengintegrasikannya ke dalam kode jalur utama. Pada titik ini kita membangun dan menguji lagi. Jika build terintegrasi berhasil, dapat mempertimbangkan bahwa fitur telah sepenuhnya diimplementasikan. Travis CI mengotomatiskan langkah yang tepat ini untuk memicu pembangunan dan pengujian pada setiap integrasi ke cabang master, cabang lain atau bahkan permintaan tarik, mempercepat waktu untuk mendeteksi bug integrasi potensial.

Travis CI mengotomatiskan langkah yang tepat ini untuk memicu pembangunan dan pengujian pada setiap integrasi ke cabang master, cabang lain atau bahkan permintaan tarik, mempercepat waktu untuk mendeteksi bug integrasi potensial.

Travis Interface

Ketika kita mendarat di beranda utama, kita juga dapat melihat “kesibukan” dari banyak proyek sumber terbuka melalui pembuatan otomatis. Mari kita mendekonstruksi antarmuka dan memahami berbagai bagian:

travis-interface
  1. Sidebar: Ini menunjukkan daftar proyek sumber terbuka publik di Github yang saat ini sedang melalui pembuatan otomatis. Setiap item memiliki nama proyek yang hyperlink, durasi build sejauh ini dan jumlah build berurutan.
  2. Build in progress [kuning]: Lingkaran kecil berwarna kuning di sebelah nama proyek menunjukkan bahwa build sedang dalam proses.
  3. Build failed [merah]: Lingkaran kecil berwarna merah di sebelah nama proyek menunjukkan bahwa build sudah selesai dan gagal.
  4. Build passed [hijau]: Lingkaran kecil berwarna hijau di sebelah nama proyek menunjukkan bahwa build sudah selesai dan telah berlalu.
  5. Project name and links: Judul ini dalam format nama username/repository dan terhubung dengan halaman pembuatan Travis CI. Simbol Octocat kecil di sebelahnya terhubung ke halaman Github dari repositori yang berisi kode sumbernya.
  6. Types of build: Build otomatis dapat dipicu dengan mengkomit kode ke cabang master, cabang lain atau bahkan permintaan pull. Dengan mengunjungi tab individual, kita dapat memperoleh informasi lebih lanjut tentang build.
  7. Build activity: Bagian ini akan mencakup informasi tentang masing-masing tugas yang sedang dibangun.

Langkah 1: Halo Dunia!

Sebelum mengintegrasikan Travis CI, kita akan membuat proyek “hello world” sederhana dan membuat beberapa tugas pembangunan. Travis mendukung berbagai bahasa pemrograman termasuk Python, Ruby, PHP dan JavaScript dengan NodeJS. Untuk keperluan demo, kita akan menggunakan NodeJS. Mari kita buat file hello.js yang sangat sederhana seperti yang didefinisikan di situs web utama NodeJS:

12345678var http = require('http'); http.createServer(function (req, res) {res.writeHead(200, {'Content-Type': 'text/plain'});res.end('Hello World\n') // missing semi-colon will fail the build}).listen(1337, '127.0.0.1'); console.log('Server running at http://127.0.0.1:1337/');

Perhatikan bahwa ada titik koma yang hilang sehingga di JSHint nanti, linter JavaScript akan dapat mendeteksi ini dan menimbulkan kesalahan. Kita akan membangun proyek menggunakan pelari tugas yang disebut GruntJS yang akan mencakup JSHint. Ini tentu saja ilustrasi, tetapi dalam proyek nyata, kita dapat melanjutkan dengan memasukkan berbagai tugas pengujian, penerbitan, linting dan mengisyaratkan.

Untuk menunjukkan berbagai paket yang diperlukan untuk GruntJS, JSHint dan lainnya, kita akan membuat file kedua bernama package.json. File ini pertama-tama akan berisi nama dan nomor versi aplikasi sederhana. Selanjutnya, kita akan mendefinisikan dependensi yang dibutuhkan dengan devDependencies yang akan mencakup paket-paket terkait GruntJS termasuk JSHint. Dengan scripts, kita akan memberi tahu Travis CI untuk mulai menjalankan test suite dan perintah grunt --verbose. Mari kita lihat isi lengkap file: package.json:

010203040506070809101112{"name": "node-travis","version": "0.1.0","devDependencies": {"grunt": "0.4.1","grunt-cli": "0.1.9","grunt-contrib-jshint": "0.6.0"},"scripts": {"test": "grunt --verbose"}}

Selanjutnya, mari kita siapkan Gruntfile.js yang akan mencakup semua tugas yang diperlukan untuk menjalankan build. Sederhananya, kita dapat menyertakan hanya satu tugas – JavaScript linting dengan JSHint.

010203040506070809101112module.exports = function(grunt) { grunt.initConfig({jshint: {all: ['Gruntfile.js', 'hello.js']}}); grunt.loadNpmTasks('grunt-contrib-jshint');grunt.registerTask('default', 'jshint'); };

Terakhir, kita akan menjalankan build yang hanya berisi satu tugas setelah mengunduh semua paket terkait dengan npm install:

12$ npm install$ grunt

Seperti yang diharapkan, build tidak akan lolos karena JSHint akan mendeteksi titik koma yang hilang. Tetapi jika kita menempatkan semi-colon kembali ke file hello.js dan menjalankan perintah grunt sekali lagi, kita akan melihat bahwa build akan lulus.

travis-fail-pass

Sekarang kita telah membuat proyek sederhana secara lokal, kita akan mendorong proyek ini ke akun Github dan mengintegrasikan Travis CI untuk memicu pembangunan secara otomatis.

Langkah 2: Halo Dunia Dengan Travis CI

Langkah pertama dalam mengintegrasikan Travis CI adalah membuat file bernama .travis.yml yang akan berisi informasi penting tentang lingkungan dan konfigurasi agar build dapat berjalan. Untuk kesederhanaan, kita hanya akan menyertakan lingkungan pemrograman dan versi. Dalam proyek sederhana, ini adalah NodeJS versi 0.10. Isi akhir file .travis.yml adalah sebagai berikut:

123language: node_jsnode_js:- "0.10"

Sekarang proyek kita akan terdiri dari file-file berikut bersama dengan README.md dan .gitignore sesuai kebutuhan:

12345678$ tree.|-- .travis.yml|-- Gruntfile.js|-- hello.js|-- .gitignore|-- README.md`-- package.json

Sekarang mari kita buat repositori git dan dorong ke repositori jarak jauh baru yang dihosting di Github:

1234git initgit commit -m "first commit"git remote add origin [email protected]:[username]/[repository].gitgit push -u origin master
travis-github

Selanjutnya, masuk ke Travis CI dan beri otorisasi Travis CI untuk mengakses akun Github Anda. Setelah itu, kunjungi halaman profil Anda untuk mengaktifkan hook untuk repositori Github untuk memicu build otomatis dengan Travis CI.

travis-profile

Sebagai langkah terakhir untuk memicu build pertama, kita perlu mendorong ke Github. Mari kita hapus titik koma di file hello.js untuk membuat build yang gagal dan kemudian mendorong ke Github. Ini akan memicu pembangunan otomatis di Travis CI. Mari kunjungi URL: https://travis-ci.org/[username[/[repo] untuk melihat bangunan pertama dalam proses!

123git add hello.jsgit commit -m "removed semi-colon"git push
travis-build-fail

Gagal membangun dalam contoh di atas adalah ilustrasi sederhana. Tetapi situasi ini mencerminkan sesuatu yang mungkin terjadi dalam proyek nyata – kita mencoba mengintegrasikan kode kami dan pembuatan otomatis gagal. Secara default, setelah setiap build selesai, Travis CI akan mengirim email ke pembuat komit dan pemilik repositori. Dengan cara ini, pengembang yang mendorong kode segera diperingatkan dan kemudian dapat memperbaiki kesalahan integrasi. Dalam kasus ini, mari sisipkan semi-colon yang hilang dan dorong ke Github sekali lagi.

123git add hello.jsgit commit -m "added semi-colon to pass the build"git push
travis-build-pass

Hore! Pembuatan otomatis telah melewati waktu ini. Kode kita terintegrasi melewati semua tes yang diperlukan. Sekarang setiap kali kita mencoba untuk mengintegrasikan perubahan apakah itu ke cabang master atau bahkan cabang lain, Travis CI akan memicu pembangunan otomatis.

Pull Requests

Setelah mengintegrasikan Travis CI ke dalam proyek, pull request juga akan memicu pembangunan otomatis. Ini sangat berguna bagi pemilik repositori atau pengembang yang bertugas menggabungkan basis kode. Mari kita lihat bagaimana Travis CI akan memberi tahu apakah permintaan tarik itu baik untuk digabung atau tidak.

Pertama, menggunakan akun Github lain, mari kita garpu repositori asli dan tarik permintaan dengan langkah-langkah berikut:

  1. Fork repositori asli
  2. Buat cabang baru di repositori bercabang dua
  3. Buat perubahan baru dan lakukan
  4. Pastikan cabang fitur dipilih
  5. Compare dan pull request

Gabungkan Dengan Hati-Hati

Untuk mensimulasikan pembangunan gagal dalam permintaan tarik, kita akan sekali lagi menghapus titik koma di file hello.js, komit dan dorong perubahan dan akhirnya pull request.

travis-pull

Atas setiap pull request, Travis CI akan secara otomatis memicu pembuatan. Kali ini, kita juga dapat mengunjungi tab “Pull Request” untuk melihat riwayat bangunan saat ini atau yang telah dipicu karena pull request.

travis-pull-fail

Setelah Travis CI menyelesaikan pembangunan, jika mengunjungi halaman pull request dari repositori asli, kita akan melihat bahwa Travis CI telah menambahkan beberapa perubahan antarmuka pengguna untuk mengingatkan kita bahwa pembangunan telah gagal.

travis-pull-fail-advise

Baik untuk Digabung

Status pembangunan yang gagal ini akan segera diberitahukan kepada pemilik repositori serta pengembang yang melakukan pull request. Dan sekarang, tergantung pada alasan pembangunan gagal, itu dapat diperbaiki dengan komit lain di cabang yang sama. Karenanya, mari kita tambahkan pada titik koma dan tarik permintaan untuk yang terakhir kalinya. Github akan secara otomatis memperbarui halaman pull request.

travis-pull-pass

Dan akhirnya, ketika kita kembali ke halaman pull request repositori asli, kali ini kita akan melihat sinyal “hijau” untuk terus maju dan melakukan penggabungan saat build kita lewat!

travis-pull-pass-advise

Bangun Konfigurasi

File .travis.yml menentukan konfigurasi build. Contoh kami hanya menyertakan jenis dan versi bahasa, tetapi kita dapat menambahkan yang lebih bermanfaat sebagai berikut:

  1. Khusus bahasa. Ini adalah contoh untuk Ruby123language: rubyrvm:- 1.9.3
  2. Commands atau scripts untuk dijalankan sebelum atau setelah setiap build. Ini adalah contoh perintah sebelum menjalankan skrip:12before_script:- git config --global user.name [myname]
  3. Pemberitahuan dalam hal email atau peringatan obrolan dikirimkan sebagaimana dinyatakan oleh konfigurasi build. Ini adalah contoh mematikan email dan mengirimkannya ke IRC:123notifications:email: falseirc: "chat.freenode.net#travis"

Memvalidasi .travis.yml

Seperti yang Anda lihat, file .travis.yml menjadi sangat penting dalam memicu pembuatan otomatis. Jika file ini tidak valid, Travis CI tidak akan memicu build atas setiap push ke Github. Karenanya, memastikan bahwa kita memiliki file yang valid yang akan ditafsirkan Travis CI dengan benar. Untuk ini, kita akan menginstal gem bernama travis-lint dan menjalankan file .travis.yml

12$ gem install travis-lint$ travis-lint .travis.yml
travis-lint

Gambar Status Bangun

Sangat membantu untuk menyertakan sedikit gambar untuk menunjukkan status pembangunan saat ini. Gambar itu sendiri dapat diakses dari pola URL http://travis-ci.org/[username[/[repository-name[.png. Cara lain untuk mengakses gambar yang tertanam dengan cepat dalam berbagai format adalah di halaman proyek Travis CI itu sendiri. Misalnya, kita dapat menyalin format Penurunan harga dan menanamkan dalam file README.md proyek.

travis-build

Cara keren lainnya untuk melacak status pembangunan berbagai proyek sumber terbuka sambil berselancar di sekitar Github adalah memasang salah satu ekstensi peramban. Ini akan membuat gambar status bangunan mencolok tepat di sebelah masing-masing nama proyek.

Cara yang fantastis untuk mempelajari apa dan bagaimana memasukkan berbagai konfigurasi build dalam file .travis.yml adalah dengan menelusuri banyak repositori open source populer yang sudah mengintegrasikan Travis CI. Berikut ini beberapa di antaranya:

  1. Ruby on Rails (Ruby)
  2. BackboneJS (JavaScript)
  3. Composer (PHP)
  4. Flask (Python)

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *