Membuat Docker Image dengan Gitlab CI/CD
GitLab
merupakan platform DevOps
yang cukup lengkap, semua proses pengembangan hingga deployment dapat diotomasi. Dengan otomasi ini, pengembangan dan perbaikan perangkat lunak dapat dilakukan dengan cepat. Apabila ada bug dari program baru, mudah untuk melakukan rollback ke versi sebelumnya.
Skenario DevOps dengan GitLab dapat diatur sendiri, contohnya akan kami paparkan dalam tulisan ini.
Skenario: Ketika pengembang mebuat sebuah tag baru, GitLab membuat job tertentu misalnya build
. Kemudian Gitlab Runner akan mengerjakan job tersebut dengan membuild Docker Image lalu melakukan push ke Docker Registry.
Prasyarat
- Docker Registry. Docker registry adalah sebuah repositori yang menyimpan Docker Image yang nantinya akan diunduh dan dijalankan oleh server produksi. GitLab dapat digunakan sebagai docker registry, cara mengaktifkan dapat dilihat di sini.
- Gitlab Runner. Gitlab Runner adalah perangkat lunak open source yang digunakan untuk menjalankan job dan mengirim hasilnya ke Gitlab. Dokumentasi Gitlab Runner dapat dilihat di sini.
Langkah-langkah
Menjalankan GitLab Runner Register
Penulis menggunakan Docker sebagai eksekutor dengan menjalankan perintah seperti berikut:
sudo gitlab-runner register -n \
--url https://gitlab.ums.ac.id/ \
--registration-token xxxxxxxxxxxxxxxxxxx \
--executor docker \
--description "UMS Runner" \
--docker-image "docker:19.03.12" \
--docker-volumes /var/run/docker.sock:/var/run/docker.sock
Keterangan:
- url adalah alamat Gitlab server
- registration-token diperoleh dari menu: Project -> Settings -> Runners
- agar bisa menjalankan docker executor, harus terpasang docker pada mesin yang menjalankan gitlab runner, dan user gitlab runner tergabung dalam group docker.
Membuat Trigger
Trigger di sini yang akan mengotomasi membuat job ketika aksi tertentu. Pada contoh ini job akan dibuat ketika ada tag baru. Untuk membuat trigger, cukup dengan membuat file .gitlab-ci.yml
di root direktori project kita. Contoh:
image: docker:19.03.12
stages:
- test
- build
before_script:
- echo "MEMULAI STAGE..."
test:
stage: test
script:
- docker info
only:
- tags
build:
stage: build
script:
- docker build -t gitlab.ums.ac.id:5050/suyadi/dirman:$CI_COMMIT_TAG .
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
- docker push gitlab.ums.ac.id:5050/suyadi/dirman:$CI_COMMIT_TAG
only:
- tags
Setiap ada tag baru, akan dibuat job yang akan membuild dan push Image ke registry.
Bersambung…