我有一个内部版本号格式“ $(BuildDefinitionName)-$(Rev:.r)”,可以将其放入可视设计器选项中,并且效果很好。但是,现在我想开始使用新的YAML构建管道,但是我无法弄清楚如何将这种自定义内部版本号格式与“替换令牌”任务一起使用。
我的项目结构是这样的
/AzureStuff/AzureAA/Source/
/AzureStuff/AzureBB/Source/
/AzureStuff/AzureCC/Source/
Run Code Online (Sandbox Code Playgroud)
我的构建定义:
name: $(BuildDefinitionName)
resources:
- repo: self
queue:
name: AzureBuild
trigger:
batch: true
paths:
include:
- /AzureStuff/AzureAA/Source/*
steps:
- task: PublishBuildArtifacts@1
displayName: 'Publish Artifact: AzureAA'
inputs:
PathtoPublish: AzureStuff/AzureAA/Source
ArtifactName: AzureAA
Run Code Online (Sandbox Code Playgroud)
但是,当我将源代码提交到 /AzureStuff/AzureAA/Source/ 时,我的构建不会运行。仅 BB 和 CC 的构建运行,因为它们没有路径过滤器。我应该如何更改路径过滤器才能使 AA 构建正常工作?我计划在每个构建上都有路径过滤器。
我正在使用我的 ARM 模板创建一组 NSG 规则,并尝试更新子网以在嵌套的 ARM 模板中使用这些 NSG 规则。模板部署失败,并显示“正在进行对此或相关资源的另一操作”。我尝试在嵌套模板中使用“dependsOn”功能,但这并不能解决问题。我试图给出 NSG 名称和 resourceId()
"[resourceId('Microsoft.Network/networkSecurityGroups', variables('NSGName'))]",
没有运气的依赖。在尝试更新子网之前,是否有更好的方法来等待 NSG 规则准备就绪?
模板:
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"virtualNetName": {
"type": "string",
},
"subnetName": {
"type": "string",
}
},
"variables": {
"NSGName": parameters('subnetName')
"ResourceGroupName": "[resourceGroup().name]"
},
"resources": [
{
"apiVersion": "2017-11-01",
"type": "Microsoft.Network/networkSecurityGroups",
"name": "[variables('NSGName')]",
"location": "[resourceGroup().location]",
"properties": {
"securityRules": [
{
"name": "Allow-Inbound-RDP",
"properties": {
"protocol": "Tcp",
"sourcePortRange": "*",
"destinationPortRange": "3389",
"sourceAddressPrefix": "192.168.0.1/24",
"destinationAddressPrefix": "*",
"access": "Allow",
"priority": 4050,
"direction": "Inbound"
} …Run Code Online (Sandbox Code Playgroud) 我正在创建 ARM 模板,它接受子网哈希表并创建它们。但是,看起来我需要等待第一个子网准备好才能创建第二个子网等。但我不知道如何依赖复制循环中的前一个子网。我的模板资源目前如下所示:
{
"apiVersion": "2018-06-01",
"type": "Microsoft.Network/virtualNetworks/subnets",
"name": "[concat(parameters('vnetName') , '/' , parameters('subnets').settings[copyIndex()].name)]",
"location": "[variables('location')]",
"copy": {
"name": "subnetLoop",
"count": "[variables('subnetcount')]"
},
"dependsOn": ["[parameters('vnetName')]",
"[resourceId(variables('rgname'), 'Microsoft.Network/virtualNetworks/subnets', parameters('vNetName'), parameters('subnets').settings[copyIndex()].name)]"
],
"properties": {
"addressPrefix": "[parameters('subnets').settings[copyIndex()].addressPrefix]",
}
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为第一个子网无法引用自身。
我有一个相当简单的 ARM 模板,用于创建 vnet、子网和服务端点。当我尝试更改服务端点时,我收到错误“代码”:“InUseSubnetCannotBeDeleted”。说明我的其中一台 VM 正在使用其中一个子网。但是,我不想删除该子网。我只想更新它,我可以通过门户或 powershell 进行的操作就好了。是否需要更改一些开关以使 ARM 模板更新资源而不是从头开始创建它们?
模板。我把它精简到最低限度。首先我用它来创建 vnet 和两个子网,部署一个 VM,然后再次运行部署,我得到子网无法删除:
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"vnetName": {
"type": "string",
"defaultValue": "VNet1",
"metadata": {
"description": "VNet name"
}
},
"vnetAddressPrefix": {
"type": "string",
"defaultValue": "10.0.0.0/16",
"metadata": {
"description": "Address prefix"
}
},
"subnets": {
"type": "object"
}
},
"variables": {
"location": "[resourceGroup().location]",
"subnetcount": "[length(parameters('subnets').settings)]"
},
"resources": [
{
"apiVersion": "2018-06-01",
"type": "Microsoft.Network/virtualNetworks",
"name": "[parameters('vnetName')]",
"location": "[variables('location')]",
"properties": {
"addressSpace": {
"addressPrefixes": ["[parameters('vnetAddressPrefix')]"]
}
},
"resources": …Run Code Online (Sandbox Code Playgroud) 所以我试图用F#为学校项目创建一个纸牌游戏.我来自C#并且在理解F#中的内容方面存在问题.我有类型
Player = {Name : String; Hand : Card list} 代表玩家
然后我有甲板里面有卡片.如何将第一张牌从牌组移到玩家手中?在C#中,我会使用类似的东西removeat[i].
继续与F#一起创建纸牌游戏系列.现在我不得不在卡片列表中添加值.我有
type Player = {Name : String; Hand : Card list}
Run Code Online (Sandbox Code Playgroud)
我能从牌组中取出牌,效果很好.我也可以创建新列表
let player = {Name = "Player"; Hand = List.Empty}
let testlist = List.append player.Hand anotherlist
Run Code Online (Sandbox Code Playgroud)
但我无法弄清楚如何将另一个名单直接添加到玩家手中.
这个问题有点奇怪,但我无法找到它的答案.我创建了一个简单的函数
let answer =
printf "give k or n"
let ret = Console.ReadLine()
if ret = "k" then true
else false
Run Code Online (Sandbox Code Playgroud)
现在,每次我构建项目并运行.exe时,此函数首先运行,然后运行main.我只想在调用时运行它.我怎样才能做到这一点?
我已尝试从此处获得以下答案之一来安装.NET Core运行时环境:是否可以在Raspberry PI上运行.NET Core?
我检查了是否已安装所有必需的软件包,但是当我运行“ dotnet --info”时,我只会遇到分段错误。Strace并未就可能缺少的内容给出好的建议:https://pastebin.com/rBUbiYkV
mmap2(NULL, 180536, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6c9f000
mprotect(0xb6cbb000, 61440, PROT_NONE) = 0
mmap2(0xb6cca000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1b000) = 0xb6cca000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/arm-linux-gnueabihf/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0@h\1\0004\0\0\0"..., 512) = 512
lseek(3, 1231820, SEEK_SET) = 1231820
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 2880) = 2880
lseek(3, 1228284, SEEK_SET) = 1228284
read(3, "A.\0\0\0aeabi\0\1$\0\0\0\0056\0\6\6\10\1\t\1\n\2\22\4\23\1\24"..., 47) = 47
fstat64(3, {st_mode=S_IFREG|0755, st_size=1234700, ...}) = 0 …Run Code Online (Sandbox Code Playgroud) 我可以通过对其进行硬编码来到达工件位置:
$(System.DefaultWorkingDirectory)\_Testing-CI\test\
但是我可以以某种方式从发行版中的某些变量获取源别名和工件名称吗?