ADVERTISEMENT

Tutorial ini merupakan catatan belajar saya dalam menggunakan GitLab CI/CD dan Docker.

Intinya, dalam tutorial ini saya membuat satu projek atau repositori di GitLab. Repositori tersebut saya gunakan untuk menyimpan source code .html yang saya buat.

Setiap terjadi perubahan di branch master repositori tersebut, maka source code tersebut akan di-deploy secara otomatis ke Docker container dengan menggunakan bantuan GitLab CI/CD dan GitLab Runner.

Kebutuhan

Beberapa kebutuhan yang perlu anda siapkan untuk mengeksekusi catatan belajar saya ini adalah sebagai berikut:

  1. memiliki akun GitLab,
  2. membuat 1 VM dengan sistem operasi Ubuntu, dan
  3. di komputer yang digunakan sudah dipasang git.

Peringatan: Dalam membuat catatan belajar menggunakan GitLab CI/CD dan Docker ini, saya memakai sistem operasi Ubuntu 18.04.

Eksekusi

A. Buat Projek di GitLab

Buat projek di gitlab.com dengan nama projek misalnya app.

Kemudian lanjutkan dengan mengklonakan projek yang baru saja anda buat tersebut.

git clone https://gitlab.com/username/app.git

Peringatan: sesuaikan bagian username dengan nama pengguna akun GitLab anda dan bagian app.git dengan nama projek yang anda buat.

B. Buat Berkas Dockerfile, Docker Compose, HTML, dan GitLab CI.

Masuk ke direktori projek app.

cd app

1. Buat Berkas Dockerfile

vi Dockerfile
1
2
FROM httpd:latest
ADD ./htdocs /usr/local/apache2/htdocs/

2. Buat Berkas Docker Compose

vi docker-compose.yml
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
version: '2'
services:
  app:
    container_name: app
    build:
      context: .
      dockerfile: Dockerfile
    image: app:1
    network_mode: bridge
    restart: always
    ports:
      - "8070:80"

3. Buat Berkas HTML

mkdir htdocs
vi htdocs/index.html
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
<html>
  <head>
    <title>Tes 1 ... 2 ... 3</title>
  </head>
  
  <body>
    <p align="center">
      <h1>Tes 1 ... 2 ... 3</h1>
    </p>
  </body>
</html>

4. Buat Berkas GitLab CI

vi .gitlab-ci.yml
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
stages:
- deploy

docker:
  stage: deploy
  script:
    - docker-compose down --rmi all
    - docker-compose up -d --build
  only:
    - master
  tags:
    - app

Setelah 4 berkas di atas anda buat, lanjutkan dengan menyimpan berkas-berkas tersebut ke repositori GitLab.

git add .
git commit -m "Initial commit"
git push
 Repositori Projek app

Repositori Projek app

C. Buat Token GitLab Runner

Gunakan browser kesayangan anda untuk mengakses projek di GitLab yang anda buat tadi: gitlab.com/username/app.

Masuk ke menu Setting > CI / CD > Runners > Setup a specific Runner manually.

Catat token yang ada dapatkan dari proses di atas.

D. Instalasi Docker Engine, Docker Compose, dan GitLab Runner.

Instalasi tools yang saya sebutkan di atas tersebut dilakukan di VM Ubuntu. Eksekusi perintah-perintah di bawah ini di terminal Ubuntu.

1. Memasang Docker

Di bawah ini adalah step by step instalasi Docker di Ubuntu.

sudo su
apt-get update
apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -
add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"
apt-get update
apt-get install docker-ce docker-ce-cli containerd.io
docker -v
docker run hello-world

2. Memasang Docker Compose

Di bawah ini adalah step by step instalasi Docker Compose.

sudo su
curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose -v

3. Memasang GitLab Runner

Di bawah ini adalah step by step instalasi GitLab Runner.

sudo su
wget -O /usr/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64
chmod +x /usr/bin/gitlab-runner
useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash
gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner

Lanjutkan dengan melakukan regitrasi GitLab Runner.

Peringatan: ganti REGISTRATION_TOKEN dengan token yang sudah anda dapatkan tadi.

gitlab-runner register -n \
  --url https://gitlab.com/ \
  --registration-token REGISTRATION_TOKEN \
  --executor shell \
  --description "app" \
  --tag-list "app"
usermod -aG docker gitlab-runner
sudo -u gitlab-runner -H docker info
cat /etc/gitlab-runner/config.toml
gitlab-runner start
gitlab-runner list
gitlab-runner status
gitlab-runner verify

Gunakan browser dan akses alamat gitlab.com/username/app.

Masuk ke menu Setting > CI / CD > Runners > Available specific runners. Pastikan status GitLab Runner yang baru saja dibuat dalam keadaan running.

 GitLab Runner

GitLab Runner

E. Buat Pipeline

Gunakan browser dan akses alamat gitlab.com/username/app/pipelines. Akses menu CI/CD > Pipeline > Run Pipeline.

Pada opsi Run for branch name or tag pilih branch master. Lanjutkan dengan mengklik Run Pipeline.

Tunggu sampai proses deployment selesai dan status menjadi passed.

 Pipeline

Pipeline

F. Buat Berkas HTML (lagi)

Eksekusi perintah di bawah ini di dalam direktori project app.

vi htdocs/ok.html
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
<html>
  <head>
    <title>Tes lagi 1 ... 2 ... 3</title>
  </head>
  
  <body>
    <p align="center">
      <h1>Tes lagi 1 ... 2 ... 3</h1>
    </p>
  </body>
</html>

Simpan berkas tersebut ke repositori GitLab.

git add .
git commit -m "second commit"
git push

Gunakan browser dan akses alamat gitlab.com/username/app/-/pipelines.

Bila proses di atas sudah anda kerjakan dengan benar, maka anda akan melihat pipeline yang berjalan secara otomatis karena ada event push ke branch master di repositori projek app.

G. Melihat Hasil Deployment

Eksekusi perintah-perintah di bawah ini di VM Ubuntu.

sudo su
docker ps
curl -i http://localhost:8070
curl -i http://localhost:8070/ok.html

Selesai dan semoga bermanfaat.

Referensi:

ADVERTISEMENT