gpt4 book ai didi

asp.net-mvc - 带有 YAML 的 Azure DevOps Pipeline 用于解决许多项目

转载 作者:行者123 更新时间:2023-12-04 09:14:22 25 4
gpt4 key购买 nike

我在 Visual Studio 2019 中有一个 .NET MVC 解决方案,其中包含 3 个项目:

  • AdminWebApp
  • SharedCode(在 VS 中的其他两个项目中都设置为依赖项)
  • FrontWebApp

  • 在 Azure DevOps Pipelines 中,我想为

    AdminWebApp



    FrontWebApp


    两者都将包含

    SharedCode


    因为它包含助手等。我想用 YAML 方式来做。
    我应该创建 1 个还是 2 个管道(每个工件稍后将发布到其自己的 Azure 应用服务)?实现它的 YAML 代码是什么?

    最佳答案

    管理和发布周期的样子真的很重要。纯粹的方法是每次都重新部署所有内容。现实的方法是在有意义的时候将部署管道组合在一起。
    在“YAML方式”中做什么。会考虑使用 YAML templates
    模板参数至少会由项目的目录来构建。这是一个 .net Core 模板的例子,但会让你了解思考过程:例如,这个 YAML 文件将被称为 build-corewebapp.yml 之类的东西

    parameters:
    SolutionPath: ''
    BuildConfiguration: 'Release'
    projectName: ''
    DependsOn: []
    publish: 'false'

    jobs:
    - job: Build_${{ parameters.projectName }}
    dependsOn: ${{ parameters.DependsOn }}
    steps:
    - task: DotNetCoreCLI@2
    displayName: 'dotnet restore'
    inputs:
    command: 'restore'
    projects: '$(Build.SourcesDirectory)/${{ parameters.SolutionPath }}/${{ parameters.projectName }}**/*.csproj'

    - task: DotNetCoreCLI@2
    displayName: 'dotnet build'
    inputs:
    projects: '$(Build.SourcesDirectory)/${{ parameters.SolutionPath }}/${{ parameters.projectName }}**/*.csproj'
    arguments: '--configuration ${{ parameters.BuildConfiguration }}'

    - task: DotNetCoreCLI@2
    displayName: 'dotnet test'
    inputs:
    command: test
    projects: '$(Build.SourcesDirectory)/${{ parameters.SolutionPath }}/${{ parameters.projectName }}.Tests/*.csproj'
    arguments: '--configuration ${{ parameters.BuildConfiguration }} --collect "Code coverage" '

    - job: Publish_${{ parameters.projectName }}
    dependsOn: Build_${{ parameters.projectName }}
    condition: and(succeeded(),eq( ${{ parameters.publish }}, 'true'))
    steps:
    - task: DotNetCoreCLI@2
    displayName: 'dotnet publish'
    inputs:
    command: publish
    publishWebProjects: false
    projects: '$(Build.SourcesDirectory)/${{ parameters.SolutionPath }}/${{ parameters.projectName }}**/*.csproj'
    arguments: '--configuration ${{ parameters.BuildConfiguration }} --output $(build.artifactstagingdirectory)'
    zipAfterPublish: True
    - task: PublishBuildArtifacts@1
    displayName: 'Publish Artifact: drop'
    模板将被类似的东西调用:
      jobs:
    - template: build-corewebapp.yml
    parameters:
    projectName: ${{ variables.appProjectName }}
    solutionPath: $(solutionPath)
    publish: 'true'
    为了最大的可重用性,我会推荐任何类型的 build template to exist in a separate repository so it can be used by other repos .这将通过引用类似于以下内容的 repo 在您的管道中设置:
    resources:
    repositories:
    - repository: repositoryTemplate
    type: git
    name: ProjectName/YAMLTEMPLATERepoName
    使用模板的优点是更新任务版本或更改构建/部署策略,可以在一个地方更新和引用。

    关于asp.net-mvc - 带有 YAML 的 Azure DevOps Pipeline 用于解决许多项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63283063/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com