标签: azure-pipelines

Azure 构建管道中出现 C# 抑制的警告

我在我的 .Net Core 项目中添加了Stylecop.Analyzers nuget 包,我在我的项目中抑制了以下警告:

在此输入图像描述

在我的本地 Visual Studio 中出现 0 个错误和 0 个警告后,我的 azure 构建管道仍然显示这些警告,这是其中之一:

##[警告]CSC(0,0): 警告 SA0001: 由于项目配置,XML 注释分析被禁用 [D:\a\1\s\FooRoot\Services\FooService\FooProjectService.csproj]

目前,构建管道并未失败,但我想要一个无警告的构建管道

编辑:我的管道看起来像这样: 在此输入图像描述

c# stylecop suppress-warnings azure-pipelines

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

从 AzureDevOps 替换令牌在应用程序设置中设置 JSON 密钥

我正在努力使用 Azure Devops 中的替换令牌任务将变量发送到 Blazor 服务器应用程序中的 appsettings.json 文件。

在 中appsettings,我有这个:

{
  "version": "#{versionNumber}#"
}
Run Code Online (Sandbox Code Playgroud)

在 Azure DevOps 中,我设置了以下变量:

versionNumber: '$(version.Major).$(version.Minor).$(version.Revision)'
Run Code Online (Sandbox Code Playgroud)

我的 ReplaceToken 任务是:

- task: replaceToken@3
  displayName: "Replacing version in appsettings"
  inputs:
    targetFiles: '**/*.appsettings.json'
    encoding: 'auto'
    writeBOM: true
    actionOnMissing: 'warn'
    keepToken: false
    tokenPrefix: '#{'
    tokenSuffix: '}#'
    useLegacyPattern: false
    enableTelemetry: true,
    verbosity: detailed
Run Code Online (Sandbox Code Playgroud)

但是,在构建管道中我看到:

replaced 0 tokens out of 0 in 0 file(s) in 1.17 seconds
Run Code Online (Sandbox Code Playgroud)

对我在这里做错了什么有帮助吗?

azure azure-devops azure-pipelines

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

新映像未部署到 AKS

我已经将初始的图像拆分出来azure-pipelines.yml以使用模板、迭代等...无论出于何种原因,尽管使用了latest标签和/或imagePullPolicy: Always.

另外,我基本上有两个PR管道Release

  • PR当提交 PR 请求合并到 时触发production。它会自动触发此管道来运行单元测试、构建 Docker 映像、进行集成测试等,然后如果一切都通过,则将映像推送到 ACR。
  • PR管道通过并且 PR 获得批准时,它会被合并到其中,production然后触发Release管道。

这是我的部署清单之一的示例k8s(管道说明unchanged何时应用这些清单):

apiVersion: apps/v1
kind: Deployment
metadata:
  name: admin-v2-deployment-prod
  namespace: prod
spec:
  replicas: 3
  selector:
    matchLabels:
      component: admin-v2
  template:
    metadata:
      labels:
        component: admin-v2
    spec:
      containers:
        - name: admin-v2
          imagePullPolicy: Always
          image: appacr.azurecr.io/app-admin-v2:latest
          ports:
            - containerPort: 4001
---
apiVersion: v1
kind: Service
metadata:
  name: admin-v2-cluster-ip-service-prod
  namespace: …
Run Code Online (Sandbox Code Playgroud)

azure kubernetes azure-devops azure-pipelines azure-aks

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

在 azure-pipelines.yml 中为 dotnetpublish 命令转义空格

当在 Azure Pipelines 中执行命令时,我收到错误消息:“ MSBUILD : error MSB1008: Only one project can be specified ”,dotnet publish大概是因为我的存储库名称中包含空格,但我无权更改存储库名称。

azure-pipelines.yml 的部分包含以下dotnet publish命令:

- task: DotNetCoreCLI@2
  displayName: 'dotnet publish'
  inputs:
    command: publish
    publishWebProjects: false
    projects: '**/My App Backend/*.csproj'
    arguments: '--configuration $(buildConfiguration) --output $(Build.
    ArtifactStagingDirectory)'

- task: PublishBuildArtifacts@1
  displayName: 'publish artifacts'
Run Code Online (Sandbox Code Playgroud)

我尝试了以下方法来转义存储库名称中的空格,但没有成功:

  • 将空格替换为 %20。
  • 在开头和结尾处使用“\”封装文件路径。

还有其他方法可以逃离我所缺少的空间吗?

c# msbuild azure azure-pipelines

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

无法找到可执行文件:“bash”错误:使用 Bash@3 Azure DevOps 任务的内联脚本

我在使用自托管 Windows 代理时遇到以下错误。

##[错误]无法找到可执行文件:“bash”。请验证文件路径是否存在,或者是否可以在 PATH 环境变量指定的目录中找到该文件。还要验证该文件是否具有有效的可执行文件扩展名。

filename这是我的管道 - 任务目标是从整体中获取单独的内容filePath并将其用于filename进一步的任务。

trigger:
 - master

parameters:
 project: './test/abc/UnitTest.proj'

pool: self-hosted-windows

steps:
 - task: Bash@3
   inputs:
     targetType: 'inline'
     script: |
       input="${Parameters.project}"
       file_name_with_ext="${input##*/}"
       file_only="${file_name%.*}"
       echo "File : $file_only"
Run Code Online (Sandbox Code Playgroud)

bash yaml azure-devops azure-pipelines

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

在 Azure DevOps 管道中:推送标签有效,但推送无效

