Apa itu Continuous Integration (CI)?

Integrasi Berkelanjutan adalah langkah logis berikutnya setelah memiliki sistem kontrol versi seperti Git dan sistem kontrol versi jarak jauh seperti GitLab atau GitHub untuk upaya kolaboratif. Masalah yang dihadapi proyek besar adalah ini — Saat permintaan tarik baru datang, mereka perlu diuji dan kemudian diintegrasikan ke cabang master dan upaya ini dapat dengan mudah memakan waktu mulai dari beberapa jam hingga beberapa minggu tergantung pada ukuran proyek, lokasi anggota tim, dll.

Seperti masalah semacam itu, langkah logisnya adalah mengotomatiskan seluruh omong kosong pengujian. Kami melakukannya dengan menyiapkan pemicu sehingga setiap kali komit yang lebih baru digabungkan ke dalam cabang, agen (GitLab Runner, misalnya) secara otomatis membangun lingkungan dan kode, menjalankan semua pengujian unit dan pengujian integrasi terhadapnya. Jika ada error yang ditemui maka itu memberikan peringatan dan laporan kerusakan jika tidak, Anda mendapatkan sinyal hijau yang mengatakan semuanya berfungsi.

Tentu saja, dengan logika ekstremnya, Anda juga dapat mengotomatiskan penerapan, menyiapkan pengujian A/B otomatis, dan sepenuhnya menghapus campur tangan manusia dari proses tersebut. Itu disebut sebagai Continuous Delivery dan/atau Continuous Deployment tergantung pada tingkat otomatisasi. Tapi kami hanya akan fokus pada Integrasi Berkelanjutan dalam tutorial ini.

Prasyarat

Kami akan fokus pada pengaturan aliran CI sederhana dalam tutorial menggunakan instance GitLab melalui HTTPS yang telah kami bahas di posting sebelumnya.

Selain itu, kami juga menganggap Anda telah menyiapkan akun user di instance GitLab ini dan telah a repository(dikloning pada engine lokal Anda) dikelola di bawah nama user Anda. Repositori inilah yang akan kita gunakan untuk mendemonstrasikan alur kerja CI. Dalam tutorial, namanya akan menjadi proyek saya.

Untuk daftar semuanya:

  1. Contoh GitLab
  2. Repositori kosong, disebut proyek saya
  3. Klon lokal dari repositori ini
  4. Instance Git lokal Anda dikonfigurasi untuk mendorong perubahan ke jarak jauh.

Membuat aplikasi Sederhana

Di repositori ini, mari kita buat aplikasi Node.js sederhana. Aplikasi ini adalah server Express.js sederhana yang dimaksudkan untuk digunakan dalam wadah Docker. Server memberikan muatan HTTP yang mengatakan “Halo Dunia” di browser Anda.

Di root repositori lokal Anda, buat file app.js dan tambahkan baris berikut:

'use strict';

const express = require('express');

// Constants
const PORT = 8080;
const HOST = '0.0.0.0';

// App
const app = express();
app.get('/', (req, res) => {
res.send('Hello worldn');
});

app.listen(PORT, HOST);
console.log(`Running on http://${HOST}:${PORT}`);

Kemudian buat file lain package.json dan tambahkan yang berikut ini ke dalamnya:

{
"name": "docker_web_app",
"version": "1.0.0",
"description": "Node.js on Docker",
"author": "John Doe",
"main": "server.js",
"scripts": {
"start": "node server.js"
},
"dependencies": {
"express": "^4.16.1"
}
}

Terakhir, buat Dockerfile dan tambahkan konten berikut ke dalamnya:

FROM node:8

# Create app directory
WORKDIR /usr/src/app

# Install app dependencies
# A wildcard is used to ensure both package.json AND package-lock.json are copied
COPY package*.json./

RUN npm install
# If you are building your code for production
# RUN npm install --only=production

# Bundle app source
COPY..

EXPOSE 8080
CMD [ "node", "app"]

Proses build untuk aplikasi ini akan melibatkan pembuatan wadah node dan menginstal dependensi (seperti modul Express.js). Proses ini harus terjadi tanpa error. Demi kesederhanaan, kami tidak akan membahas pengujian apa pun dalam tutorial ini.

Saluran GitLab Runner

Sekarang kita akan menambahkan file lain ke repositori kita yang akan disebut .gitlab-ci.yml . File ini akan berisi instruksi untuk membangun proyek kita. Sekarang, setiap kali kami mendorong komit ke instance GitLab kami, GitLab akan memanggil Runner untuk membangun dan menguji proyek.

Kami menetapkan pipa ini berbagai jobs yang dapat menjalankan semua berjalan secara independen satu sama lain, membuat proses build lebih fleksibel. Untuk repo di atas, ini adalah file.gitlab-ci.yml buat file ini di root repositori Anda:

image: node:latest

stages:
- build

cache:
paths:
- node_modules/

install_dependencies:
stage: build
script:
- npm install

Kami hanya memiliki satu tahap build dan baru saja menginstal npm sebagai skrip. Ini adalah perintah yang harus Anda jalankan secara manual setiap kali ada perubahan pada proyek Anda. Pelari GitLab akan melakukan ini untuk Anda. Runner dapat diinstal di cluster Kubernetes, VPS di cloud atau di workstation lokal Anda dan jika aktif, Runner akan menunggu instruksi dari server GitLab untuk menjalankan build.

Kami akan menginstal dan mengonfigurasi Runner secara lokal untuk mengotomatiskannya.

Mendapatkan Token Pelari

Buka repositori Anda di GitLab, dan kunjungi pengaturan CD/CI-nya. ituSettings → CD/CI di dalam repositori pengujian Anda.

Biarkan pengaturan Auto DevOps ke default dan klik EXPAND untuk memperluas pengaturan Pipa Umum dan Anda akan diperlihatkan Token Pelari. Copy nilainya dan, tentu saja, jaga kerahasiaannya jika Anda menghargai proyek Anda.

Dengan menggunakan token ini, GitLab Runner lokal Anda yang dapat dieksekusi akan dapat mendaftar dengan aman dengan instance GitLab Anda.

Related Posts