标签: azure-pipelines-yaml

如何在不更改缓存键的情况下删除 Azure Pipeline 缓存

我有一个创建缓存的任务

- task: Cache@2
  inputs:
    key: 'sonarCache'
    path: $(SONAR_CACHE)
    cacheHitVar: CACHE_RESTORED
  displayName: Cache Sonar packages
Run Code Online (Sandbox Code Playgroud)

但是,缓存已损坏。那么我如何运行这个管道,同时告诉它忽略任何现有的缓存?

由于某种原因,我无法更改缓存键sonarCache

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

12
推荐指数
1
解决办法
6484
查看次数

如何允许运行时参数为空字符串?

我刚刚开始使用 Azure Pipelines 中的运行时参数,有些东西我不太明白。考虑这个 Azure Pipelines YAML:

parameters:
- name: deployEnvironment
  displayName: Select your target environment.
  type: string
  default: Build_only
  values:
  - Build_only
  - TST
  - PP
  - P
- name: releaseName
  type: string
  default: ''

steps:
- task: ....
Run Code Online (Sandbox Code Playgroud)

为什么 releaseName 是必需参数?我希望通过指定default: ''将其留空是可选的。文档没有提到是否可以将参数设为可选。

图片

跟进 Kryzstof 的回答,我进一步试验,似乎只包含空格的字符串被解释为空:

似乎这个单个空格被解释为空(我也尝试过多个空格)。

parameters:
- name: myString
  type: string
  default: ' '

steps:
- task: PowerShell@2
  inputs:
    targetType: inline
    script: |
      $MS = $ENV:MS
      Write-Host "myString value is '$MS'"
      Write-Host "Its length is …
Run Code Online (Sandbox Code Playgroud)

azure-devops azure-pipelines azure-pipelines-yaml

11
推荐指数
3
解决办法
5212
查看次数

根据运行时条件在 Azure Pipeline 中执行或不执行模板

我已经运行了 Azure Pipeline。现在,我想仅当运行时某个条件成立时才执行一系列步骤。

例子

steps:
  - template: steps_checkout.yml
  # some more steps here

  - bash: |
    if [ some condition ]; then 
      echo "##vso[task.setVariable variable=rebuild_lib]false"
      echo "Did set rebuild_lib to false"
     fi

  - if eq( variables.rebuild_lib, true) ):
    - template: steps_lib_build.yml
Run Code Online (Sandbox Code Playgroud)

该行if eq( variables.rebuild_lib, true) )不起作用,因为它不是正确的条件语法。我可以用

${{ if eq( parameters.something, true ) }}
Run Code Online (Sandbox Code Playgroud)

但这需要在运行时知道。根据https://learn.microsoft.com/en-us/azure/devops/pipelines/process/expressions?view=azure-devops ,表达式也可以$[ if eq(variables.rebuild_lib), true]在运行时进行评估,但是使用这个,我得到

Unexpected value '$[ if eq( variables.rebuild_lib, true) ) ]'
Run Code Online (Sandbox Code Playgroud)

似乎 yml 不能在运行时以这种方式修改。

那么我如何决定在运行时使用模板呢?

我可以想象将变量作为参数传递给下一个模板adapter.yml。然后,该模板adapter.yml获取变量作为参数,并可以使用${{}}表达式,并再次使用下一个模板steps_lib_build.yml...但仅为此创建模板似乎不知何故...解决方法。

还使用类似的东西

- template: …
Run Code Online (Sandbox Code Playgroud)

azure-pipelines azure-pipelines-yaml

11
推荐指数
1
解决办法
4807
查看次数

有没有办法为 Azure DevOps 管道任务或作业配置重试?

目前,我有一个 OneBranch DevOps 管道,在恢复包时偶尔会失败。通常它会因为一些暂时性错误(例如套接字异常或超时)而失败。重新尝试该作业通常可以解决问题。

有没有办法配置作业或任务重试?

azure-devops azure-pipelines azure-pipelines-yaml

11
推荐指数
2
解决办法
7621
查看次数

是否可以以编程方式取消 Azure DevOps 管道作业?

由于可以在 Azure DevOps 管道中停止单个步骤:

echo "##vso[task.complete result=Succeeded;]DONE"
Run Code Online (Sandbox Code Playgroud)

请参阅:https : //github.com/microsoft/azure-pipelines-tasks/blob/master/docs/authoring/commands.md#task-logging-commands

是否还可以检查条件并根据该条件停止整个管道运行或作业?

附注。我知道,您可以为作业设置条件,但在我的情况下,整个管道是单个作业,由于其他原因,将其拆分为多个作业是没有意义的。

azure azure-devops azure-pipelines azure-pipelines-yaml

10
推荐指数
1
解决办法
8961
查看次数

在服务器上安装多个 Azure DevOps 环境代理

我们有一个开发服务器托管来自多个 Azure DevOps 项目的 Web 服务。为了使用 yaml 部署管道,我们从部署池迁移到环境/资源。与部署池不同,项目之间不能共享环境和资源您可以在这里投票来改变这一点。

