Trong phần trước mình đã giới thiệu về CI/CD, lợi ích của nó. Bài này mình hướng dẫn cài trực tiếp với github.

Tiến hành CI cho project thực tế từ github sử dụng jenkins

2022-05-03 831 lượt xem

Giới thiệu

Trong phần trước mình đã giới thiệu về CI/CD, lợi ích của nó. Nếu bạn chưa đọc có thể đọc tại đây: https://ebudezain.com/cai-dat-jenkins-tren-ubuntu-18.04-vps

Phần này mình liên kết jenkins với github cho project của mình

Chuẩn bị

Nếu bạn có xem qua phần 1 thì đã biết cài đặt nginx. Nếu bạn dùng webserver khác vẫn ok. Nhưng trong bài viết này mình chỉ dùng nginx thôi.

Bạn nào chưa biết nginx thì xem thử cách cài thế này: https://ebudezain.com/cai-moi-mot-vps-chay-php-nginx-postgre-trong-ubuntu-18.04#c%C3%A0i-dat-nginx

Tạo 1 user trong linux: 

adduser www-user

Add user vào group nginx:

sudo usermod -a -G nginx www-user

Xem user trong group: 

getent group nginx 

Xong 😄 

Chúng ta sẽ tạo một thư mục quản lý code cần chạy và add user đó vào group đó:

# Di chuyển đến thư mục webserver default
$ cd /var/www/html
# tạo thư mục chứa code
$ mkdir FRONTEND_ESTATE
# add quyền cho user của chúng ta vừa tạo có quyền truy cập
$ chown -Rf www-user:nginx FRONTEND_ESTATE

 

Tạo SSH Manage Jenkins

Mình mới làm việc với jenkins đã quất luôn cái repo private nên phải tạo ssh để xác thực với github. Còn bạn nào thấy sợ hãi quá thì khỏi cần, bạn chuyển nó qua chế độ public là được nhưng có vẻ sợ bị actack nha 😄 

bước 1: login vào server jenkins rồi gõ: 

$ sudo su
(type your password)
$ whoami
(should tell you that currently you're 'root')
$ sudo su jenkins
$ whoami
(should tell you that currently you're 'jenkins')
$ ssh-keygen

Đây là cách tạo ra ssh key. BẠn sẽ có 2 cái key pub và priv. Bạn lấy cái pub đưa lên github quăng trên đó là được. Còn priv thì bạn cấu hình cho jenkins nhận

Lệnh cat trong linux để xem nội dung trong file. Ta xem và copy nó vào clipborad nghen. 

cat /var/lib/jenkins/.ssh/id_rsa.pub

Vào github thêm mới cái key ssh thôi: 

Vào jenkin setting Credentials hoặc truy cập đường dẫn: 

http://<ip>/credentials/

chọn thêm mới 1 cái credentials

Sau đó chọn ssh username with private key 

chọn username là jenkins-key-ssh và copy nội dung file private vào như hình: 

Bấm ok là xong rồi.

Khi tạo mới project cứ bấm như này là ok nè: 

Phần sau sẽ nói kỹ hơn về việc tạo project với jenkins freestyle

Tạo project với jenkins freestyle tự động CI

Freestyle Project là gì ?

Freestyle Project là một tùy chọn rất linh hoạt và dễ sử dụng cho việc khởi tạo một Project. Bạn có thể sử dụng nó cho bất kỳ loại dự án ; nó rất dễ thiết lập và nhiều tùy chọn của nó xuất hiện trong các công việc xây dựng khác.

Thao tác tạo Freestyle Project cơ bản

Bấm vào “New item” ở panel trái màn hình.

Nhập tên Project để nhớ trong jenkins rồi chọn chế độ freestyle trong jenkins. Sau cùng bấm [OK].

Bạn sẽ thấy có rất là nhiều những nội dung section khi cấu hình một Project Jenkins.

  • General
  • Source Code Management
  • Build Triggers
  • Build Environemnt
  • Build
  • Post-build Actions

– Ở phần ‘General’, bạn có thể nhập miêu tả các chỉ dẫn cụ thể về Project này. Ví dụ mình comment thông tin là project này, dùng để build ứng dụng lập trình Nextjs đơn giản.

Ở phần “Source Code Management” chúng ta sẽ có 3 tuỳ chọn là None, Git và Subversion (SVN). 

Điền repo của bạn vào và chọn credentials tương ứng mà phần trên mình đã hướng dẫn tạo nếu bạn dùng repo private. 

Ngoài ra bạn cần chọn nhánh branch mà bạn muốn nó pull code về. Mình thích nó dùng code nhánh staging nên mình sửa thế này. 

Trong hình bạn thấy mình chọn Nghĩa là mình sẽ dùng webhook của jenkin để làm. 

Ngoài ra bạn cũng có thể dùng Poll SCM . để cứ sau 1 khoảng thời gian mặc định nào đó nó sẽ kiểm tra 1 cách định kỳ. 

Cuối cùng bấm [SAVE] để hoàn thành.

Build source

Để test thử config có ok không thì bạn truy cập vào job/project bạn vừa tạo rồi bấm build now.

Nó quay quay vậy là đang build nè 

Còn như thế này là đã build thành công nè: 

Config github webhook

Banj nhớ điền đường dẫn là http://<IP_Your_jenkins>/github-webhook/ 

phải có dấu /  không là nó lỗi 302 đó nghe 😄 

Khi bạn push code lên thì nó sẽ có có cái tab resend để bạn xem bạn đã có bao nhiêu cái webhook thực thi. 

Rồi bạn vào trong cái jenkins sẽ thấy jenkins đã tự động build cho bạn lại rồi: 

Bạn vào /var/lib/jenkins/workspace bạn sẽ thấy cái đống code của bạn trong đó.

Phần 3 sẽ hướng dẫn bạn CI-CD auto build deploy cho web của bạn

Error:stderr: No ECDSA host key is known for github.com and you have requested strict checking

Nếu có lỗi trên thì bạn có thể run command sau: 

ssh-keyscan github.com >> ~/.ssh/known_hosts
chủ đề
CI CD

CI CD

2022-02-15
CI CD