Ở 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 Pipeline. 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 tool, đ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 (Java, JavaScript, Node.js, Python, .NET, C++, Go, PHP,…) và nền tảng (Windows, Linux, Mac)
- Khả năng Deploy cùng lúc tới nhiều môi trường (virtual machines, containers, on-premises, cloud platforms)
- Dễ dàng tích hợp nếu deploy lên Azure Cloud.
- Kết nối với GitHub, 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: YAML file và Classic 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 Release 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? ?.
Environments:
Group những Resource (server, kubernetes 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 Environment 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 ,SSH 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 định nghĩa sẵn, ta có thể map nó sang khái niệm 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!!!