我们按如下方式解决这个问题。

  1. 为每个项目创建一个环境。
  2. 对于每个环境,将开发服务器添加为资源。
  3. 在服务器上为每个项目安装一个环境代理。

不幸的是,如果服务器上已经安装了环境代理,这会产生命名冲突。

The service already exists: vstsagent.MyDevOpsAccount..MyServer, it will be replaced
Error: Operation CreateService failed with return code 1072
Run Code Online (Sandbox Code Playgroud)

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

10
推荐指数
1
解决办法
2622
查看次数

DevOps CICD - 并行阶段部署

我有一个新的发布管道包含 75 个阶段,当我创建发布时,每个阶段平均需要 5 分钟才能完成部署过程,然后移至下一个阶段,这意味着部署所有阶段需要近 7 个小时!

如何使所有阶段协同工作(并行)以在近 5 分钟内完成部署。如果这是不可能的,那么如何加快这个过程呢?

devops azure-devops azure-pipelines azure-pipelines-yaml cicd

10
推荐指数
1
解决办法
9822
查看次数

错误:请求的资源需要用户身份验证:在 AzureCLI 任务构建管道中

我无法从 azureCLI 任务触发 azure 管道构建

任务 :

- task: AzureCLI@2
  inputs:
    azureSubscription: 'Free Trial(My subscription)'
    scriptType: 'pscore'
    scriptLocation: 'inlineScript'
    inlineScript: |
      az --version
      echo "Running : az account show"
      az account show
      #export AZURE_DEVOPS_EXT_PAT='mypat'
      $env:AZURE_DEVOPS_EXT_PAT='mypat'
      az pipelines create --name newPipeline --org https://dev.azure.com/AbiNilOrg/ --project azure-devops-kubernetes-terraform --branch master
Run Code Online (Sandbox Code Playgroud)

输出有错误:

Running : az account show
{
  "environmentName": "AzureCloud",
  "homeTenantId": "***",
  "id": "73c1af29-384c-4574-bd88-92d7bb392cfc",
  "isDefault": true,
  "managedByTenants": [],
  "name": "Free Trial",
  "state": "Enabled",
  "tenantId": "***",
  "user": {
    "name": "***",
    "type": "servicePrincipal"
  }
}
WARNING: This …
Run Code Online (Sandbox Code Playgroud)

azure azure-cli azure-devops azure-pipelines azure-pipelines-yaml

10
推荐指数
1
解决办法
1万
查看次数

为什么Azure Pipelines显示“环境不存在或尚未授权使用”?

在 Azure Pipelines YAML 中,可以指定作业运行的环境。

  jobs:
    - deployment: Deploy
      displayName: Deploy
      environment: $(environment)
Run Code Online (Sandbox Code Playgroud)

将新值传递给管道应该会自动在 DevOps 中创建环境。

自动创建的环境

但是,我最近在尝试部署到新环境时遇到了此错误:

作业部署:找不到环境 [环境名称]。该环境不存在或尚未获得使用授权。

我手动创建环境后,管道部署成功。

是否有任何配置或我缺少的东西可以允许自动创建环境?

continuous-deployment azure-pipelines azure-pipelines-yaml cicd

10
推荐指数
2
解决办法
2万
查看次数

错误 NU5049 不支持 SDK 样式项目的 pack 命令

我的解决方案包含 Framework 4.8 项目、.Net Standard 2.1 项目和 .net6 项目。它已经运行了几周,没有出现任何问题。

\n

今天构建管道开始失败并出现错误

\n
\n

##[错误]nuget 命令失败,退出代码(1) 和错误(错误 NU5049:不支持 SDK 样式项目的 pack 命令,请使用\ndotnet pack 或 msbuild -t:pack 来打包此项目。您可以通过将\n\xe2\x80\x98NUGET_ENABLE_LEGACY_CSPROJ_PACK\xe2\x80\x99 环境变量设置为 \xe2\x80\x98true\xe2\x80\x99 来覆盖此行为。\n错误 NU5000: 无法构建包。

\n
\n

我尝试编辑 YAML 将命令从 pack 更改为 dotnet pack,但出现值不接受错误。

\n

错误

\n

[更新]

\n

我试图确切地了解如何更正语法。\n我尝试在任务栏中输入 dotnet 并得到以下内容\n选择

\n

我尝试了 .Net Core 但它插入的命令有 -task:DotNetCoreCLI@2\n 这也不起作用。

\n

dotnet pack 的 YAML 是什么?

\n

我的 YAML 如下

\n
trigger:\n- master\n\npool:\n  vmImage: \'windows-2022\'\n\nvariables:\n  solution: \'**/*.sln\'\n  buildPlatform: \'Any CPU\'\n  buildConfiguration: \'Release\'\n  Major: \'2\'\n  Minor: \'0\'\n …
Run Code Online (Sandbox Code Playgroud)

azure-devops azure-pipelines-yaml

10
推荐指数
2
解决办法
3806
查看次数