我的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)
但是,当执行(并显示单元测试中收到的实际值)时,该值在第一个";"之后被截断.
有没有办法保护价值?
在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
我正在尝试为大型解决方案设置自动构建和部署。单个解决方案在“ $(Build.ArtifactStagingDirectory)”位置生成2个zip文件夹,其中包含所有正确的文件。出于测试/故障排除的目的,我仅查看这些zip文件之一,但是最终两个站点都必须采用这种方式进行部署。
但是,要获取实际文件,您必须通过14个不必要的子文件夹。更复杂的是,其中的8个是可变的,具体取决于构建配置的某些元素(某些归因于git repo中的文件夹结构)。
我不需要这些子文件夹。另一个问题是我实际上并不需要100%的平面文件。我需要2个带有子文件夹的文件夹才能包含在最终提取的目录中。(最终目录是IIS站点的物理路径。)是否可以执行此操作?
我试过了:
提取生成的zip文件,将其解压缩到temp目录,然后重新打包,所有这些都在构建机器上。
从VSTS下载已发布的zip文件,在发布计算机上本地将其解压缩,然后将内容复制到正确的目录中。
使用复制对话框中的“ Flatten Folders”高级选项。
如果不可能仅将构建步骤生成的zip文件部分压扁,我将不胜感激,可以帮助您弄清楚我可以使用变量拉出多少条令人费解的路径。
azure-devops azure-pipelines-build-task azure-pipelines azure-pipelines-release-pipeline
我有一个.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 中创建一个发布管道,它将发布一个包到 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}" …
我正在使用 Azure 管道在应用服务上部署我的 asp.net 网站。在部署之前,我需要删除删除应用程序服务上的一些文件。唯一的方法是使用kudu api?或者我可以使用 poweshell 脚本直接访问和操作文件?
谢谢
azure azure-devops azure-pipelines azure-pipelines-release-pipeline
我有一个代码库,它部署到 3 个虚拟机上的约 30 个网站实例。一旦代码经过测试并签署,我就会手动触发预部署批准。
我想知道是否有一种方法可以让一个阶段(生产)与多个网站关联,而不是必须为每个客户创建一个单独的阶段,例如 prod_client1、prod_client2 等。
我用谷歌搜索了这个话题,但找不到任何关于它的东西。我可以欣赏部署的粒度,但阶段的冗余和通用性会令人沮丧。指导或最佳实践将不胜感激。谢谢!
我们在 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
在经典发布管道中,可以添加其他管道作为工件资源 - 这些可以是触发器,也可以只是引用。然后,您可以引用有关它们的信息,例如使用$(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
我想知道是否有任何方法可以知道在 azure dev ops 的构建管道中执行上一步的结果。
详细解释我的查询:假设在 azure Devops 中,我有一个大约 10 个步骤的构建管道,它执行一些任务,如准备构建、构建解决方案、同步和其他一些事情。
现在我想知道某个步骤执行的状态是失败还是成功,换句话说:
依此类推,直到第 10 步..
我的问题是如何实现这一目标?如何根据上一步的执行结果,让几个步骤的执行不被执行,然后其余的应该被执行。
请注意,只有在所有以前的任务都成功但仍然不起作用时,我才尝试像 Execute 那样放置。它仍然执行第 4 步和第 5 步。
还要注意,STEP 7 有一些与之相关的自定义条件,它可以正常工作。给出这个注释只是为了提供更多的上下文,我的构建管道任务是如何定义或创建的。
请帮我解决这个问题或实现这种行为。
azure azure-devops azure-pipelines-build-task azure-pipelines azure-pipelines-release-pipeline
azure-pipelines-release-pipeline ×10
azure-devops ×9
azure ×3
iis ×1
nuget ×1
powershell ×1
yaml ×1