小编Krz*_*tof的帖子

如何在 Azure Devops 管道上正确使用表达式结果作为布尔值?

我尝试使用or表达式在模板上定义布尔值,如下所示:

parameters:
  - name: A
    default: true
  - name: B
    default: false

stages:
  - template: bacon.yml@template
    parameters:
      booleanParameter: or(eq(${{ parameters.A }}, true), eq(${{ parameters.B}}, true))
Run Code Online (Sandbox Code Playgroud)

在我看来,它应该工作得很好,但我不断收到同样的错误:

The 'booleanParameter' parameter value 'or(eq(True, true), eq(False, true))' is not a valid Boolean.
Run Code Online (Sandbox Code Playgroud)

我尝试了一些语法的小变化,所有这些都会导致相同的错误。

我在这里缺少什么?

azure-devops azure-pipelines azure-pipelines-yaml

7
推荐指数
1
解决办法
6713
查看次数

如何编写 Azure Cosmos COUNT DISTINCT 查询

目标

返回 Cosmos 集合分区内特定文档字段的不同值的计数。

脚步

如果我在 Azure Cosmos 数据库上运行以下查询,

SELECT DISTINCT c.field
FROM c
WHERE c.field = 'abc' AND c.partitionKeyField = '123'
Run Code Online (Sandbox Code Playgroud)

我按预期得到一行,例如以下响应

[
    {
        "field": "abc"
    }
]

Run Code Online (Sandbox Code Playgroud)

但是,如果我随后运行以下查询以尝试通过以下查询计算响应中不同文档的数量

[
    {
        "field": "abc"
    }
]

Run Code Online (Sandbox Code Playgroud)

它返回

[
    6
]
Run Code Online (Sandbox Code Playgroud)

c.field这是设置为 的文档总数,"abc"而不是 的不同值的数量c.field

问题

请您帮助我理解为什么查询返回 的文档数量而不是不同值的数量c.field,以及是否有一个查询将返回 的不同值的数量c.field,即 1?

编辑-PS。我知道这是一个人为的示例,因为根据定义,唯一值的数量c.field始终为 1 - 我故意从实际情况简化了这一点。

distinct azure azure-cosmosdb azure-cosmosdb-sqlapi

6
推荐指数
1
解决办法
4052
查看次数

对 Azure DevOps 中的 Key Vault 秘密变量的动态访问

我有一个包含不同密钥(例如 Key1、Key2、Key3)的 Azure Key Vault。在某些在一个管道任务中动态读取的设置中,我有一个值来说明要使用哪个键(让 KeyName 变量为“Key2”)。如何读取管道中Key2的秘密值?

我尝试过不同的组合,但没有一个对我有用。

测试管道编号 1 - 使用连接到 Key Vault 的组变量(为了更简单,这里的 KeyName 是静态的,但实际上,它是在管道期间通过 powershell 脚本设置的):

jobs:
- job: JobA
  variables:
  - group: KeyVaultGroup #Key vault have secret values "Key1,Key2,Key3..."
  - name: KeyName
    value: Key2
  - name: MyValue
    value: $[ variables[variables.KeyName] ]
  steps:
  - powershell: |
      Write-Host "Var1 $($env:VARENV1)"
      Write-Host "Var2 $($env:VARENV2)"
    env:
      VarEnv1: $(MyValue)
      VarEnv2: $($(KeyName))
Run Code Online (Sandbox Code Playgroud)

结果是:

Var1 
Var2 $(Key2)
Run Code Online (Sandbox Code Playgroud)

MyValue 不起作用,因为在加载密钥保管库变量之前会评估该变量。当在管道期间设置 KeyName 时,它​​也将不起作用(但这可以通过使用单独的作业并使用输出变量来设置 KeyName 来解决 - 就像测试示例 2 中一样)。表达式 $($(KeyName)) 不起作用,因为它不会递归扩展变量(bug?)。

当使用 AzureKeyVault 任务读取 Key …

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

6
推荐指数
1
解决办法
3307
查看次数

在azure devops模板中打印模板参数

是否有一个任务或命令可用于在管道运行时输出 Azure DevOps 模板中的所有参数变量?

