我在 Azure 构建管道中使用命令行任务在文本文件中附加上次提交消息的列表。
但是当尝试将管道变量值获取到文本文件时,它会打印奇怪的内容(我的项目中的文件名)而不是变量值。我的语法正确吗?
echo *** Version $(versionnumber) ***>> Release_Notes.txt
Run Code Online (Sandbox Code Playgroud)
代理池是Hosted Ubuntu 1604。
我正在研究发布管道,它将对 App Service Worker 配置执行转换,然后将发布工作人员 + Web 应用程序。
我的输入包是从 MsBuild 发布(来自 ASP.NET 构建管道)生成的 zip 包。
...\PackageTmp\app_data\jobs\triggered\BillingWorker\App.Prod.config
...\PackageTmp\app_data\jobs\triggered\BillingWorker\App.Test.config
...\PackageTmp\app_data\jobs\triggered\BillingWorker\BillingWorker.exe.config
...\PackageTmp\app_data\jobs\triggered\EtlWorker\App.Prod.config
...\PackageTmp\app_data\jobs\triggered\EtlWorker\App.Test.config
...\PackageTmp\app_data\jobs\triggered\EtlWorker\EtlWorker.exe.config
...\PackageTmp\Web.config
...\PackageTmp\Web.Test.config
...\PackageTmp\Web.Prod.config
...\PackageTmp\many other files
Run Code Online (Sandbox Code Playgroud)
的转换Web.config是按Publish to Azure Web App任务正确完成的。但是,worker 配置不会自动转换,因此我添加了一个File Transform具有以下配置的任务:
这一步不起作用,这是输出:
2019-08-14T15:41:01.1435779Z ##[section]Starting: File Transform: config
2019-08-14T15:41:01.1576716Z ==============================================================================
2019-08-14T15:41:01.1576853Z Task : File transform
2019-08-14T15:41:01.1576932Z Description : Replace tokens with variable values in XML or JSON configuration files
2019-08-14T15:41:01.1576994Z Version : 1.156.0
2019-08-14T15:41:01.1600786Z Author : Microsoft Corporation
2019-08-14T15:41:01.1600885Z Help : https://docs.microsoft.com/azure/devops/pipelines/tasks/utility/file-transform …Run Code Online (Sandbox Code Playgroud) 我使用数据分类敏感度标签对 Azure SQL 数据库中的一些列进行了分类。在数据库对应的SSDT项目中,存在如下SQL语句:
ADD SENSITIVITY CLASSIFICATION TO
[dbo].[tablename].[UserName]
WITH (LABEL = 'Confidential', LABEL_ID = 'guid1'
, INFORMATION_TYPE = 'Credentials', INFORMATION_TYPE_ID = 'guid2');
Run Code Online (Sandbox Code Playgroud)
SSDT 项目在 VS 2019 以及 Azure DevOps 构建管道中的构建任务中构建良好。正如预期的那样,我不得不使用 VS 2019(托管)代理,因为以前版本的 SSDT 无法识别该 SQL 语法。
在管道中,该项目的 DACPAC 已成功构建。然后我尝试使用 Azure SQL 数据库部署任务部署该 DACPAC。它使用在托管代理上的 C:\Program Files\Microsoft SQL Server\150\DAC\bin\ 中找到的 SqlPackage.exe 版本。它显然无法识别这些 SQL 语句并且失败并出现以下错误:
元素或注释类 SqlSimpleColumn 不包含属性类 SensitivityLabel。
有没有办法将更新的 SqlPackage.exe 部署到托管构建代理,还是我一直在等待 Microsoft 更新映像?有没有办法将参数传递给 SqlPackage.exe 指示它忽略这些语句?
我在项目中有两个 Azure git 存储库。我需要在单个管道中访问两个存储库。我用我的管道映射了一个存储库。
根据文件:https : //docs.microsoft.com/en-us/azure/devops/pipelines/repos/azure-repos-git?view=azure-devops&tabs=yaml#authorize-access-to-your-repositories
我在管道中使用命令-script: git clone -c http.extraheader="AUTHORIZATION: bearer $(System.AccessToken)" <clone URL>来访问另一个存储库
: Mapping values are not allowed in this context."由于冒号而出现异常(授权:)
所以试着逃避冒号 -script: git clone -c http.extraheader="AUTHORIZATION':' bearer $(System.AccessToken)" <clone URL>
但有错误
Cloning into 'XXXX'...
fatal: unable to access <repository url>'
我可以在本地克隆这个存储库。
我一直在尝试从 azure 管道中的 AWS ECR 中提取服务容器,但我不确定如何从 pipeline.yml 执行“aws ecr get-login”。这是我在 azure pipeline.yml 中的内容,但当然我收到了“没有基本身份验证凭据”错误。任何人都可以说明如何从 azure 管道服务容器中的 AWS ECR 中提取图像吗?
resources:
containers:
- container: sqlDB
image: 1511260612345.dkr.ecr.ap-southeast-2.amazonaws.com/sqlDB:latest
options: --name myDB
env:
ACCEPT_EULA: Y
SA_PASSWORD: myPass123!
services:
sql_db: sqlDB
Run Code Online (Sandbox Code Playgroud)
我也尝试连接到 AWS 端点,但愚蠢的是 azure 管道只允许 docker 注册表和它自己的 azure 容器注册表。
“管道无效。sqlDB 引用的图像注册表的预期 'dockerregistry' 服务连接类型,但为服务连接 aws_test 获得了 AWS。”
我可以使用以下 json 主体更新构建管道中的变量
$body = '
{
"definition": {
"id": 25
},
"parameters": "{\"var\":\"value\"}"
}
'
Run Code Online (Sandbox Code Playgroud)
相同的 json 不适用于 Release pipeline 。有什么方法可以通过发布管道以相同的方式传递变量
azure-devops azure-pipelines azure-pipelines-release-pipeline azure-devops-rest-api
Azure Devops 中的“服务连接”这个东西非常令人困惑。我想创建一个服务连接,以便能够连接到 Azure 并执行诸如通过管道部署到我的应用服务之类的操作。
问题是,我的订阅未列在下拉菜单中,而且我收到了一些无用的错误,例如“无法获取 Json Web 令牌(JWT)”或“无法查询服务连接 API ... AuthorizationFailed”。为了创建服务连接,我需要采取哪些步骤?
我正在尝试将我的 Azure DevOps Pipeline 的内部版本号从 gitversion 设置为我的 MajorMinorPatch 版本。我的 YAML 中有以下内容用于我的管道:
- task: GitVersion@5
inputs:
preferBundledVersion: false
updateAssemblyInfo: true
- task: PowerShell@2
inputs:
targetType: 'inline'
script: |
$versionInfo = '$($GITVERSION_MAJORMINORPATCH)'
Write-Host("##vso[task.setvariable variable=Version;]$versionInfo")
- script: echo %Action%%BuildVersion%
displayName: 'Set build version'
env:
Action: '##vso[build.updatebuildnumber]'
BuildVersion: '$env:Version'
Run Code Online (Sandbox Code Playgroud)
问题是当我运行我的管道时,我得到一个管道名称,如:0.1.0-alpha.70
我不知道为什么我得到 -alpha.70。我知道它们的意思,我想,但我不希望在我的版本字符串中看到它们。当我在本地运行 gitversion 时,我的 MajorMinorPatch 字符串是 0.1.0,这就是我想要看到的。谁能帮我获取这些信息?
编辑:对于任何好奇的人,我在这里包括我的 GitVersion.yml,它几乎是标准配置:
assembly-versioning-scheme: MajorMinorPatch
assembly-file-versioning-scheme: MajorMinorPatchTag
mode: ContinuousDeployment
tag-prefix: '[vV]'
continuous-delivery-fallback-tag: ''
major-version-bump-message: '\+semver:\s?(breaking|major)'
minor-version-bump-message: '\+semver:\s?(feature|minor)'
patch-version-bump-message: '\+semver:\s?(fix|patch)'
no-bump-message: '\+semver:\s?(none|skip)'
legacy-semver-padding: 4
build-metadata-padding: 4
commits-since-version-source-padding: 4
commit-message-incrementing: …Run Code Online (Sandbox Code Playgroud) semantic-versioning gitversion azure-devops azure-pipelines azure-devops-extensions
我尝试连接字符串以构建路径:
$SourceDirectoryPath = $(System.DefaultWorkingDirectory) + "/solution/project/bin/Debug"
$TargetFilePath = $(System.DefaultWorkingDirectory) + "/solution/project/bin/Debug/" + $(Release.ReleaseName) +$(Release.EnvironmentName)
Run Code Online (Sandbox Code Playgroud)
但不是连接字符串,而是第二行出现错误:
d:\a\r1\a :术语“d:\a\r1\a”不被识别为 cmdlet、函数、脚本文件或可运行程序的名称。检查名称的拼写,或者如果包含路径,请验证路径是否正确,然后重试。在 D:\a_temp\9de874c9-3acd-4a19-a4dd-763074d38e40.ps1:2 char:25
哪里显然d:\a\r1\a是 a$(System.DefaultWorkingDirectory)但为什么它会抛出这个错误而不是仅仅连接字符串?
我正在努力完成这个简单的任务:
variables:
myVariable: 'ValueFromVar'
- task: PowerShell@2
inputs:
targetType: 'inline'
script: ${myVariable} # prints empty
- task: PowerShell@2
displayName: Display version of app
inputs:
targetType: 'inline'
script: 'Write-Host "Version of app: ${myVariable}"' # prints empty
- task: Bash@3
inputs:
targetType: 'inline'
script: echo '${myVariable}' # prints ${myVariable}
Run Code Online (Sandbox Code Playgroud)
如何在 azure 管道中打印变量以输出的正确方法是什么?
azure-pipelines ×10
azure-devops ×8
azure ×3
aws-ecr ×1
azure-pipelines-release-pipeline ×1
gitversion ×1
powershell ×1