有没有办法更改构建管道的超时时间,目前管道时间在 60 分钟后结束。我想把它减少到 30 分钟。
我查看了所有组织设置和项目设置,但在 UI 上找不到任何内容
或者它可以从 YAML 设置吗?
刚接触 Azure DevOps 并将其用于基础设施即代码 Azure 部署。
使用经典发布管道,您可以进入管道,进入阶段并非常快速地启用/禁用该阶段中的任务
您将如何使用 YAML 管道执行此操作?
尝试terraform init在 Azure Pipeline 中作为任务运行时,出现错误说明
生成 C:\hostedtoolcache\windows\terraform\0.12.7\x64\terraform.exe ENOENT
安装看起来不错,因为在安装步骤 ( terraform version)期间验证了基本功能
...
- task: TerraformInstaller@0
displayName: 'Install Terraform 0.12.7'
inputs:
terraformVersion: 0.12.7
- task: TerraformTaskV1@0
displayName: 'Terraform : init'
inputs:
command: 'init'
workingDirectory: '$(System.DefaultWorkingDirectory)/Terraform/terraform'
...
Run Code Online (Sandbox Code Playgroud)
...
- task: TerraformInstaller@0
displayName: 'Install Terraform 0.12.7'
inputs:
terraformVersion: 0.12.7
- task: TerraformTaskV1@0
displayName: 'Terraform : init'
inputs:
command: 'init'
workingDirectory: '$(System.DefaultWorkingDirectory)/Terraform/terraform'
...
Run Code Online (Sandbox Code Playgroud)
...
Verifying Terraform installation...
C:\hostedtoolcache\windows\terraform\0.12.7\x64\terraform.exe version
Terraform v0.12.7
Your version of Terraform …Run Code Online (Sandbox Code Playgroud) 我正在设置构建模板,但无法弄清楚可选对象类型参数的语法。在我的管道中,我像这样调用模板:
stages:
- template: aspnet-core.yml@templates
parameters:
database:
name: 'SomeDatabase'
server: 'SomeServer'
Run Code Online (Sandbox Code Playgroud)
我在模板中定义了这样的参数:
parameters:
database: null
Run Code Online (Sandbox Code Playgroud)
我想在模板中进行这样的检查,以便我可以有条件地运行任务:
- ${{ if ne('${{ parameters.database }}', null) }}:
Run Code Online (Sandbox Code Playgroud)
但是,它不喜欢if语句中的关键字null,我不知道如何表示它没有传入的事实。我在这里有什么选择?
我正在尝试使用 Azure 管道为一个存储库中包含的多个 Java 项目构建 CI/CD。
为此,需要创建一个管道,该管道将使用 Maven@3 任务构建每个项目。问题是,当我们添加新项目时,我希望只构建这个项目,而不是之前的每个项目。我的文件看起来像:
resources:
- repo: self
clean: true
lfs: true
trigger:
branches:
include:
- feature/*
variables:
- group: vars
stages:
- stage: Build
pool:
vmImage: 'image'
jobs:
- job: Build
strategy:
maxParallel: 4
steps:
- task: replacetokens@3
inputs:
targetFiles: 'settings.xml'
- task: Maven@3
inputs:
jdkVersionOption: 1.8
mavenPomFile: 'project1/pom.xml'
options: '-s $(Build.SourcesDirectory)\settings.xml'
goals: 'clean package'
- task: Maven@3
inputs:
jdkVersionOption: 1.8
mavenPomFile: 'project2/pom.xml'
options: '-s $(Build.SourcesDirectory)\settings.xml'
goals: 'clean package'
Run Code Online (Sandbox Code Playgroud)
例如project1在develop中已经alraedy了,所以我不想为它做mvn包,而只是为project2做mvn包,它没有合并并且有功能分支。
现在这个 yml 不起作用,因为 project1 …
在 Azure 管道的文档中,我读到:
每个代理一次只能运行一项作业。要并行运行多个作业,您必须配置多个代理。
在自托管代理上运行管道时,默认情况下,在两次连续运行之间不会清除任何子目录。因此,您可以进行增量构建和部署,前提是已实现任务以利用它。您可以使用作业的工作区设置覆盖此行为。
管道工件提供了一种在管道中的阶段之间或不同管道之间共享文件的方法。它们通常是需要由另一个作业使用或部署的构建过程的输出。
作为初学者,看完这篇,我有一些疑惑:
Pipeline.Workspace?(很明显,在并行作业运行的情况下,它需要多个代理)。可以请一些人帮我清除这些疑虑吗?
您可以使用类似于-${{ each x in y }}:. 根据我的理解,y可以是一个数组。
但是,我发现没有each. 描述其用法示例的唯一页面位于“模板”页面上。
所以我的问题是:我如何去指定一个数组?我知道一种方法是使用-${{ each book in parameters.books }}:然后传入books类似的“列表” :
- template: template.yml
parameters:
books:
- book1
- book2
- book3
Run Code Online (Sandbox Code Playgroud)
但是,我还想将数组定义为变量:
variables:
books:
- book1
- book2
- book3
Run Code Online (Sandbox Code Playgroud)
但是,为此,ADO 会抛出错误 A sequence was not expected。
有没有办法像这样定义一个数组?我想我会将这些称为-${{ each book in variables.books }}:如果没有,还有其他方法可以指定列表吗?
我正在做一个 CMake 项目。对于 CI,我决定使用 Azure Pipelines。但是,我在测试阶段在 MacOS 上遇到了一个小问题。问题是 MacOS 无法找到测试可执行文件,即使它在那里。
早些时候,我的项目没有正确构建。但是现在整个管道运行成功(感谢 Stack Overflow 社区),除了 MacOS 上的小故障。我已经更新了我的问题,现在它说明了问题是什么以及我如何修复它,以便它可能对像我这样的 CI 世界的新手有所帮助。
编辑1:
早些时候我的 CMake 任务没有触发构建过程。这是因为我没有为 CMake 提供任何命令行参数。我所做的就是这样:
- task: CMake@1
displayName: Generate CMake Cache
inputs:
workingDirectory: build
Run Code Online (Sandbox Code Playgroud)
我认为 CMake 任务会自动驱动构建过程,因为文档中没有明确指定该任务实际执行的操作。除了打印 CMake 用法之外,这没有任何作用。然后我发现我们必须使用适当的命令行参数运行 CMake 任务两次(一次用于项目配置,然后用于实际构建)。
编辑2:
这是我更新的 AzurePipelines.yml 文件
stages:
- stage: Build
displayName: Build
jobs:
- job: RunCMakeTask
displayName: Run CMake Task
strategy:
matrix:
LinuxDebug:
OS: 'Linux'
imageName: 'ubuntu-latest'
BuildConfiguration: 'Debug'
LinuxRelease:
OS: 'Linux'
imageName: 'ubuntu-latest'
BuildConfiguration: 'RelWithDebInfo' …Run Code Online (Sandbox Code Playgroud) 我有以下 Azure Pipelines 作业:
- stage: Production
dependsOn: Test
jobs:
- job: Publish
pool:
vmImage: 'Ubuntu 16.04'
steps:
- task: UseDotNet@2
displayName: Setup
inputs:
packageType: sdk
version: 3.1.x
- task: DotNetCoreCLI@2
displayName: Publish
inputs:
command: publish
publishWebProjects: false
projects: 'src/**/*.csproj'
arguments: '--configuration production --output $(Build.ArtifactStagingDirectory)'
zipAfterPublish: true
- task: PublishPipelineArtifact@0
displayName: Export
inputs:
artifactName: Production
targetPath: '$(Build.ArtifactStagingDirectory)'
- deployment: Deploy
dependsOn: Publish
pool:
vmImage: Ubuntu-16.04
environment: Production
strategy:
runOnce:
deploy:
steps:
- task: DownloadPipelineArtifact@1
displayName: Import
inputs:
artifactName: Production
- …Run Code Online (Sandbox Code Playgroud) 我有针对特定环境(dev、qa、uat)的特定配置文件和另一个根 web.config。部署的代码读取 web.config。所以我一直在尝试复制内容或重命名 Azure Pipelines 中的文件。
- task: CopyFiles@2
displayName: 'Copy Specific Config'
inputs:
SourceFolder: 'Client.WebApi.Core/Configs/Web.QA.config'
TargetFolder: '$(build.artifactstagingdirectory)\MainWebApi'
- task: CmdLine@2
inputs:
script: rename $(build.artifactstagingdirectory)\MainWebApi\Web.QA.config
$(build.artifactstagingdirectory)\MainWebApi\web.config
Run Code Online (Sandbox Code Playgroud)
另一种方法:
- task: PowerShell@2
inputs:
targetType: 'inline'
script: |
copy-item -path Client.WebApi.Core/Configs/Web.QA.Config -destination Client.WebApi.Core/web.config
TargetFolder: '$(build.artifactstagingdirectory)/MainWebApi'
Run Code Online (Sandbox Code Playgroud)
我尝试了各种组合,例如重命名然后复制和复制然后重命名,将内容复制到新的 web.config 文件等究竟应该使用什么?