我希望管道中的第一个任务打印所有参数,这将有助于发现错误。

有什么建议

azure-devops

6
推荐指数
2
解决办法
4161
查看次数

从 C# 应用程序中的配置文件中检索值不起作用

我遇到了一个问题,当我尝试使用配置文件时,我在这里和其他地方阅读了一些帖子,但我无法解决工作中的问题,

在我的问题中,我添加了配置。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
        <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
            <section name="CA.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
        </sectionGroup>
    </configSections>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
    </startup>
    <userSettings>
        <CA.Properties.Settings>
 
          <appSettings>
            <add key="ab123" value="D:\ab123\Source\ab123.c" />
          </appSettings>

        </CA.Properties.Settings>
    </userSettings>
</configuration>
Run Code Online (Sandbox Code Playgroud)

文件中声明

string ab123 = ConfigurationManager.AppSettings["ab123"];
Run Code Online (Sandbox Code Playgroud)

但是在侧面,我显示的错误是“win32 Exception was unhandled - System can not find the file specified”

System.Diagnostics.Process.Start(ConfigurationManager.AppSettings["ab123"]);
Run Code Online (Sandbox Code Playgroud)

当我运行此代码时,ab123值始终为空!我确定路径是正常的。

我该如何解决?

c# config

5
推荐指数
1
解决办法
5905
查看次数

具有来自同一分支的多个工件的 Azure DevOps 版本

我们有两个构建管道从同一个存储库中的两个不同路径构建。

BuildPipelineA建立/ PathAAppRepo并公布神器ArtifactA

BuildPipelineB建立/ PathBAppRepo并公布神器ArtifactB

然后我们有一个发布管道,它使用这两个工件将应用程序部署到一些 WebApp。

作为分支策略,我们使用自定义 Gitflow 工作流。唯一的区别是我们有两个开发团队,每个团队都有自己的集成分支。所以基本上develop我们没有经典分支,而是有develop,develop-teamAlphadevelop-teamBeta。除了master,release/和之外,触发器设置为所有三个分支,hotfix/因此总共有六个分支是目标。

我想要实现的是建立一个 CI/CD 流程,该流程将始终从匹配(相同)分支中获取工件以进行自动触发的发布创建。

例如,假设存在先前的masterArtifactB

  • 开发人员master/PathA 中的某些文件提交更改

  • BuildPipelineA触发器和构建ArtifactAmaster

  • ReleasePipeline现在应该创建一个使用新版本masterArtifactAmasterArtifactB

即使触发工件来自不同的分支,我也希望发生同样的事情:

  • 开发人员develop/PathB 中的某些文件提交更改

  • BuildPipelineB触发器和构建ArtifactBdevelop

  • ReleasePipeline现在应该创建一个使用新版本developArtifactB和(现有) …

azure-devops

5
推荐指数
1
解决办法
858
查看次数

如何让 MSSQL 服务容器在 Azure DevOps 管道中工作?

描述

我正在azure devops 管道中尝试用于集成数据库测试服务容器

根据这个开源的虚拟 ci cd 管道项目https://dev.azure.com/funktechno/_git/dotnet%20ci%20pipelines。我正在尝试使用 azure devops服务容器进行集成管道测试。我让 postgress 和 mysql 工作。我在使用microsoft sql server 时遇到问题。

.yml 文件

resources:
  containers:
  - container: mssql
    image: mcr.microsoft.com/mssql/server:2017-latest
    ports: 
      # - 1433
      - 1433:1433
    options: -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=yourStrong(!)Password' -e 'MSSQL_PID=Express'

- job: unit_test_db_mssql
  # condition: eq('${{ variables.runDbTests }}', 'true')
  # continueOnError: true
  pool:
    vmImage: 'ubuntu-latest'
  services:
    localhostsqlserver: mssql
  steps:
    - task: UseDotNet@2
      displayName: 'Use .NET Core sdk 2.2'
      inputs:
        packageType: sdk …
Run Code Online (Sandbox Code Playgroud)

sql-server automated-tests docker azure-devops azure-pipelines

