我有一个由 CI 触发的发布管道,如果该版本尚不存在,我想推送新版本的 nuget 包。
为此,我有一个简单的命令行任务,它检查 nuget.org 上是否存在该 nuget 并将结果存储在环境变量中。
然后,我可以设置后续步骤的条件,只有当该值变量为 true 时才会执行该步骤。
这一切都很好,但是我想知道如何简单地停止发布过程并跳过所有后续步骤,而不需要一一设置它们的条件。
另外,如何将任务的构建状态设置为“已取消”?
azure-devops azure-pipelines-build-task azure-pipelines azure-pipelines-release-pipeline
我对 CI 很陌生,正在尝试 Azure DevOps。
我想在 CI 管道中使用自动化测试工具,该工具使用 Bash 脚本和在 CI 管道内运行的 PowerShell 脚本来触发测试工具。
如何将 Bash 或 PowerShell 脚本添加到 Azure DevOps 中的管道中,以便脚本运行并触发测试工具?
或者,为什么 Microsoft 记录了路径过滤器(截至 2019 年 6 月 14 日)。
PR 构建验证中路径过滤器的行为可能被认为是不直观的。
构建的启动或未触发没有明显的原因。
我试图通过在任务中设置一些环境变量来自定义管道版本的输出。我找到了以下链接: https://learn.microsoft.com/en-us/azure/devops/pipelines/scripts/logging-commands ?view=azure-devops&tabs=powershell
然而这似乎不起作用。我所做的只是创建一个具有单个任务(bash 或 PS)的管道,并通过任务的内联版本声明链接中指定的命令。
有人已经成功地使这些命令起作用了吗?我做错了什么和/或不完整吗?
有没有人有更好的方法来使用任务中的相关信息来自定义管道?例如,通过版本名称,或特定版本的描述和/或标签?
编辑:
Write-Host "##vso[task.setvariable variable=sauce;]crushed tomatoes"
Write-Host "##vso[task.setvariable variable=secretSauce;issecret=true]crushed tomatoes with garlic"
Write-Host "Non-secrets automatically mapped in, sauce is $env:SAUCE"
Write-Host "Secrets are not automatically mapped in, secretSauce is $env:SECRETSAUCE"
Write-Host "You can use macro replacement to get secrets, and they'll be masked in the log: $(secretSauce)"
Run Code Online (Sandbox Code Playgroud)
这是代码,复制并粘贴。现在我也尝试了该脚本,但它也不起作用。我使用托管的 Windows 代理。
azure azure-devops azure-pipelines azure-pipelines-release-pipeline
我实现了一些天蓝色的管道任务,在某些特定条件下,构建步骤将不会执行,即它将被跳过。
我想知道如何强制跳过那些跳过的步骤。
提前致谢。
我在我们的环境中拥有有限的权限,我想知道必须添加哪些其他权限才能在 Azure DevOps 中创建构建管道?我无法在实际环境中创建管道,请参见下图。
我可以从 Microsoft Azure Functions 应用程序仪表板将环境变量注入 Azure Functions 应用程序:
使用System.Environment.GetEnvironmentVariable("AppName"),我可以检索配置的值:
[FunctionName("Status")]
public static async Task<IActionResult> Status(
[HttpTrigger(AuthorizationLevel.Anonymous, "get")] HttpRequest req)
{
var appName = System.Environment.GetEnvironmentVariable("AppName");
return new OkObjectResult($"{appName} - OK");
}
Run Code Online (Sandbox Code Playgroud)
但我希望环境变量来自 Azure DevOps Pipeline Variables 作为发布管道的一部分,以便该值可以与特定版本、范围等相关联:

如何才能做到这一点?能做到吗?
我正在使用 ASP.NET MVC 应用程序,我们已开始将其升级到 azure devops(代码和管道)。我们有多个 web.config 文件,每个环境(测试、发布等)各有一个。之前,我们已经构建了用于本地发布的系统,并将 zip 导入到 IIS 中。在本地发布(右键单击,发布)期间,Visual Studio 获取与当前构建配置(在我们的示例中为“发布”)相关的 Web.*.config 文件,并将其与基本 Web.config 合并到单个 Web.config 文件中。
使用管道时,我们的目标是不在构建步骤中转换 Web.config 文件,而是在发布步骤中转换。我们想要构建 1 个包,并在测试、登台和生产服务器上使用相同的包,并使用发布管道中的xml 转换设置将不同的 web.config 文件传递到不同的环境。如果从测试到发布的整个过程中都测试相同的二进制文件,我们会对我们的流程更有信心。
但是,每当我使用“构建解决方案”步骤时,无论我使用哪种设置,它总是会进行 Web.config 文件转换。
到目前为止我所做的:我查看了 MS 文档,但没有找到任何相关内容。我搜索了 SO 并找到了一些线程,例如这个:web.config conversion does not work on build server说你需要TransformXml在 .csproj 文件中添加一个 emelent 才能使 XML 转换工作,但我们没有一个,所以我无法删除它并看看这是否有帮助:)大多数线程似乎建议将不同的标志传递给 msbuild 以阻止它转换 xml 文件(如下所列),但似乎没有一个起作用。我发现了一种解决方法,但它并不真正适合我们项目的设置方式。我已根据此 github 问题删除了<DependentUpon>相关 Web.*.config 文件的标签。不幸的是,没有任何帮助。
这是构建步骤的 YAML:
steps:
- task: VSBuild@1
displayName: 'Build …Run Code Online (Sandbox Code Playgroud) Azure Pipeline 项目有两个构建代理
构建成功,资产、chunk.js 文件和bundle.js 文件作为工件发布
我从以前的构建代理下载工件并将它们提取到$(build.stagingDirectory)/Scripts/dist目录中,因为它们将被 ASP.net 项目使用。
我的提取文件任务 ymal 是
steps:
- task: ExtractFiles@1
displayName: 'Extract files bundle.zip'
inputs:
archiveFilePatterns: '$(Pipeline.Workspace)/dist/$(Build.BuildId)_bundle.zip'
destinationFolder: '$(build.sourcesDirectory)/Scripts/dist'
Run Code Online (Sandbox Code Playgroud)
当MSBuild构建 ASP.net 项目时,它无法找到##[error]C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\Microsoft\VisualStudio\v15.0\WebApplications\Microsoft.WebApplication.targets(182,5): Error MSB3030: Could not copy the file "Scripts\dist\main.bundle.js" because it was not found.
MS Build yaml 是:
steps:
- task: MSBuild@1
displayName: 'Build solution NMG.Portal.MVCForAngular'
inputs:
solution: NMG.WebApp.MVCForAngular/NMG.WebApp.MVCForAngular.csproj
msbuildArguments: '/p:ProjectFile=$(build.sourcesDirectory)\NMG.WebApp.MVCForAngular\NMG.WebApp.MVCForAngular.csproj /p:DeployOnBuild=true /p:SkipInvalidConfigurations=true /p:OutDir="$(build.stagingDirectory)\\"'
clean: false
logProjectEvents: …Run Code Online (Sandbox Code Playgroud) msbuild asp.net-mvc msbuild-task angular-cli azure-pipelines
azure-pipelines ×10
azure-devops ×7
azure ×2
azure-pipelines-release-pipeline ×2
msbuild ×2
angular-cli ×1
asp.net-mvc ×1
c# ×1
msbuild-task ×1