标签: azure-pipelines-release-pipeline

覆盖TestRun参数,其值包括Visual Studio Team Services中的半冒号

我的runsettings文件包含很少的连接字符串,我希望能够在VSTS中覆盖这些连接字符串,具体取决于环境.

我不想为每个环境使用特定的runsettings文件,但我想使用环境变量以便在配置我们的其他部署版本时保持一致.

但是,当我想向单元测试转发包含分号(;)的连接字符串(或任何参数)时,我将遇到问题.它被截断了.我测试过没有";"传输其他值 成功.

环境变量

任务配置

settings.runsettings

        <?xml version="1.0" encoding="utf-8"?>
        <RunSettings>
          <TestRunParameters>
           <Parameter name="CRM_CONNECTIONSTRING" value="Url = https://MYCRM.crm4.dynamics.com; Username=login@email.com; Password=mypassword;" />
          <TestRunParameters>        
         </RunSettings>
Run Code Online (Sandbox Code Playgroud)

但是,当执行(并显示单元测试中收到的实际值)时,该值在第一个";"之后被截断.

在此输入图像描述

有没有办法保护价值?

azure-pipelines-release-pipeline

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

VSTS:无法添加触发释放的Build Tag

在VSTS online中,我在Release流程(Under Triggers)中检查了Continuous Deployment.在Set trigger on artifact source,我把Tag condition(with tags)设置为Automated.

释放触发器

我在构建过程中也有一个标记.(正确地将标记添加到构建中)

但我的发布不会自动触发?在Deployments状态(在我的构建中),它说"为发布触发器设置的标签与构建分支中的标签不匹配".但他们匹配(见图片).可能是什么问题?

建立

azure-devops azure-pipelines azure-pipelines-release-pipeline

6
推荐指数
2
解决办法
5580
查看次数

VSTS在线门户:发布时取消嵌套构建文件夹

我正在尝试为大型解决方案设置自动构建和部署。单个解决方案在“ $(Build.ArtifactStagingDirectory)”位置生成2个zip文件夹,其中包含所有正确的文件。出于测试/故障排除的目的,我仅查看这些zip文件之一,但是最终两个站点都必须采用这种方式进行部署。

但是,要获取实际文件,您必须通过14个不必要的子文件夹。更复杂的是,其中的8个是可变的,具体取决于构建配置的某些元素(某些归因于git repo中的文件夹结构)。

我不需要这些子文件夹。另一个问题是我实际上并不需要100%的平面文件。我需要2个带有子文件夹的文件夹才能包含在最终提取的目录中。(最终目录是IIS站点的物理路径。)是否可以执行此操作?

我试过了:

  • 提取生成的zip文件,将其解压缩到temp目录,然后重新打包,所有这些都在构建机器上。

    • 为了使其正常工作,我必须手动指定14个子目录。另外,我无法使用“发布工件”将生成的zip上传到VSTS,所以我不确定如何将其下载到服务器盒中。
  • 从VSTS下载已发布的zip文件,在发布计算机上本地将其解压缩,然后将内容复制到正确的目录中。

    • 仅当我手动指定目录中包含的14个文件夹时,此方法才有效。我试图用通配符隐藏14个文件夹,但仅成功复制了过多的嵌套结构-我猜“ Source Folder”参数不支持通配符(我必须在“ Contents”部分中实际执行此操作,或者任务失败)。
  • 使用复制对话框中的“ Flatten Folders”高级选项。

    • 这将删除所有文件夹结构,这不是我想要的。我最终需要在最终目录中包含2个包含子文件夹的文件夹。

如果不可能仅将构建步骤生成的zip文件部分压扁,我将不胜感激,可以帮助您弄清楚我可以使用变量拉出多少条令人费解的路径。

azure-devops azure-pipelines-build-task azure-pipelines azure-pipelines-release-pipeline

6
推荐指数
2
解决办法
989
查看次数

dotnet构建与在Azure DevOps上发布

我有一个.NET Core 2.0控制台应用程序。我可以成功构建或发布此应用并在本地运行。我还可以在Azure DevOps中成功构建和发布此应用程序。但是,如果我在Azure DevOps中构建应用程序,则无法运行结果。

在Azure DevOps中,我尝试使用以下命令进行构建:

dotnet build -c Release -r win-x64 -o app