5
推荐指数
1
解决办法
1493
查看次数

将 bash 命令输出设置为 azure yml 变量

我正在使用 Azure DevOps,我需要将 bash 命令的返回设置为一些变量,例如我有以下内容:

    variables:
      VERSION: 7.2 # works fine
      FILE_VERSION: ${{cat public/VERSION}} # syntax error
Run Code Online (Sandbox Code Playgroud)

我尝试了一些${{}}没有成功的变体,并且找不到正确的语法,但我认为它一定是可能的。

yaml azure-devops azure-pipelines

5
推荐指数
2
解决办法
9143
查看次数

Azure DevOps Pipeline 全局包安装最佳实践

对于我们的管道,我们在同一台计算机上安装了两个 Windows 自托管代理。下面列出了我们的主要前端管道 .yml。这工作得很好,除了由于某种原因npm install没有得到 nx 或玩笑。为了解决这个问题,我们只需在每个代理的管道中运行一次npm install -g nx即可。npm install -g jest第一次运行后一切正常,我们可以删除额外的安装以加快执行速度。但是,当 nx 或 jest 的新版本发布时,它不会更新,这绝对不是最佳实践。

我猜问题是这些需要全局安装才能工作,所以常规程序npm install无法实现这一点。我包含了我们的一个稍微修改过的版本package.json,它显示了 nx (@nrwl) 和 jest 包含在包中。有谁知道安装 nx 和 jest 的更好方法,而无需在每个管道构建中重新安装它们,并且在首次使用新代理运行后无需删除安装语句?预先感谢您的任何建议,如果我可以提供任何其他信息,请告诉我。


trigger:
- none

pool: 'myPool'
variables:
  npm_config_cache: $(Pipeline.Workspace)/.npm

steps:
- checkout: self
  clean: true

- task: NodeTool@0
  inputs:
    versionSpec: '12.x'
  displayName: 'Install Node.js'

# Install stuff
- task: Npm@1
  timeoutInMinutes: 10
  inputs:
    command: 'install'
    workingDir: '$(System.DefaultWorkingDirectory)/ID_CLIENT'
  displayName: 'npm install'

# Test stuff …
Run Code Online (Sandbox Code Playgroud)

node.js npm azure-devops azure-pipelines

5
推荐指数
1
解决办法
7053
查看次数

具有动态 azureSubscription 的 DevOps 管道 AzureCLI@2

我的 DevOps 管道给了我这个错误:

存在资源授权问题: “管道无效。作业执行Terraform:步骤AzureCLI输入connectedServiceNameARM引用服务连接Azure:$(subscriptionName),无法找到。服务连接不存在或尚未被授权使用。有关授权详细信息,请参阅https://aka.ms/yamlauthz。”

我正在使用的配置是动态查找订阅名称。

我为此使用的步骤是:

- bash: |
    # pull the subscription data
    # ... read data into local variables

    # set the shared variables
    echo "##vso[task.setvariable variable=subscriptionId]${SUBSCRIPTION_ID}"
    echo "##vso[task.setvariable variable=subscriptionName]${SUBSCRIPTION_NAME}"
Run Code Online (Sandbox Code Playgroud)

从那里我尝试通过模板调用 Azure CLI:

- template: execution-cli.yml
  parameters:
    azureSubscriptionId: $(subscriptionId)
    azureSubscriptionName: $(subscriptionName)
Run Code Online (Sandbox Code Playgroud)

在模板内,我的 CLI 步骤使用:

steps:
  - task: AzureCLI@2
    displayName: Test CLI
    inputs:
      azureSubscription: "ARMTest ${{ parameters.azureSubscriptionName }}"
      scriptType: bash
      scriptLocation: inlineScript
      inlineScript: |
        az --version
      addSpnToEnvironment: true
      useGlobalConfig: true
Run Code Online (Sandbox Code Playgroud)

看起来 Pipelines 正在尝试先发制人地检查授权,而没有注意到其中存在变量。我在这里做错了什么,导致 Azure 在错误的时间尝试解决该问题? …

azure-devops azure-pipelines

5
推荐指数
1
解决办法
3330
查看次数