Rekomendasi musik untuk membaca artikel ini: Positive vibes 🍉Best tiktok songs for a positive day |
Pernahkah kamu penasaran bagaimana aplikasi yang kita gunakan sehari-hari bisa terus diperbarui dengan fitur-fitur baru tanpa adanya gangguan? Atau Ingin menjadi developer yang lebih produktif dan efisien? Investasikan waktu kamu untuk mempelajari CI/CD. Dengan mengotomatiskan proses build, test, dan deploy, kamu bisa fokus pada hal yang lebih penting: mengembangkan fitur-fitur baru yang inovatif. Artikel ini akan menunjukkan bagaimana CI/CD juga bisa menjadi game-changer dalam karir kamu sebagai developer.
Kita akan mempelajari GitLab dan Jenkins untuk CI/CD di localhost menggunakan Docker, terutama untuk pengembangan Java. Docker dapat membantu Anda mengatur lingkungan yang terisolasi dan mudah dikonfigurasi tanpa perlu menginstal banyak perangkat lunak secara manual di sistem utama Anda.
Dengan Docker, Kita bisa:
- Menjalankan GitLab sebagai server repository Git dan CI/CD pipeline.
- Menjalankan Jenkins sebagai server CI/CD yang dapat diintegrasikan dengan GitLab atau digunakan secara mandiri.
- Menyusun pipeline CI/CD untuk Java development dengan build, test, dan deploy menggunakan alat seperti Maven.
Berikut adalah langkah-langkah dan daftar persiapan yang perlu Anda lakukan:
Persiapan Software Pendukung di Laptop
Persiapan-1: Docker dan Docker ComposeDocker Compose juga sangat berguna untuk mengatur beberapa kontainer sekaligus agar Kita dapat mengatur dan menjalankan GitLab, Jenkins, dan database (jika diperlukan) dalam satu konfigurasi. Hal ini memudahkan pengelolaan dan pengaturan jaringan antar layanan.
Pada artikel ini kita tidak akan membahas docker lebih jauh karena saya berasumsi bahwa anda tertarik membaca artikel ini karena tertarik dengan CI/CD dan sudah mahir dengan tools Docker, Docker Compose, Docker CLI, Docker Desktop.
Persiapan-2: Docker Desktop Untuk Docker GUI
Docker Desktop menyediakan GUI (Graphical User Interface) yang mudah digunakan yang memungkinkan Anda mengelola kontainer, aplikasi, dan gambar langsung dari komputer Anda.
Docker Desktop mengurangi waktu yang dihabiskan untuk pengaturan yang rumit sehingga Anda dapat fokus pada penulisan kode. Docker Desktop menangani pemetaan port, masalah sistem file, dan pengaturan default lainnya, dan diperbarui secara berkala dengan perbaikan bug dan pembaruan keamanan.
Persiapan-3: IntelliJ IDEAGunakan IntelliJ IDEA yang sudah terkonfigurasi untuk pengembangan Java.
Langkah-langkah dalam Mulai Belajar
# Dockerfile-build-server
# Image dasar yang mendukung apt-get
FROM openjdk:17-jdk-slim
# Install Git
RUN apt-get update && apt-get install -y git
# Install Maven
RUN apt-get install -y maven
# Verify installations
RUN git --version && mvn --version
Berikut docker-compose.yml
untuk mounting project:
version: '3.7'
networks:
cicd-network:
driver: bridge
services:
gitlab:
image: gitlab/gitlab-ce:latest
container_name: "gitlab.local"
restart: always
hostname: gitlab
networks:
- cicd-network
ports:
- "8581:80"
- "4433:443"
- "2222:22"
volumes:
- gitlab-config:/etc/gitlab
- gitlab-logs:/var/log/gitlab
- gitlab-data:/var/opt/gitlab
- /host_mnt/d/analisa/YBoilerplate:/home/gitlab/YBoilerplate
# deploy:
# resources:
# limits:
# cpus: '1.0'
# memory: 1024M
healthcheck:
test: ["CMD-SHELL", "curl -f http://localhost/ || exit 1"]
interval: 1m30s
timeout: 10s
retries: 3
jenkins:
image: jenkins/jenkins:lts
container_name: "jenkins.local"
restart: always
hostname: jenkins
networks:
- cicd-network
ports:
- "8582:8080"
- "50000:50000"
volumes:
- jenkins-home:/var/jenkins_home
- /host_mnt/d/analisa/YBoilerplate:/var/jenkins_home/workspace/YBoilerplate
environment:
- JAVA_OPTS=-Djenkins.install.runSetupWizard=false
# deploy:
# resources:
# limits:
# cpus: '1.0'
# memory: 3000M
healthcheck:
test: ["CMD-SHELL", "curl -f http://localhost:8080/login || exit 1"]
interval: 1m30s
timeout: 10s
retries: 3
build-server:
image: build-server:latest
container_name: "build-server.local"
hostname: build-server
networks:
- cicd-network
volumes:
- /host_mnt/d/analisa/YBoilerplate:/home/build/YBoilerplate
working_dir: /home/build/YBoilerplate
command: /bin/bash -c "sleep infinity"
ports:
- "8580:8080"
build:
context: .
dockerfile: Dockerfile-build-server
# deploy:
# resources:
# limits:
# cpus: '1.0'
# memory: 1024M
healthcheck:
test: ["CMD-SHELL", "ls /home/build/YBoilerplate || exit 1"]
interval: 1m30s
timeout: 10s
retries: 3
volumes:
gitlab-config:
gitlab-logs:
gitlab-data:
jenkins-home:
Penjelasan
- Mount Path: Mounting dilakukan dengan prefix
/host_mnt/
karena Windows menggunakan jalur seperti itu dalam WSL2/Docker Desktop untuk mengakses drive host. - Project: Direktori
D:\analisa\YBoilerplate
di laptop host di-mount ke masing-masing container agar dapat diakses oleh GitLab, Jenkins, dan build server.
Dengan konfigurasi ini, Jenkins dan build server di container Docker dapat mengakses project Spring Boot Anda untuk melakukan build dan menjalankan pipeline CI/CD.
Langkat-3: Cek file docker-compose.yml
docker-compose config |
Docker containers yang diperlukan berjalan dilihat dari IntelliJ IDEA. |
Docker containers yang diperlukan berjalan dilihat dari Docker Desktop. |
Hebat! Semua container Anda sekarang berjalan dengan baik. Ini berarti build-server
, gitlab
, dan jenkins
telah berhasil dijalankan menggunakan docker-compose
.
Sekarang kita sudah memiliki 3 containers yang bisa ing berkomunikasi.
- gitlab.local
- jenkins.local
- build-server.local
Langkah Selanjutnya
Langkah-5: Verifikasi Koneksi Antar-Container
Pastikan Jenkins dan GitLab dapat berkomunikasi satu sama lain di dalam network cicd-network
. Anda bisa memeriksa ini dengan menjalankan perintah docker network inspect cicd-network
untuk melihat apakah semua container terhubung ke network tersebut.
docker network ls lalu docker network inspect ci_di_cicd-network Langkah-5.1: Install PING |
apt-get update -y && apt-get upgrade -y && apt-get install iputils-ping -y && apt-get install net-tools -y |
Dari dalam build server ping ke alamat jenkins dan gitlab. |
Langkah-6: Konfigurasi Awal Jenkins
http://localhost:8582
).Signup Jenkins user di http://localhost:8582/signup |
Pada http://localhost:8582/configureSecurity/ jadikan user dapat registrasi dan login |
Register user admin di alamat http://localhost:8582/signup |
Login user Jenkins di http://localhost:8582/login admin/password |
Langkah-7: Konfigurasi GitLab
http://localhost:8582
) lalu ganti passwordnya dari CLI.Gitlab masih loading |
Ganti Password Root via Docker Desktop |
Pasword baru Kucing@88 siap di pakai login oleh root |
Dashboard Gitlab |
Git Repository
Repository tempat script Docker di atas ini bisa anda temukan di https://github.com/yoesoff/CI_DI.git (master).
To be Continue....
- Buat repository
- Setup Jenkins untuk CI/CD di local dengan pipeline ke local Gitlab.
Comments
Post a Comment