Header ads

Header ads
» » Phương pháp dùng Jenkins cho deploy code có sự phê duyệt của quản lý

Ở các công ty mình làm việc (không biết các chỗ khác thế nào), Developer hoạt động độc lập, không được nhiều quyền ( không được quyền root) trên Server Production. Việc Deploy Code được System Engineer (SE) thực hiện. Ngoài ra, bất cứ action nào làm thay đổi hệ thống ( gọi là Change ) đều cần có sự approve của Manager trước khi thực hiện. Tuy nhiên, ngay cả SE như mình cũng chẳng thích việc này, tốn công, tốn sức, mà nói thẳng ra là nếu có lỗi thì lại báo Developers fix thôi, chứ SE chỉ ngồi ngó.
Việc này đã trở thành quy trình rồi, nên mình không bàn là nên hay không nhé.
Qui trình thường là :
* Developer : Sếp ơi em muốn deploy code 
* Manager: OK bấy bì  
* Developer : Anh SE ơi, deploy code giúp em, theo hướng dẫn : ABC,XYZ , .. 
* SE: Done nhé cưng. 
Qui trình là vậy, việc request/ approve thực hiện bằng email, cũng có thể bằng Tool, nhưng lại nảy sinh một số vấn đề sau :
  • Muốn tracking lại lịch sử Change của hệ thống không được
  • SE làm, thay đổi ra sao Developer không biết
  • SE ngồi làm đi làm lại một việc chả liên quan gì đến mình :(
Jenkins sẽ giúp ta giải quyết việc này, như mình đang áp dụng cho công ty của mình

B. Hướng dẫn cấu hình

Về việc Authentication bằng Google Mail, mọi người có thể xem qua Post này : Cài đặt Jenkins và xác thực bằng tài khoản Google Mail
Về Permission trong Jenkins, thì mọi người có thể review trong đây : Jenkins Matrix Based Security

1. Cấu hình Security cho Jenkins

Mình chọn kiểu cấu hình theo Project-based Matrix Authorization Strategy như sau
alt text

2. Cài đặt các Plugin liên quan

Mình cần cài các Plugin sau :
  • GIT Plugin : làm Git Client checkout Source Code về Workspace . Khi install Plugin này, Jenkins sẽ install thêm một số dependencies.
  • Promoted builds plugin : dùng cho việc request / approval

3. Tạo Item ( Project)

  • Tạo Project tên : ProjectA
  • This build is parameterized : Mình có thể Set Biến khi deploy. Biến này sẽ được input vào tại thời điểm click deploy code và được Jenkins sử dụng trong suốt quá trình chạy cái Project này . Nếu có set biến, thì khi build sẽ là : alt text
Tại đây, mình tạo biến : GIT_BUILD_SPEC : dùng cho Developer input vào GIT information dùng để build, với giá trị default à */production. Tức là latest commit của branch production. User có thể input vào một commit ID 
alt text
  • Source Code : Mình có thể hướng dẫn Jenkins download về Sourcecode như sau :
alt text
Lưu ý là mình sử dụng biến GIT_BUILD_SPEC để làm biến input vào đây => Jenkins sẽ checkout source code theo hướng dẫn của Developer. 
Kể từ lúc này, mình có thể sử dụng biến $WORKSPACE/ để lấy location của source code được jenkins checkout về. 
Note: Mình đang dùng SSH Keys ( config deploy keys) nên phải config thêm ở phần Credentials
  • Enable project-based Security : Mình set quyền như sau :
alt text
  • Project Permission : Liệt kê các User liên quan đến Project như sau: không có quyền edit Project, chỉ có quyền liên quan đến việc BUILD :
alt text
  • User Request Deloy : Thực ra, quá trình này chỉ là gửi email đến cho Manager và các bên liên quan thôi . Config việc gửi email này nằm trong Post-build Action, mình chọn Editable Email Notification, với trigger như sau :
    alt text
    Ý nghĩa là : send email đến Manager và CC đến những người liên quan : Developer trong team, SE, ...
  • Promoted Build : Việc này liên quan đến việc Manager Approve và Developer thực sự deploy code . Mình chọn tick vào alt text , khi đó Jenkins sẽ cho mình chọn các Promotion processes. Mình sẽ tạo 2 ( hoặc nhiều hơn Process) : Approval và Deployment . Nếu trong quá trình deploy code, mình cần 2 action thì tạo 3 processes là : Approval , Deployment 1, Deployment 2.
    • Approval : Tác vụ approval ở đây cũng đơn giản là gửi 1 cái email notify đến mọi người để báo là Manager approval . Nên mình config như sau :
alt text
Lưu ý: với configure này, user phap.le là Manager, và là người duy nhất được thực thi process này. Ngoài ra còn có SuperAdmin , người được cấu hình quyền Administration nữa nhé. 
* Deployment : Thực sự, đây mới là quá trình deploy code, gồm 2 tác vụ : chạy script deploy và gửi email notification về việc deploy ( kèm theo Log deploy)
alt text
Các bạn thấy, người thực hiện tác vụ Deployment có 3 User và khi deploy, mình chạy 1 đoạn script đã viết trước, có sử dụng biến $WORKSPACE . Script này thì mọi người làm theo nhu cầu của mình. Kèm theo action Gửi email Notification .
Lưu ý đoạn :
alt text
Đoạn này có nghĩa : chỉ khi nào tác vụ Approve được thực thi thì tác vụ Deployment mới được quyền thực thi.

4. Test

  • Developer request build bằng cách bấm vào Project mình cần build và nút Build with Parameters , Jenkins sẽ yêu cầu mình điền vào các biến đã được định nghĩa khi tick vào Option This build is parameterlized
alt text
Jenkins lúc này sẽ thực hiện tác vụ checkout sourcecode về và hiển thị Build ở mục Build History :
alt text
Khi click vào Build này, ta sẽ thấy nhiều thông tin như sau : Git Build Revision, Nút Promotion Status .
alt text
Khi click vào Promotion Status, ta sẽ thấy được 2 cái Action : Approval và Deployment 
alt text
  • Manager approve request : Manager lúc này sẽ nhận được email, họ có thể dùng Link trong email để vào approve . Hoặc đi theo flow ở phía trên để vào được màn hình Promotion Status . Manager sẽ click vào nút : Build để thực hiện tác vụ Approve của mình
alt text
  • Developer thực hiện chính thức việc deploy cũng y hệt như Manager approve thôi .
alt text
Mọi người để ý khúc cuối : Action này phải được thực hiện sau khi action Approvalđược thực hiện thành công.
Đây là toàn bộ quá trình mình làm với việc deploy code
Học viện Đào tạo Trực Tuyến
Public group · 10280 members
Chia sẻ kiến thức, kinh nghiệm giúp bạn có nhiều trải nghiệm và kiến thức hơn


Khóa học Phân tích dữ liệu sử dụng Microsoft Power BI

Khóa học Phân tích dữ liệu sử dụng Power Query trong Excel
HƯỚNG DẪN THIẾT KẾ QUẢNG CÁO VÀ ĐỒ HỌA CHUYÊN NGHIỆP VỚI CANVA
Hãy tham gia khóa học để trở thành người chuyên nghiệp. Tuyệt HAY!😲👍
 Khoa hoc hay
http://hoc.elearninghaiphong.com/main/noidungkhoahoc/15

GOOGLE SPREADSHEETS phê không tưởng
 Khoa hoc hay


Khóa hoc lập trình bằng Python tại đây



Nếu bạn muốn tạo video chuyên nghiệp và sáng tạo hãy tham gia khóa học HƯỚNG DẪN TỰ TẠO VIDEO CLIP CHUYÊN NGHIỆP SÁNG TẠO

 Xây dựng website​​​​

Hacker mũ trắng




Hãy tham gia khóa học để biết mọi thứ

Để tham gia tất cả các bài học, Bạn nhấn vào đây 

Khóa học sử dụng Adobe Presenter-Tạo bài giảng điện tử
 Khoa hoc hay
http://hoc.elearninghaiphong.com/main/noidungkhoahoc/71

Cập nhật công nghệ từ Youtube tại link: https://www.youtube.com/channel/UCOxeYcvZPGf-mGLYSl_1LuA/videos
Để tham gia khóa học công nghệ truy cập link: http://thuvien.hocviendaotao.com
Mọi hỗ trợ về công nghệ email: dinhanhtuan68@gmail.com

About Học viện đào tạo trực tuyến

Xinh chào bạn. Tôi là Đinh Anh Tuấn - Thạc sĩ CNTT. Email: dinhanhtuan68@gmail.com .
- Nhận đào tạo trực tuyến lập trình dành cho nhà quản lý, kế toán bằng Foxpro, Access 2010, Excel, Macro Excel, Macro Word, chứng chỉ MOS cao cấp, IC3, tiếng anh, phần mềm, phần cứng .
- Nhận thiết kế phần mềm quản lý, Web, Web ứng dụng, quản lý, bán hàng,... Nhận Thiết kế bài giảng điện tử, số hóa tài liệu...
HỌC VIỆN ĐÀO TẠO TRỰC TUYẾN:TẬN TÂM-CHẤT LƯỢNG.
«
Next
Bài đăng Mới hơn
»
Previous
Bài đăng Cũ hơn