我在我的 .Net Core 项目中添加了Stylecop.Analyzers nuget 包,我在我的项目中抑制了以下警告:
在我的本地 Visual Studio 中出现 0 个错误和 0 个警告后,我的 azure 构建管道仍然显示这些警告,这是其中之一:
##[警告]CSC(0,0): 警告 SA0001: 由于项目配置,XML 注释分析被禁用 [D:\a\1\s\FooRoot\Services\FooService\FooProjectService.csproj]
目前,构建管道并未失败,但我想要一个无警告的构建管道
我正在努力使用 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-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 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)
我尝试了以下方法来转义存储库名称中的空格,但没有成功:
还有其他方法可以逃离我所缺少的空间吗?
我在使用自托管 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) 我不明白有关 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) 我试图从嵌套参数中获取值,如下所示:
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 …
我正在尝试使用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
我们的服务连接证书上周到期,因此我们创建了一个新的服务连接,从那时起,我们的 yaml 管道中的部署阶段将不会运行,UI 报告取消状态,当我进入日志时,我看到的就是这些:
我启用了系统诊断,但没有任何结果。
以前有人遇到过这种情况吗?
我尝试删除并创建服务连接,但没有成功
我有一个 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 和 …
azure-pipelines ×10
azure-devops ×7
azure ×4
c# ×2
yaml ×2
azure-aks ×1
azure-cli ×1
bash ×1
git ×1
kubernetes ×1
msbuild ×1
stylecop ×1