Theo như tôi biết, cách tốt nhất để xây dựng nhánh có điều kiện là sử dụng "kích hoạt" trong YAML của bạn, thay vì triển khai "if-other" phức tạp. Nó cũng an toàn hơn nhiều, và bạn có các điều khiển rõ ràng hơn trên các kích hoạt chi nhánh thay vì dựa vào các biến CI.
Thí dụ:
# specific branch build
jobs:
- job: buildmaster
pool:
vmImage: 'vs2017-win2016'
trigger:
- master
steps:
- script: |
echo "trigger for master branch"
- job: buildfeature
pool:
vmImage: 'vs2017-win2016'
trigger:
- feature
steps:
- script: |
echo "trigger for feature branch"
Để có trình kích hoạt bao gồm và loại trừ các nhánh, bạn có thể sử dụng cú pháp kích hoạt phức tạp hơn với các nhánh bao gồm và loại trừ.
Thí dụ:
# specific branch build
trigger:
branches:
include:
- master
- releases/*
exclude:
- releases/1.*
Tài liệu chính thức của Azure DevOps Pipelines trigger
trong YAML là:
Tài liệu kích hoạt Azure Pipelines YAML
CẬP NHẬT 1 :
Tôi đăng lại nhận xét của mình ở đây với các ghi chú bổ sung: Tôi đã nghĩ rằng có các đường ống khác nhau bởi vì sự phức tạp của việc tung hứng giữa các biến CI không thể duy trì hơn so với việc có nhiều công việc trong một YAML với các trình kích hoạt. Có multijobs với các kích hoạt cũng buộc chúng ta phải có sự phân biệt rõ ràng và cung cấp về quản lý chi nhánh. Nhóm kích hoạt và bao gồm các nhánh có điều kiện đã được sử dụng trong một năm bởi nhóm của tôi vì những lợi thế bảo trì này.
Vui lòng không đồng ý, nhưng với tôi có một logic nhúng trong bất kỳ kịch bản nào trong bất kỳ bước nào để kiểm tra nhánh nào hiện đang trong phiên và sau đó thực hiện bất kỳ hành động nào khác, giống như các giải pháp đặc biệt hơn. Và điều này đã mang lại cho nhóm của tôi và tôi vấn đề bảo trì trước đây.
Đặc biệt nếu logic nhúng có xu hướng phát triển bằng cách kiểm tra các nhánh khác, thì độ phức tạp muộn hơn so với việc phân tách rõ ràng giữa các nhánh. Ngoài ra, nếu tệp YAML sẽ được duy trì trong thời gian dài, nó cần có các điều khoản và lộ trình rõ ràng trên các chi nhánh khác nhau. Dự phòng là không thể tránh khỏi, nhưng ý định tách logic cụ thể sẽ trả nhiều tiền hơn trong thời gian dài cho khả năng bảo trì.
Đây là lý do tại sao tôi cũng nhấn mạnh các chi nhánh và loại trừ trong câu trả lời của tôi :)