Jenkins: https://www.jenkins.io/
BlueOcean: https://www.jenkins.io/projects/blueocean/ (tùy chọn)
Docker: https://www.docker.com/
Ubuntu: https://ubuntu.com/
Giới thiệu khái quát
Jenkins là gì?
Jenkins là một máy chủ tự động hóa mã nguồn mở viết bằng Java được sử dụng để tự động hóa tất cả
các loại nhiệm vụ liên quan đến xây dựng, thử nghiệm và triển khai phần mềm. Jenkins có thể được
cài đặt thông qua các gói phần mềm, Docker hoặc thậm chí chạy độc lập bởi bất kỳ máy nào có cài đặt
Java Runtime Environment (JRE).
Blue Ocean là gì?
Blue Ocean là gói giao diện người dùng dành cho Jenkins dựa trên thiết kế hiện đại, có thể cá nhân hóa
cho phép người dùng tạo, trực quan hóa và chẩn đoán sự cố dễ dàng hơn so với giao diện mặc định.
Docker là gì?
Docker là một dự án mã nguồn mở giúp tự động triển khai các ứng dụng Linux và Windows vào trong các
container ảo hóa. Docker cung cấp một lớp trừu tượng và tự động ảo hóa dựa trên Linux. Docker sử dụng
những tài nguyên cô lập của Linux như cgroups, kernel, quản lý tệp để cho phép các container chạy độc lập
bên trong một thực thể Linux
Ubuntu là gì?
Ubuntu là một hệ điều hành máy tính dựa trên Debian GNU/Linux, một bản phân phối Linux thông dụng.
Tên của nó bắt nguồn từ "ubuntu" trong tiếng Zulu, có nghĩa là "tình người", mô tả triết lý ubuntu:
"Tôi được là chính mình nhờ có những người xung quanh," một khía cạnh tích cực của cộng đồng.
Mục đích của Ubuntu bao gồm việc cung cấp một hệ điều hành ổn định, cập nhật cho người dùng thường,
và tập trung vào sự tiện dụng và dễ dàng cài đặt. Ubuntu đã được đánh xếp hạng là bản phân phối Linux
thông dụng nhất cho máy tính để bàn, chiếm khoảng 30% số bản Linux được cài đặt trên máy tính để bàn
năm 2007.
Điều kiện cần có trước khi bắt đầu
Một server chạy hệ điều hành Linux (ở đây mình sử dụng Ubuntu), Bạn có thể chọn các hệ điều hành khác như CentOS, Debian, Fedora, Red Hat
Phần cứng tối thiểu: 1G+ RAM, 2CPU, 50G+ HDD
Account có quyền sudo
Các bước thực hiện như sau
1. Cài đặt Java JDK
Chạy lệnh bên dưới
$ sudo apt update
$ sudo apt install openjdk-8-jdk
Sau khi máy chủ hoàn thành quá trình cài đặt Java, chạy lệnh sau để kiểm tra
$ java -version
openjdk version "1.8.0_275"
OpenJDK Runtime Environment (build 1.8.0_275-8u275-b01-0ubuntu1~20.04-b01)
OpenJDK 64-Bit Server VM (build 25.275-b01, mixed mode)
2. Cài đặt Jenkins
$ wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | \
sudo apt-key add -
$ sudo sh -c 'echo deb https://pkg.jenkins.io/debian-stable binary/ > \
/etc/apt/sources.list.d/jenkins.list'
$ sudo apt-get update
$ sudo apt-get install jenkins
Khởi động Jenkins
$ sudo systemctl start jenkins
Có thể kiểm tra xem quá trình khởi động Jenkins có vấn đề gì hay không bằng cách
$ sudo systemctl status jenkins
● jenkins.service - LSB: Start Jenkins at boot time
Loaded: loaded (/etc/init.d/jenkins; generated)
Active: active (exited) since Wed 2020-11-18 10:43:16 +07; 7h ago
Docs: man:systemd-sysv-generator(8)
Process: 15624 ExecStart=/etc/init.d/jenkins start ...
Tiếp theo, chúng ta chuyển qua bước thiết lập trước khi bắt đầu sử dụng
2.1 Unlock Jenkins
Dùng trình duyệt mở url sau http://localhost:808 hoặc http://[địa chỉ ip của server]:8080
Chạy lệnh sau để lấy Administrator password
$ sudo cat /var/lib/jenkins/secrets/initialAdminPassword
2.2 Cài đặt plugins
Chọn 1 trong 2:
Install suggested plugins: cài đặt các plugins phổ biến
Select plugins to install: lựa chọn này dành cho bạn nào đã có kinh nghiệm với Jenkins
Số 1 là lựa chọn mặc định, sau này bạn có thể cài thêm plugins tùy thích nên cũng không cần suy nghĩ nhiều.
2.3 Tạo tài khoản admin
2.4 Hoàn tất
3. Cài đặt docker
Chạy các lệnh sau để cài đặt docker
$ sudo apt-get update && apt-get install -y \
apt-transport-https \
ca-certificates \
curl \
gnupg2 \
software-properties-common
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
sudo apt-key add -
$ sudo apt-key fingerprint 0EBFCD88
$ sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
$ sudo apt-get update && apt-get install -y docker-ce docker-ce-cli
Nếu bạn muốn chạy lệnh docker với tài khoản non-root, chạy lệnh sau
$ sudo usermod -aG docker $USER
3.1 Đưa tài khoản jenkins vào group docker
$ sudo usermod -a -G docker jenkins
$ sudo systemctl restart jenkins
Bước này giúp đảm bảo Jenkins thực hiện được công việc build image với docker, ngược lại bạn sẽ
gặp lỗi Permission denied trong quá trình chạy Job.
4. Tạo credential
Để publish được Docker image lên Docker Hub, thì Jenkins cần có Credential.
Đi tới Manage Jenkins / Manage Credentials / Jenkins / Global Credentials / Add Credentials
Một số thông tin quan trọng cần chú ý:
Kind: Username with password
Username: Tài khoản docker hub
Password: Mật khẩu docker hub
ID: Định danh của credential, chúng ta sẽ cần tới ở các bước sau
5.
5. Cài các plugin cần cho nhiệm vụ build app và build docker image
Ở đây, do chúng ta cần build và deploy cho application chạy NodeJS và Docker, cho nên cần các plugin sau:
Docker Pipeline
NodeJS Plugin
Đi tới Manage Jenkins / Manage Plugins, tìm plugin cần bằng cách nhập vào search: ví dụ “NodeJS”,
tick vào checkbox, chọn Install without restart
5.1 Cấu hình cho NodeJS plugin
Đi tới Manage Jenkins / Global Tool Configuration
Add NodeJS
Name: chúng ta có thể cần nhiều phiên bản NodeJS cho các dự án khác nhau, thông tin này còn được sử dụng trong Jenkinfile sau này.
Chọn Install automatically.
Version: chọn phiên bản mà chúng ta cần
Save.
6. Thử nghiệm
Từ panel bên trái, click New Item
(1) Chọn tên cho Job mới >> (2) chọn kiểu Pipeline >> (3) sau đó click OK
(1) Mở tab Pipeline (2) Definition: Pipeline script from SCM (3) SCM: chọn Git (hoặc option nào phù hợp với bạn) (4) Repository URL: url dẫn tới repository (5) Credentials: nếu Git cần xác thực thì bạn có thể thêm thông tin tại đây (6) Branches to build: chọn nhánh cần pull source từ repository (7) Script Path: Jenkinsfile (8) Save
Bấm BuildNow để chạy Job, nếu mọi việc suôn sẻ, kết quả đạt được như sau
6.1 Jenkinsfile
Chúng ta không đi sâu vào nội dung Jenkinsfile trong bài này, mình chỉ giải thích sơ một số nội dung
trong Jenkinsfile liên quan đến phần cài đặt ở các bước bên trên.
Ban có thể tham khảo tại đây https://bitbucket.org/iamhadoan/my-first-pipeline/src/master/Jenkinsfile
registry: domain của registry, cụ thể trong bài này là từ docker hub
imageName: tên của repository trên docker hub
registryCredential: ID của credentials được tạo ra ở bước 4
nodeVersion: tên của NodeJS được tạo ra ở bước 5.1
repository: url source code
environment {
registry = 'registry.hub.docker.com'
imageName = 'doanmanhsonha/build-app-with-jenkins-docker'
registryCredential = 'dockerhub'
dockerImage = ''
nodeVersion = 'nodejs-10-19-0'
repository = 'https://bitbucket.org/iamhadoan/my-first-pipeline.git'
}
7. Blue Ocean (không bắt buộc)
7.1 Cài đặt
Manage Jenkins / Manage Plugins
Mở Available tab,tìm kiếm `Blue Ocean`
Tick chọn plugin, cuối cùng click Install without restart
Sau khi plugin cài đặt thành công, có 2 cách để mở Blue Ocean:
Từ trang chủ, bấm Open Blue Ocean
Mở bằng url sau http://localhost:8080/blue hoặc http://[server-ip-address]:8080/blue
7.2 Thử nghiệm
Tạo mới Pipeline bằng cách bấm vào New Pipeline
Chọn SCM: ở đây mình chọn Git
Nhập vào url
Bấm Create Pipeline
Mặc định, sẽ lấy tên repo làm tên job, nếu tên đã được đăng ký, thì Blue Ocean sẽ yêu cầu đặt tên khác.
Sau khi bấm Save, Job mới sẽ tự động chạy. Giao diện chạy job của Blue Ocean như sau:
Bấm vào từng node để xem log
8. Webhook
Phần này mình dành lại cho các bạn tự thực hành nhé!
CHÚC CÁC BẠN THÀNH CÔNG
Không có nhận xét nào:
Đăng nhận xét