这将生成少量文件,仅包含与项目相关的文件。它不包括所有的System。*。dll文件,在我的大多数情况下,这些文件似乎都是多余的。当我在本地计算机上运行该命令时,它运行良好,并且可以成功单击MyApp.exe文件并运行控制台应用程序。但是,如果我在Azure DevOps上运行相同的命令,则生成的MyApp.exe文件不会按预期运行。而是先启动然后立即退出。控制台应用程序中未打印任何内容。我没有看到错误。该应用程序非常基础,在所有内容中均包含“ try-catch”,并Console.ReadLine在末尾带有。因此,我认为它将保持开放状态。

当我跑步时:

dotnet publish -c Release -r win-x64 -o app

我得到相同的文件,但包含所有System。*。dll文件等。这次,我注意到我可以成功运行MyApp.exe,并且它的行为符合预期。

为什么在dotnet build ...本地工作,但是dotnet build ...在Azure DevOps中运行时似乎没有得到相同的行为。看来我被迫使用dotnet publish。我的问题是,生成的.zip文件从〜500kb变为30MB。这是很大的不同。

azure-devops azure-pipelines-release-pipeline

6
推荐指数
2
解决办法
4153
查看次数

使用 Azure Devops 发布 Nuget 包

我正在尝试在 Azure DevOps 中创建一个发布管道,它将发布一个包到 Nuget.org。构建管道工作得很好,并将包创建为构建工件。我可以发布到 Azure Artifacts 中托管的提要,但无法发布到 Nuget.org。我相信问题出在服务连接上。服务连接.

我试过使用 ApiKey 但这会引发错误

DotNet Core 不支持加密的 API Key' 错误

这是尝试推送包的发布步骤。 在此处输入图片说明

我也试过https://api.nuget.org/v3/index.json作为 Feed URL,但这似乎没什么区别。

日志输出。

2018-10-21T23:27:36.3177322Z ##[section]开始:Nuget Push 2018-10-21T23:27:36.3183449Z ==================== ================================================== ======== 2018-10-21T23:27:36.3183547Z 任务:.NET Core 2018-10-21T23:27:36.3183635Z 描述:构建、测试、打包或发布 dotnet 应用程序,或运行自定义dotnet 命令。对于包命令,支持 NuGet.org 和经过身份验证的提要,如包管理和 MyGet。2018-10-21T23:27:36.3183729Z 版本:2.141.0 2018-10-21T23:27:36.3183791Z 作者:微软公司 2018-10-21T23:27:3871Z 帮助信息 2018-10-21T23:27:36.3183936Z ======================================== ====================================== 2018-10-21T23:27:37.1663123Z [命令]C:\Windows\system32\chcp.com 65001 2018-10-21T23:27:37.1762529Z 活动代码页:65001 2018-10-21T23:27:37.1808736Z SYSTEMVSSCONNECTION139T39T27:37:37.176252739T3762527 SYSTEMVSSCONNECTION 存在真 2018-10-21T23:27:37.4707171Z SYSTEMVSSCONNECTION 存在真 2018-10-21T23:27:37.4739974Z e3e8a3af-5c6c-44e9-6220644e9-62208c70300000000000000配置到临时配置文件。2018-10-21T23:27:37.4833034Z 将 NuGet.config 保存到临时配置文件。2018-10-21T23:27:37.4919745Z 使用以下 URI 的身份验证信息:https ://www.nuget.org/api/v2/package 2018-10-21T23:27:37.4988034Z [command]C:\hostedtoolcache\windows\dncs\2.1.105\x64\dotnet.exe nuget push "{package}" …

nuget azure-devops azure-pipelines-release-pipeline

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

Azure 管道在部署前删除应用服务上的文件

我正在使用 Azure 管道在应用服务上部署我的 asp.net 网站。在部署之前,我需要删除删除应用程序服务上的一些文件。唯一的方法是使用kudu api?或者我可以使用 poweshell 脚本直接访问和操作文件?

谢谢

azure azure-devops azure-pipelines azure-pipelines-release-pipeline

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

Azure DevOps 多租户发布阶段

我有一个代码库,它部署到 3 个虚拟机上的约 30 个网站实例。一旦代码经过测试并签署,我就会手动触发预部署批准。

我想知道是否有一种方法可以让一个阶段(生产)与多个网站关联,而不是必须为每个客户创建一个单独的阶段,例如 prod_client1、prod_client2 等。

