Mọi thứ bạn cần biết để build một Azure Pipeline hoàn chỉnh

Tổng quan về Azure DevOps (part 2)

Ở bài viết trước, mình đã giới thiệu tổng quan về azure devops, cách mà azure devops tổ chức và quản lý project. Trong bài viết này, mình sẽ đi vào chi tiết của một component rất quan trọng đó là Azure Bài viết sẽ cung cấp những kiến thức đủ để mọi người có cái nhìn tổng quát nhất về thành phần và chức năng của một Azure Pipeline.


Azure Pipeline là gì?

Azure Pipeline là một CI/CD , điều đó có nghĩa là chúng ta có thể build, chạy test, và deploy phần mềm một cách tự động. Azure Pipeline là hoàn toàn miễn phí đối với dự án công khai (public project) và 30h mỗi tháng miễn phí đối với dự án đóng (private project). Azure Pipeline hỗ trợ những tính năng rất mạnh mẽ như:

  • Hỗ trợ hầu hết các ngôn ngữ lập trình (, JavaScript, Node.js, Python, .NET, C++, Go, ,…) và nền tảng (, , Mac)
  • Khả năng Deploy cùng lúc tới nhiều môi trường (virtual machines, containers, on-premises, platforms)
  • Dễ dàng tích hợp nếu deploy lên Azure Cloud.
  • Kết nối với , Gitlab và nhiều source control khác

Những thành phần của Azure Pipeline:

Từ giao diện chính của một project ta có thể thấy menu bên trái mục pipelines bao gồm những thành phần sau: Pipelines, Releases, Environments, Deployment Groups, Library, Task Groups

Trong đó:

Pipelines:

Là nơi chúng ta tạo CI/CD (Build, Test, Deploy) cho project. Chúng ta có thể tạo Pipelines theo 2 cách: fileClassic UI editor.

Pipelines có hỗ trợ sẵn những templates cho các ngôn ngữ thông dụng, nếu project của bạn khá đơn giản, có thể chỉ bằng một template là đã có được một CI/CD pipeline hoàn chỉnh.

Releases:

Là nơi chúng ta tạo CD (deployment). Sau khi phần mềm được build sẽ sinh ra những Artifacts nằm trong mục Artifacts của Azure DevOps, khi chúng ta tạo một có nghĩa là một lần deploy lên Resources (từ đây sẽ dùng Resource để thay thế cho server host app).

Nhưng một câu hỏi sinh ra, nếu Pipelines có thể dùng để tạo một CI/CD hoàn chỉnh, vậy tại sao chúng ta còn cần Release để tạo CD? ?.

Trong một project thực tế, không hẳn bất cứ thay đổi nào cũng cần được deploy ngay lập tức lên server, chúng ta chỉ cần chuẩn bị những Artifacts “ready to deploy” từ kết quả của CI, và khi đúng thời điểm (có thể là thời gian deploy theo plan của dự án), chúng ta sẽ tạo Release từ phiên bản Artifacts hoàn thiện nhất để đưa lên production. Release có hỗ trợ pre-deploy approval là một bước rất quan trọng một quy trình deploy hoàn chỉnh.
Tóm lại: dùng Pipelines để tạo CI và dùng Release để tạo CD (Đối với Classic Editor Mode)

Environments:

Group những Resource (server, namespace,…) dùng để host app lại thành một môi trường để tiện cho việc phân chia và kiểm soát. Một có thể chứa nhiều Resources và chúng ta có thể tạo nhiều Environments (DEV, TEST, UAT,…).

Khi deploy, chúng ta có thể chọn target là một environment hoặc chỉ một resource bên trong environment đó. Ngoài ra Environment còn mang lại những lợi ích rất thiết thực hỗ trợ việc deploy:

  • Xem lịch sử những pipelines nào đã tác động tới environment.
  • Xem cụ thể commit nào đã tác động tới environment.
  • Xem trạng thái của environment (deploy thành công hay thất bại)
  • Phân quyền cụ thể pipelines hoặc user nào có quyền tạo, xem, sử dụng environment.

Note: Environments chỉ dùng cho Yaml file mode.

Deployment Groups:

Cũng giống như Environment, Deployment groups là một tập hợp các Resource mà chúng ta dùng để host application. Chúng ta có thể chọn deploy trên toàn bộ Resource bên trong deployment group hoặc chỉ một vài máy nhất định.

Note: Deployment Group chỉ dùng cho Classic Editor mode

Library:

Gồm 2 phần là secure files and variable groups.

  • Secure files: chứa những file để những file mà có thể share giữa các pipeline (vd: signing certificate pfx , keys,…)
  • Variable groups: Lưu những giá trị mà ta có thể pass vào web config khi deploy

Task Groups:

Chứa những bộ task được sẵn, ta có thể map nó sang function trong lập trình, ở đó mỗi task group là một function và mỗi task là một câu lệnh/dòng code, tập hợp các dòng code này là một hành động mà ta muốn thực hiện.

Mục đích của task group cũng tương tự, để group những tasks lại với nhau và có thể reuse ở nhiều pipelines, ta cũng có thể pass parameter vào Task Group để custom giống như cách chúng ta làm với function.

Lời kết:

Như vậy mình đã giới thiệu xong về các thành phần mà Azure Pipelines sử dụng để tạo nên một bộ CI/CD hoàn chỉnh. Bài viết sau mình sẽ đi sâu hơn vào cách mà một CI/CD vận hành trong Azure DevOps pipeline. Happy Learning And Sharing!!!

Exit mobile version