我们正在使用 Gitflow 运行 Visual Studio Team Services (VSTS),并一直尝试在笔记本电脑上使用带有本地构建代理的私有管道。然而,我们的本地代理遇到了麻烦,对于特定的拉取请求,针对该本地代理的构建失败了。我已编辑构建定义以使用 Hosted2017 代理,并希望重新排队拉取请求。我可以手动将 sha1 哈希的构建排队,以供 PR 提交来测试代理。但是,我想完成拉取请求,并且我将使构建成功,但似乎我无法使 PR 的构建使用更新的构建定义。
那么我如何获得 Pull Request 来让这个构建工作呢?我没有看到切换拉取请求的构建定义的选项?我是否只需要放弃并重做 PR,或者有没有办法可以修复此 PR,而无需要求创建它的开发人员跳过障碍,以便我可以修复构建过程?
谢谢!
我正在使用 azure-pipelines.yaml 来构建多个阶段,每个阶段都有相同的变量,即 var_key 但每个阶段的值不同,为此我有不同的 Azure 库组
azure-pipelines.yaml
name: $(Date:yyyyMMdd)$(Rev:.r)
pr:
branches:
include:
- develop
- master
trigger:
branches:
include:
- develop
- master
variables:
group: group1, group2, group3
BuildNumber: $(Build.BuildNumber)
stages:
- stage: debug
jobs:
- job: DebugConditions
pool:
vmImage: 'ubuntu-latest'
steps:
- bash: echo $(group1.var_key)
- stage: dev
jobs:
- job: DevConditions
pool:
vmImage: 'ubuntu-latest'
steps:
- bash: echo $(group2.var_key)
Run Code Online (Sandbox Code Playgroud)
这给了我一个错误,是否有正确的方法来做到这一点。
yaml azure azure-devops azure-pipelines azure-pipelines-release-pipeline
我创建了一个 episerver 合金项目,在设置了一些 nuget 包后,它在 Visual Studio 中构建和运行良好,我可以部署到 azure 并从 VS 以 azure 运行,没有问题。
我现在正试图让构建在管道中工作。
按照说明,我添加了一个“nuget restore”任务,并将其指向 NuGet.config。这有效。
然后它进入构建阶段,并给出:
D:\a\1\s\DxcAlloy.csproj(335,3): 错误 MSB4019: 导入的项目 "C:\Program Files\dotnet\sdk\3.1.202\Microsoft\VisualStudio\v16.0\WebApplications\Microsoft .WebApplication.targets”未找到。确认导入声明“C:\Program Files\dotnet\sdk\3.1.202\Microsoft\VisualStudio\v16.0\WebApplications\Microsoft.WebApplication.targets”中的表达式正确,并且该文件存在于磁盘上。
我不知道如何调试这个。有些帖子说,如果您没有安装 Visual Studio,可能会发生错误,但我无法在 azure 管道上安装 Visual Studio...
我删除了现有的“.net 恢复”任务,因为它失败了,我猜测我只需要我的 nuget 恢复 - 这是一个猜测。
管道“代理规范”是vs2017-win16
该项目是在 VS 2019 中创建的。
无奈之下,我添加了一个“Use .NET core”任务,并将版本设置为构建抱怨丢失的版本,即3.1.202。
这没有帮助。
有任何想法吗?
我使用 .NET 桌面模板和“create .msi”扩展名创建了一个管道,但它显示了一个警告:
##[warning]No .MSI files were found, please check your build-configuration. If this is expected, you might consider to use the default Visual Studio Build task instead of this custom Installer task.
2018-11-28T22:58:54.1434410Z ##[section]Finishing: Create .msi file(s) from VS Installer project(s).
Run Code Online (Sandbox Code Playgroud)
任何人都知道如何使用 Azure Pipeline 创建 exe 文件并将其部署在虚拟机上。
在构建管道中,我有一个使用 powershell 脚本的工作,根据这样的变量设置应用程序名称:
$applicationName = If ('$(configuration)' -eq 'Release') { 'Appname' } Else { 'Appname-Test' }
Write-Host "##vso[task.setvariable variable=applicationName]$applicationName"
Run Code Online (Sandbox Code Playgroud)
我尝试将PublishBuildArtifacts@1变量的显示名称设置为这样的变量:
- task: PublishBuildArtifacts@1
displayName: $[variables.applicationName] # runtime variable
Run Code Online (Sandbox Code Playgroud)
但这从字面上显示$[variables.applicationName]而不是变量值。如何根据变量更改任务的显示名称?
在你喊“门!”之前 请阅读。
我有本地 IIS 服务器群,我为每个(开发、测试、生产)创建了一个 VM 环境。在我所有的应用程序中,我都有一个 CD YAML,如下所示:
- stage: Deploy_Test
jobs:
- deployment: APIDeployTestIISFarm
displayName: Deploy API to Test IIS
environment:
name: Test
resourceType: VirtualMachine
strategy:
runOnce:
deploy:
steps:
Run Code Online (Sandbox Code Playgroud)
因为我有 20 个不同的应用程序,它们都针对相同的环境,所以我无法使用 Gates 功能。并非所有应用程序都具有完全相同的/health端点。
我目前正在制作一个 powershell 命令来简单地调用 /health 并且如果“不健康”可能会抛出结果。尽管与只会检查 200 的 HTTP 门相比,这对我来说听起来非常难看,但我敢打赌它也具有容错/弹性。毕竟,IIS 站点在部署后第一次点击时需要一秒钟的时间来启动。
对我尚未见过的其他想法或任务持开放态度。
我正在 Azure DevOps 管道中构建 docker 映像,然后我想将它推送到 Azure 容器注册表。注册表已经创建,我已经配置了 DevOps 来使用它,buildAndPushDocker 任务也可以工作。
但是,由于可以对 Docker 构建进行参数化,因此我想将参数传递给它,而我无法使用buildAndPushDocker 任务来实现。所以我决定分两步做,一个是构建,另一个是推动。这边走:
# Docker
# Build and push an image to Azure Container Registry
# https://docs.microsoft.com/azure/devops/pipelines/languages/docker
trigger: none
resources:
- repo: self
variables:
# Container registry service connection established during pipeline creation
dockerRegistryServiceConnection: 'aaaa-aaaa-aaaa-aaaa-aaaaa'
imageRepository: 'ubuntu-qt'
containerRegistry: 'myregistry.azurecr.io'
dockerfilePath: '$(Build.SourcesDirectory)/docker-qt-build/Dockerfile'
# Agent VM image name
vmImageName: 'ubuntu-latest'
stages:
- stage: BuildPush
displayName: Build and push
jobs:
- job: Build
displayName: …Run Code Online (Sandbox Code Playgroud) docker azure-devops azure-pipelines azure-container-registry
我是 Azure DevOps 的新手,想在我的 Azure DevOps 管道中使用环境。如果您使用的是 yaml 编辑器,我已经在网上看到有关如何在 yml 文件 (Azure pipeliens.yml) 中配置环境的示例。但是,我使用的是经典编辑器,我不确定如何将环境的使用集成到管道中,或者我应该编辑什么任务。我将不胜感激任何帮助或知识分享,谢谢!
以下是我在经典编辑器中的当前管道:
这些是我在网上看到的示例,它们能够在管道 yaml 编辑器中使用环境
即使我设置了 System.Debug=True,除了“作业被跳过”之外,我没有得到其他信息。字面意思就是这四个字。
我在 Azure Devops 上创建了一个 YAML-Release 管道,它基本上运行这些作业:
为了测试行为,我首先只运行前两个作业并部署到 TEST。现在我想部署到 STAGE,但似乎只有当我从头开始/创建新版本时,管道才起作用。但是我现在想要做的是将已经存在的版本从 TEST 部署到 STAGE。当我尝试通过重新运行管道来做到这一点时,Azure 只会跳过所有步骤。为什么会这样?如何避免这种情况并重新运行管道?我没有设置任何条件。
编辑附加信息:
管道结构
trigger:
- release/*
variables:
...
resources:
- repo: self
pool:
vmImage: $(vmImageName)
stages:
- stage: build_release
displayName: 'awesome build'
condition: contains(variables['Build.SourceBranchName'], 'release/')
jobs:
- job: build_release
steps:
...
- stage: deploy_test
displayName: 'awesome test deploy'
jobs:
- deployment: deploy_test
environment: 'test'
strategy:
runOnce:
deploy:
steps:
...
- stage: deploy_stage
displayName: 'awesome stage deploy'
jobs:
- deployment: deploy_stage
environment: 'stage'
strategy: …Run Code Online (Sandbox Code Playgroud) azure-pipelines ×10
azure-devops ×8
azure ×4
yaml ×2
azure-pipelines-release-pipeline ×1
docker ×1
pipeline ×1