我用谷歌搜索了这个话题,但找不到任何关于它的东西。我可以欣赏部署的粒度,但阶段的冗余和通用性会令人沮丧。指导或最佳实践将不胜感激。谢谢!

iis azure-devops azure-pipelines-release-pipeline

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

升级到 Azure DevOps Server 2019 和发布管道失败,出现 VssServiceResponseException 页面未找到错误

我们在 TFS 2017 上运行的发布脚本之一不适用于 Azure DevOps 2019 SP 1。

有一个在目标机器上运行远程命令的 powershell 脚本 (PowerShellOnTargetMachines.ps1)。它是标准的可用管道任务集的一部分。你可以在这里看到它:https : //github.com/microsoft/azure-pipelines-tasks/blob/master/Tasks/PowerShellOnTargetMachinesV3/PowerShellOnTargetMachines.ps1

当它运行此脚本时,它会失败并显示以下内容:

[调试] 无法为给定的 json 创建环境对象 - 解析值时遇到意外字符:A. 路径 '',第 0 行,位置 0。

[调试]Microsoft.VisualStudio.Services.WebApi.VssServiceResponseException:找不到页面。

[调试]已处理:##vso[task.logissue type=error;code={"Task_Internal_Error":FaileToFetchResourceProperties};]

最近有一篇关于此问题的 Microsoft 论坛帖子,但没有任何好的答案。它实际上建议发布到 StackOverflow。

powershell azure azure-devops azure-pipelines azure-pipelines-release-pipeline

5
推荐指数
0
解决办法
298
查看次数

从引用的管道资源中获取最新的构建 ID

在经典发布管道中,可以添加其他管道作为工件资源 - 这些可以是触发器,也可以只是引用。然后,您可以引用有关它们的信息,例如使用$(Release.Artifacts.ARTIFACTNAME.BuildId).

您现在可以在多阶段 yaml 管道中执行类似的操作

resources:
  pipelines:
  - pipeline: MyBuild
    source: My build pipeline name 
    trigger: 
      branches:
      - master

steps:
- task: PowerShell@2
  inputs:
    targetType: 'inline'
    script: Write-Host Referenced pipeline build id is: ???
Run Code Online (Sandbox Code Playgroud)

但是根据上面的 PowerShell 步骤,我找不到一种方法来获取以这种方式关联的资源的构建 ID,而且我还无法在文档中找到任何内容。

我所做的一些绝望的尝试是:

resources:
  pipelines:
  - pipeline: MyBuild
    source: My build pipeline name 
    trigger: 
      branches:
      - master

steps:
- task: PowerShell@2
  inputs:
    targetType: 'inline'
    script: Write-Host Referenced pipeline build id is: ???
Run Code Online (Sandbox Code Playgroud)

有谁知道如何做到这一点?

yaml azure-devops azure-pipelines azure-pipelines-release-pipeline

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

如何知道 Azure DevOps 构建流水线中的上一步结果?

我想知道是否有任何方法可以知道在 azure dev ops 的构建管道中执行上一步的结果。

详细解释我的查询:假设在 azure Devops 中,我有一个大约 10 个步骤的构建管道,它执行一些任务,如准备构建、构建解决方案、同步和其他一些事情。

现在我想知道某个步骤执行的状态是失败还是成功,换句话说:

  1. 第 1 步:成功
  2. 第 2 步:成功
  3. 第 3 步:失败
  4. STEP 4:我想知道STEP 3执行的状态是失败还是成功基于我要执行STEP 4
  5. STEP 5:应该像 STEP 4 那样执行,即基于 STEP 3 的步骤执行结果
  6. 第 6 步:应执行
  7. STEP 7:应执行

依此类推,直到第 10 步..

我的问题是如何实现这一目标?如何根据上一步的执行结果,让几个步骤的执行不被执行,然后其余的应该被执行。

请注意,只有在所有以前的任务都成功但仍然不起作用时,我才尝试像 Execute 那样放置。它仍然执行第 4 步和第 5 步。

还要注意,STEP 7 有一些与之相关的自定义条件,它可以正常工作。给出这个注释只是为了提供更多的上下文,我的构建管道任务是如何定义或创建的。

请帮我解决这个问题或实现这种行为。

azure azure-devops azure-pipelines-build-task azure-pipelines azure-pipelines-release-pipeline

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