在采用微服务架构时,我们发现我们有很多具有相同结构的项目。
.Net和.Net Core项目更具体,其中大部分都是作为Azure App Services(Web Apps)发布的。
今天,我们必须为每个项目/应用程序配置构建定义和发布定义。
是否有办法只有一个Build定义和一个Release定义可以由任何checkin触发,构建特定项目并创建一个发布到特定应用服务的版本?
谢谢
答案 0 :(得分:1)
是的,这是可能的。您可以构建和发布定义来单独构建/部署不同类型的项目。
假设您在git repo中有两个项目:
root
|___ .git
|___ dotnetProject
|___ dotnetProject.sln
|___ dotnetProject
|___ dotnetProject.csproj
|___ …
|___ dotnetCoreProject
|___ dotnetCoreProject.sln
|___ dotnetCoreProject
|___ dotnetCoreProject.csproj
|___ …
详细设置如下:
dotnet
和dotnetCore
,默认值为0
。为您需要为不同类型的项目构建/部署的任务设置自定义条件。
通过添加PowerShell任务来检测CI构建的哪些项目已更改。
在任务开始时添加PowerShell任务,并检查上次提交已更改的文件。如果.NET项目已更改,请将dotnet
变量设置为值1
,并创建一个内容为dotnet
的文件1
。如果已更改.NET核心项目,请将变量dotnetCore
设置为值1
,并创建一个内容为dotnetCore
的文件1
。
注意:您还应将文件dotnet
和dotnetCore
发布为构建工件,因为您应该解析dotnet
和dotnetCore
的值基于文件的发布定义中的变量。
根据文件dotnet
和dotnetCore
更改dotnet
和dotnetCore
个变量值。
在发布定义的开头,添加PowerShell任务。检查构建工件中的文件dotnet
/ dotnetCore
。如果有,则根据文件内容更改相关变量。