标签: build-pipeline

如何使用 Azure DevOps Pipeline 发布 WinForms .NET 桌面应用程序?

我正在尝试为 WinForms 桌面应用程序创建 Azure DevOps 构建管道,问题是我无法发布应用程序,也无法创建构建工件。

我创建了一个 WinForms 桌面应用程序并尝试在 Azure DevOps 中创建持续集成 (CI) 管道。

我选择了 .NET 桌面模板来配置持续集成 (CI) 管道。它正在恢复 NuGet 并成功构建解决方案。

现在我想发布 WinForms .NET 桌面应用程序并生成构建工件。我已经尝试了以下任务(如https://developercommunity.visualstudio.com/content/problem/337714/can-build-code-but-release-pipeline-says-no-artifa.html 中所述

- task: PublishBuildArtifacts@1
  displayName: 'Publish Artifact: drop'
  inputs:
    PathtoPublish: '$(Build.ArtifactStagingDirectory)'
    ArtifactName: 'drop'
    publishLocation: 'Container'
Run Code Online (Sandbox Code Playgroud)

以下是我完整的 yml 代码:

trigger:
- master

pool:
  vmImage: 'windows-latest'

variables:
  solution: '**/*.sln'
  buildPlatform: 'Any CPU'
  buildConfiguration: 'Release'

steps:
- task: NuGetToolInstaller@1

- task: NuGetCommand@2
  inputs:
    restoreSolution: '$(solution)'

- task: VSBuild@1
  inputs:
    solution: '$(solution)'
    platform: '$(buildPlatform)'
    configuration: '$(buildConfiguration)'

- …
Run Code Online (Sandbox Code Playgroud)

winforms build-pipeline azure-devops

10
推荐指数
1
解决办法
2574
查看次数

如何在azure构建到发布管道中将变量从构建传递到发布

如何在 azure 构建到发布管道中将变量从构建传递到发布:我们在 CI 管道中有变量 --> 我们必须在发布管道中传递该变量 --> 该变量必须在另一个 yaml 文件中设置。这可能吗?

bash environment-variables build-pipeline azure-devops azure-pipelines-release-pipeline

10
推荐指数
1
解决办法
7687
查看次数

构建管道中的 NPM“解析附近时 JSON 输入意外结束”

语境

NPM 版本:8.9.4
npm 版本:6.9.0

我们正在使用带有 windows vs2017 托管代理的 azure devops 构建管道

问题

每 10 次构建中就有 1 次失败并出现以下错误:

错误

verbose stack SyntaxError: Unexpected end of JSON   input while parsing near '...st":{"integrity":"sha' 

18263 verbose stack     at JSON.parse (<anonymous>)  

18263 verbose stack     at parseJson (C:\npm\prefix\node_modules\npm\node_modules\json-parse-better-errors\index.js:7:17)  

18263 verbose stack     at consumeBody.call.then.buffer (C:\npm\prefix\node_modules\npm\node_modules\node-fetch-npm\src\body.js:96:50)
18263 verbose stack     at <anonymous>  

18263 verbose stack     at process._tickCallback (internal/process/next_tick.js:188:7)  
Run Code Online (Sandbox Code Playgroud)

它无法解析的 JSON 各不相同。

我已经尝试过的事情

  • 使用 npm ci 代替 op npm install

  • 有一个构建任务,在 npm install 之前删除 npm chache。(npm 缓存清理 --force)

  • 有一个构建任务来改​​变使用的注册。(配置设置注册表“ …

build-pipeline npm-install azure-devops

9
推荐指数
1
解决办法
937
查看次数

azure devops 构建管道将超时减少到 30 分钟

有没有办法更改构建管道的超时时间,目前管道时间在 60 分钟后结束。我想把它减少到 30 分钟。

我查看了所有组织设置和项目设置,但在 UI 上找不到任何内容

或者它可以从 YAML 设置吗?

timeout build-pipeline azure-devops azure-pipelines

7
推荐指数
2
解决办法
2万
查看次数

Angular (8) 应用程序构建一次(使用生产配置)并部署到多个环境

我遇到一种情况,我\xe2\x80\x99m 尝试使用生产配置构建我的角度应用程序并部署到多个环境,例如ng build --configuration= product

\n\n

这里的工作流程是当我使用上述命令(ng build --configuration=production)构建时,environment.ts 文件被替换为environment.prod.ts

\n\n

我在environment.prod.ts中的配置如下,

\n\n

\r\n
\r\n
export const environment = {\r\n  production: true,\r\n  environment: \'Production\',\r\n  _webApiHost: \'prodsomename.company.com/api/\',\r\n};
Run Code Online (Sandbox Code Playgroud)\r\n
\r\n
\r\n

\n\n

我在environmrnt.test.ts中的配置如下,

\n\n

\r\n
\r\n
export const environment = {\r\n    production: true,\r\n    environment: \'Test\',\r\n    _webApiHost: \'testsomename.company.com/api/\',\r\n};
Run Code Online (Sandbox Code Playgroud)\r\n
\r\n
\r\n

\n\n

我对 angular.json 文件的设置如下,

\n\n

\r\n
\r\n
"configurations": {\r\n            "production": {\r\n              "fileReplacements": [ {\r\n                "replace": "src/environments/environment.ts",\r\n                "with": "src/environments/environment.prod.ts"\r\n              } ],\r\n              "optimization": true,\r\n              "outputHashing": "all",\r\n              "sourceMap": false,\r\n              "extractCss": true,\r\n              "namedChunks": …
Run Code Online (Sandbox Code Playgroud)

build-pipeline azure-devops azure-pipelines-release-pipeline angular8

7
推荐指数
1
解决办法
6222
查看次数

物理上更改Maven pom.xml <properties>值

我正在为几个相互依赖的项目构建一个部署管道.每个构建都会生成一个具有唯一版本号的新版本,该版本号部署到Maven存储库.然后,使用该新版本作为依赖项触发管道中的下游项目,并以类似方式构建.

我需要的是在构建项目之前更改pom.xml(或多模块项目中的所有poms)中的属性值.例如,在下面的代码中,"0.1.200"将更改为"0.1.345"(或者无论最新的内部版本号是什么).使用系统属性不是一种选择,因为更新的pom将部署在Maven存储库中,因此更改必须是持久的.

<properties>
    <foo.version>0.1.200</foo.version>
</properties>

<dependencies>
    <dependency>
        <groupId>com.example</groupId>
        <artifactId>foo</artifactId>
        <version>${foo.version}</version>
    </dependency>
</dependencies>
Run Code Online (Sandbox Code Playgroud)

是否有一些Maven插件使用一个命令行指令执行此操作?否则我需要编写一个简短的脚本(例如在Ruby中),它解析并更改项目中的所有pom.xml文件.

maven build-pipeline continuous-delivery

6
推荐指数
1
解决办法
4944
查看次数

xUnit 测试在本地运行,但不在 Azure DevOps 上运行

我的 xUnit 测试在本地运行良好,但无法在 Azure DevOps 上运行。受测试的程序集是 .NET 5.0 程序集,测试程序集也是如此。

检查 VsTest 任务的日志文件,我看到以下内容

测试运行检测到针对不同框架和平台版本构建的 DLL。以下 DLL 与当前设置不匹配,即 .NETFramework、Version=v5.0 框架和 X86 平台。

UnitTests.dll 是为 Framework .NETCoreApp、Version=v5.0 和 Platform AnyCPU 构建的。

Microsoft.TestPlatform.CommunicationUtilities.dll 是为 Framework .NETStandard、Version=v2.0 和 Platform AnyCPU 构建的。

Microsoft.TestPlatform.CoreUtilities.dll 是为 Framework .NETStandard、Version=v2.0 和 Platform AnyCPU 构建的。

Microsoft.TestPlatform.CrossPlatEngine.dll 是为 Framework .NETStandard、Version=v2.0 和 Platform AnyCPU 构建的。

Microsoft.TestPlatform.PlatformAbstractions.dll 是为 Framework .NETCoreApp、Version=v2.1 和 Platform AnyCPU 构建的。

Microsoft.TestPlatform.Utilities.dll 是为 Framework .NETStandard、Version=v2.0 和 Platform AnyCPU 构建的。

Microsoft.VisualStudio.TestPlatform.Common.dll 是为 Framework .NETStandard、Version=v2.0 和 Platform AnyCPU 构建的。

Microsoft.VisualStudio.TestPlatform.ObjectModel.dll 是为 Framework .NETStandard、Version=v2.0 …

xunit build-pipeline vstest azure-devops

6
推荐指数
1
解决办法
2298
查看次数

如何在发布服务器项目而不是客户端的 Azure DevOps 上为 Blazor WebAssembly 托管应用程序创建构建管道?

我正在尝试使用 DevOps 构建管道和单独的发布管道在我们的 DevOps 服务器上从我们的 Git 存储库部署 Blazor WASM 托管应用程序。

该项目包括一个服务器项目和一个客户端项目(按照 VS 中 Blazor WebAssembly 托管模板创建的标准结构)。

我使用了经典编辑器和 ASP.NET Core 模板并加载了站点,但控制台显示连接到服务器的 HTTP 错误,这让我认为我部署的是客户端项目而不是服务器项目。我很确定是这样,因为我的 Drop 工件包含一个名为 Client.zip 的文件。

我如何更改它以部署服务器应用程序?

(已经有很多关于此的问题,例如here,但没有一个涵盖经典的编辑器方法)

c# build-pipeline azure-devops blazor blazor-webassembly

6
推荐指数
1
解决办法
886
查看次数

检查 DevOps 管道中过时的 nuget 包

我正在尝试检查我们的构建管道之一中是否有过时的软件包。使事情变得复杂的是,我们使用来自 nuget.org 的包以及来自我们自己的存储库(DevOps 工件提要)的包。这些源在 nuget.config 中配置。包恢复任务成功,没有任何问题:

- task: NuGetCommand@2
  displayName: Restore Nuget Packages
  inputs:
    command: 'restore'
    restoreSolution: '**/*.sln'
    feedsToUse: 'config'
    nugetConfigPath: 'nuget.config'
Run Code Online (Sandbox Code Playgroud)

在此步骤之后,我们安装 dotnet-outdated-tool:

- task: DotNetCoreCLI@2
  displayName: install dotnet-outdated-tool
  inputs:
    command: 'custom'
    custom: 'tool'
    arguments: 'install dotnet-outdated-tool -g --ignore-failed-sources'
Run Code Online (Sandbox Code Playgroud)

请注意,我们已经在此处添加了 --ignore-failed-sources 选项,否则该工具将无法正确安装,因为它会抱怨我们的提要无法访问,但我们可以通过添加 --ignore-failed-sources 来通过。

接下来,也是关于我的问题的最重要的一步,是我们尝试运行过时的工具来检查过时的软件包:

- task: DotNetCoreCLI@2
  displayName: Check outdated packages
  inputs:
    command: 'custom'
    custom: 'outdated'
    arguments: '$(pathTosolution)'
  env:
      SYSTEM_ACCESSTOKEN: $(System.AccessToken)
Run Code Online (Sandbox Code Playgroud)

对于 nuget.org 中的软件包,这似乎工作正常:

  Microsoft.Extensions.DependencyInjection  5.0.0  -> 5.0.1 
  Microsoft.NET.Test.Sdk                    16.7.1 -> 16.9.1
  MSTest.TestAdapter                        2.1.1  -> 2.2.1 
Run Code Online (Sandbox Code Playgroud)

对于我们自己的源中的包,它无法解析最新版本:

Some.Internal.Component …
Run Code Online (Sandbox Code Playgroud)

c# nuget build-pipeline devops

6
推荐指数
1
解决办法
959
查看次数

将Web应用程序部署到Azure App Services - 使用资源管理器连接

我有一个Azure管道,它构建一个asp-net核心项目,并从中构建一个docker镜像并将其推送到Azure Container Registry.

此管道由azure-pipelines.acr.yml文件构成.我对Deployments分支执行的每个git push操作都会在新的构建中将其转换为我的管道.

在此之前,我有一个CI管道,以便将主分支中的每个新变化集成到我的管道中.

但是,在完成每个构建之后,我必须运行推送到我的容器注册表中的该映像的新实例,并将其部署为新的App服务,所有这些过程都是从Azure门户服务手动完成的.

在此输入图像描述

我一直在阅读,我需要的是使用我的Azure管道执行持续部署.在我azure-pipelines.acr.yml的CI管道工作流程中,执行以下步骤:

pool:
  vmImage: 'ubuntu-16.04' # other options: 'macOS-10.13', 'vs2017-win2016'

variables:
  buildConfiguration: 'Release'
  imageName: 'zcrm365:$(Build.BuildId)'
  dockerId: 'zcrm365' # This is my registry name access key
  dockerPassword: 'my password' # Password access key  
  # I should create an environment variables to dockerId and dockerPassword


steps:
# Build a docker image
- script: |
    docker build -t $(dockerId)/$(imageName) -f ZAccountSyncService/Dockerfile .  # add options to this command to meet your needs 
    docker …
Run Code Online (Sandbox Code Playgroud)

continuous-integration azure continuous-deployment build-pipeline azure-resource-manager

5
推荐指数
1
解决办法
256
查看次数