[英]How to structure Azure Devops Pipelines for test & Release environments?
我是 Azure DevOps 的新手,我希望為我的項目創建正確的管道/發布結構。 我正在努力了解如何構建我的代碼,並為我的構建配置傳遞正確的值。
我已經創建了我的倉庫和分支:
main(已發布/待發布代碼的主分支)
feature/add_new_customer(每個工作的功能分支)
uat(合並多個功能提交的分支,專門用於發布前的測試)
我創建了一個構建管道,這為我創建了一個“azure-pipelines.yaml”文件,用於構建和發布構建文件。 這是從我的分支觸發的:
trigger:
- main
- feature/*
- uat
到目前為止一切都很好。 但這是通過在 yaml 中靜態/硬編碼指定構建配置
variables:
solution: '**/*.sln'
buildPlatform: 'Any CPU'
**buildConfiguration: 'Release'**
我現在已經向我的管道 BuildConfig 添加了一個變量,並將其設置為“UAT”,這樣我就可以在我的 yaml 中引用,如下所示:
variables:
solution: '**/*.sln'
buildPlatform: 'Any CPU'
**buildConfiguration: '$(BuildConfig)'**
這讓我可以“動態地”設置構建配置,但是如果我創建另一個管道,比如說從主分支構建我的發布版本,這會創建一個 azure-pipelines-1.yaml 這一定是錯誤的,因為我必須這樣做復制這些文件只是為了更改觸發器分支?
是否有一種“正確”的方法可以根據我要簽入的分支為不同的環境創建構建? 我看過環境,但他們似乎只是為我提供了 VM 或 Kubernetes? 我只是想構建一個 .net 框架遺留 web 表單應用程序,所以不需要任何花哨的東西。
我還沒有開始部署過程:!! :D
當然,您可以擁有一個基於發布管道本身內的變量來更改其行為的管道。 您將希望在運行構建時執行此操作,而不是在根變量級別。
有兩種方法可以做到這一點:
兩者都適用於您的場景,我相信在您的情況下最好使用 if 語句。 這是一個簡單示例中的樣子:
name: Stackoverflow-Example-Variables
trigger:
- main
- feature/*
- uat
stages:
- stage: your_build_stage
variables:
- name: solution
value: '**/*.sln'
- name: buildPlatform
value: 'Any CPU'
- name: buildConfiguration
${{ if eq(variables['Build.SourceBranch'], 'refs/heads/main') }}:
value: 'Release'
${{ if ne(variables['Build.SourceBranch'], 'refs/heads/main') }}:
value: 'UAT'
displayName: "Build Solution"
jobs:
- job: output_message_job
displayName: "Output Message Job"
pool:
vmImage: "ubuntu-latest"
steps:
- powershell: |
Write-Host ${{ variables.buildConfiguration }}
Write-Host $(Build.SourceBranch)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.