我不明白有关 Git 身份验证如何在 Azure Devops Yaml 管道中工作的一点。

我做什么

我运行这个管道:

resources:   repositories:
    - repository: TutoDeployin Tuto-DeployBuild repository
      ref: main
      type: git
      name: Tuto-Deploy

jobs:  
- job: Build

  steps:
    - checkout: self
      clean: true
      persistCredentials: true
    - checkout: TutoDeploy
      clean: true
      persistCredentials: true

    - task: Powershell@2
      inputs:
        pwsh: true
        filePath: '.\tuto-deploybuild\CI\build.ps1'
        arguments: "-repositoryName tuto-deploy"
Run Code Online (Sandbox Code Playgroud)

它本质上运行位于 Tuto-Deploy 中的 PowerShell 脚本:

Param(
    $repositoryName
)

cd "$($env:Build_SourcesDirectory)/$repositoryName"


$version = @{
    numero = 0
    date = Get-Date
}

$path = "$env:Build_SourcesDirectory" + "/$repositoryName/version"
$versionFile = "$path/version.json" …
Run Code Online (Sandbox Code Playgroud)

git azure-devops azure-pipelines

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

如何从嵌套对象中检索值?

我试图从嵌套参数中获取值,如下所示:

parameters:
  - name: myObject
    type: object
    default:
      foo: FOO
      things:
        - one
      nested:
        one: apple
        count: 3
Run Code Online (Sandbox Code Playgroud)

所以我期望写这样的东西${{ parameters.myObject.foo }}${{ parameters.myObject.nested.one }}检索一个值。

还有一个循环遍历列表对象的示例,如下所示:

- name: listOfStrings
  type: object
  default:
  - one
  - two

steps:
- ${{ each value in parameters.listOfStrings }}:
  - script: echo ${{ value }}
Run Code Online (Sandbox Code Playgroud)

这就是为什么我试图以这种方式获得价值,但它对我来说也不起作用:

- name: myObject
  type: object
  default:
    foo: FOO
    nested:
      one: apple

steps:
- ${{ each value in parameters.myObject }}:
  - script: echo ${{ value.foo }}
Run Code Online (Sandbox Code Playgroud)

不幸的是,微软没有在文档中提供示例https://learn.microsoft.com/en-us/azure/devops/pipelines/process/templates?view=azure-devops …

azure-devops azure-pipelines azure-pipelines-yaml

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

从 azure devops 管道更新变量组

我正在尝试使用az pipelines管道中的 cli 更新变量组中的变量,我创建了一个 PAT 并将其传递到管道,其工作正常。但我使用默认的,例如$(System.AccessToken)它能够列出变量组中的变量,但无法更新变量组。其曰

错误:您无权对变量组执行此操作。变量组管理员应将您添加到管理员角色。##[错误]脚本失败,退出代码:1

经过一番搜索,我发现我需要将 Project Collection Build Service ( name ) 添加为变量组中的管理员,然后重试。我已经添加了这一点,但我仍然遇到同样的错误。有什么建议么?

我使用的是经典管道,这是从管道导出的任务。

steps
- task: AzureCLI@2
  displayName: 'Azure CLI '
  inputs:
    azureSubscription: 'sc'
    scriptType: pscore
    scriptLocation: inlineScript
    inlineScript: |
     az extension add --name azure-devops
     az pipelines variable-group variable list --group-id id --org "orgname" --project "projectname"
     az pipelines variable-group variable update --group-id id --name apim-service-name --value $(str_tf_module_containername) --org "orgname" --project "projectname"
  env:
    AZURE_DEVOPS_EXT_PAT: $(System.AccessToken)
Run Code Online (Sandbox Code Playgroud)

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

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

Azure DevOps Pipelines - 部署已取消

我们的服务连接证书上周到期,因此我们创建了一个新的服务连接,从那时起,我们的 yaml 管道中的部署阶段将不会运行,UI 报告取消状态,当我进入日志时,我看到的就是这些:

在此输入图像描述

我启用了系统诊断,但没有任何结果。

以前有人遇到过这种情况吗?

我尝试删除并创建服务连接,但没有成功

azure-devops azure-pipelines azure-yaml-pipelines

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

Azure Pipeline:使作业在同一池中的同一代理上运行

我有一个 YAML 脚本,如下所示:

jobs:
- job: UnixBuild
  pool: 
    name: BuildMachinesUnix
  steps:
  - bash: echo "Build Unix"

- job: WinBuild
  pool: 
    name: BuildMachinesWindows
  steps:
  - bash: echo "Build Windows"

- job: UnixRelease
  dependsOn:
    - UnixBuild
    - WinBuild
  condition: and(succeeded('UnixBuild'), succeeded('WinBuild'))
  pool: 
    name: BuildMachinesUnix
  steps:
  - bash: echo "Release on Unix"

- job: WinRelease
  dependsOn:
    - UnixBuild
    - WinBuild
  condition: and(succeeded('UnixBuild'), succeeded('WinBuild'))
  pool: 
    name: BuildMachinesWindows
  steps:
  - bash: echo "Release on Windows"

Run Code Online (Sandbox Code Playgroud)

每个池都有多个代理,我希望承担 UnixBuild 作业的代理也能处理 UnixRelease 作业,因为该版本的所有文件都在那里,这样我就不需要在发布步骤中重建它,并且WindowsBuild 也是如此

这样的事情可能吗?如果可能的话,怎么可能?

如果没有,对于如何仅在 Unix 和 …

yaml azure-pipelines azure-pipelines-yaml

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