Azure Devops 提供了两个变量,其中包含有关当前 git 分支名称的信息:$(Build.SourceBranchName)和$(Build.SourceBranch).
虽然SourceBranch包含对分支的完整引用,但SourceBranchName预计仅包含短分支名称。
不幸的是,当分支名称包含斜杠 ( /)时,行为有点出乎意料:
+---------------------------------------------------------------------------------------------------------+
| Situation | Git branch name | Build.SourceBranch | Build.SourceBranchName |
|---------------------------------------------------------------------------------------------------------|
| branch name contains no slash | mybranch | refs/heads/mybranch | mybranch |
| branch name contains slash | release/mybranch | refs/heads/release/mybranch | mybranch |
+---------------------------------------------------------------------------------------------------------+
Run Code Online (Sandbox Code Playgroud)
斜线之前的分支名称部分不被视为分支名称的一部分。我的同事指出,这是Azure Devops 记录在案的行为:
Git repo 分支或拉取请求:引用中的最后一个路径段。例如,在 refs/heads/master 这个值是 master。在 refs/heads/feature/tools 这个值是 tools。
我不确定这种行为是否特别有用:我想签出分支,并且需要分支名称包含斜杠。此外,如果删除斜线之前的部分,则可能会混淆实际路径,因为名称可能不明确。
我需要包含斜杠的分支名称。有什么简单的方法可以得到吗?为了安全起见,我是否总是必须与完整的裁判一起工作?
我想为几个开发和生产环境使用相同的terraform模板.
我的方法:据我所知,资源名称必须是唯一的,terraform在内部存储资源的状态.因此,我尝试使用变量作为资源名称 - 但似乎不支持.我收到一条错误消息:
$ terraform plan
var.env1
Enter a value: abc
Error asking for user input: Error parsing address 'aws_sqs_queue.SqsIntegrationOrderIn${var.env1}': invalid resource address "aws_sqs_queue.SqsIntegrationOrderIn${var.env1}"
Run Code Online (Sandbox Code Playgroud)
我的terraform模板:
variable "env1" {}
provider "aws" {
region = "ap-southeast-2"
}
resource "aws_sqs_queue" "SqsIntegrationOrderIn${var.env1}" {
name = "Integration_Order_In__${var.env1}"
message_retention_seconds = 86400
receive_wait_time_seconds = 5
}
Run Code Online (Sandbox Code Playgroud)
我认为,无论是我的方法是错误还是语法.有任何想法吗?
如何允许 Azure 中的 Kubernetes 集群通过 terraform 与 Azure 容器注册表通信?
我想从我的 Azure 容器注册表加载自定义图像。不幸的是,当 Kubernetes 应该从 ACR 下载图像时,我遇到了权限错误。
在我通过 az cli 将 acr 附加到 aks 后,一切正常:
az aks update -n myAKSCluster -g myResourceGroup --attach-acr <acrName>
这是我的地形配置;我已经剥离了一些其他的东西。它本身就起作用。
terraform {
backend "azurerm" {
resource_group_name = "tf-state"
storage_account_name = "devopstfstate"
container_name = "tfstatetest"
key = "prod.terraform.tfstatetest"
}
}
provider "azurerm" {
}
provider "azuread" {
}
provider "random" {
}
# define the password
resource "random_string" …Run Code Online (Sandbox Code Playgroud) 我的 Azure DevOps 管道中的一个步骤需要在代理上安装 Java。
我在这里找到了“Java Tool Installer”任务:
然而,这看起来更像是一个 SDK 安装程序。我只需要一个Java运行环境。我正在寻找类似Python安装程序任务的东西:
steps:
- task: UsePythonVersion@0
inputs:
versionSpec: '3.6'
Run Code Online (Sandbox Code Playgroud)
Java 有什么东西可以接近这个吗?
我正在运行以下命令来输出到文本,但输出是水平的。有没有办法使这个输出垂直,每行一个 id ?我这样做是为了描述工作正常的实例,我不确定这种情况有什么不同。我的原因是,就我而言,它更容易使用。当然如果可以的话。
\n\n和输出是垂直的,但table不是。很好奇这是为什么。JSONtext
aws ec2 describe-network-interfaces \xe2\x80\x93query \'NetworkInterfaces[].NetworkInterfaceId\' --filters "Name=status, Values=available" --output text
电流输出:
\n\neni-1 eni-2 eni-3\nRun Code Online (Sandbox Code Playgroud)\n\n期望的输出:
\n\n eni-1\n eni-2\n eni-3\nRun Code Online (Sandbox Code Playgroud)\n 我有 json 代码,需要通过属性DNSName的值对其进行过滤。过滤器必须不区分大小写。
我怎样才能做到这一点?有没有可能用jq解决它?
这是我创建json代码的方式:
aws elbv2 describe-load-balancers --region=us-west-2 | jq
Run Code Online (Sandbox Code Playgroud)
我未过滤的源 json 代码如下所示:
{
"LoadBalancers": [
{
"IpAddressType": "ipv4",
"VpcId": "vpc-abcdabcd",
"LoadBalancerArn": "arn:aws:elasticloadbalancing:us-west-2:000000000000:loadbalancer/app/MY-LB1/a00000000000000a",
"State": {
"Code": "active"
},
"DNSName": "MY-LB1-123454321.us-west-2.elb.amazonaws.com",
"SecurityGroups": [
"sg-00100100",
"sg-01001000",
"sg-10010001"
],
"LoadBalancerName": "MY-LB1",
"CreatedTime": "2018-01-01T00:00:00.000Z",
"Scheme": "internet-facing",
"Type": "application",
"CanonicalHostedZoneId": "ZZZZZZZZZZZZZ",
"AvailabilityZones": [
{
"SubnetId": "subnet-17171717",
"ZoneName": "us-west-2a"
},
{
"SubnetId": "subnet-27272727",
"ZoneName": "us-west-2c"
},
{
"SubnetId": "subnet-37373737",
"ZoneName": "us-west-2b"
}
]
},
{
"IpAddressType": "ipv4",
"VpcId": "vpc-abcdabcd",
"LoadBalancerArn": "arn:aws:elasticloadbalancing:us-west-2:000000000000:loadbalancer/app/MY-LB2/b00000000000000b", …Run Code Online (Sandbox Code Playgroud) 我有一个在本地计算机上手动创建的文件。我在多个 Azure DevOps 管道中需要它。
我想将它用作“神器”。
我知道如何从 Azure DevOps 管道中发布工件,但我只想从我的计算机上传这个特定文件。我该怎么做?
我正在使用Terraform进行一些基础架构部署:
data "aws_instance" "ec2_my_admin_instance" {
filter {
name = "tag:TfServerType"
values = ["myAdmin"]
}
}
output "theId" {
value = "${data.aws_instance.ec2_my_admin_instance.instance_id}"
}
output "type" {
value = "${data.aws_instance.ec2_my_admin_instance.instance_type}"
}
output "placement_group" {
value = "${data.aws_instance.ec2_my_admin_instance.placement_group}"
}
output "availability_zone" {
value = "${data.aws_instance.ec2_my_admin_instance.availability_zone}"
}
output "arn" {
value = "${data.aws_instance.ec2_my_admin_instance.arn}"
}
Run Code Online (Sandbox Code Playgroud)
但是,未显示最重要的值(id,arn):
Outputs:
availability_zone = ap-southeast-2b
type = m4.large
Run Code Online (Sandbox Code Playgroud)
我有想念吗?
我在将文件从 kubernetes pod 容器(Windows节点)复制到 Windows 10 上的本地 linux 子系统时遇到了一些困难:
t@11DT:/mnt/c/dev/auto$ kubectl cp a8677:c:\testlog2.txt .
tar: Removing leading drive letter from member names
error: tar contents corrupted
t@11DT:/mnt/c/dev/auto$ kubectl cp a8677:/c/testlog2.txt ./
tar: /c/testlog2.txt: Couldn't find file: No such file or directory
tar: Error exit delayed from previous errors.
t@11DT:/mnt/c/dev/auto$ kubectl cp a8677:c:\testlog2.txt ./
tar: Removing leading drive letter from member names
error: tar contents corrupted
t@11DT:/mnt/c/dev/auto$ kubectl cp a8677:c:/testlog2.txt ./
tar: Removing leading drive letter from member names …Run Code Online (Sandbox Code Playgroud) 我的目标是为 python 轮发布提供正常版本号,例如1.0.0,并为特定分支提供特定于分支的版本号,例如1.0.0.dev1+hg.5.b11e5e6f0b0b.
不幸的是,Azure DevOps 将大多数版本号视为无效而拒绝,并显示以下两条错误消息之一:
HTTPError: 400 Client Error: Bad Request - The package version provided is invalid. Versions should conform to the format described in PEP 440 and be under 128 characters. (DevOps Activity ID: 0000000-AAAA-2222-3333-11111111111) for url: https://pkgs.dev.azure.com/sample/_packaging/sample_libraries/pypi/upload
for version numbers like:
version='1.0.0.1.dev', ok
version='1.0.0.1.dev1', ok
version='1.0.0.1.dev_2', ok
version='1.0.0.1.dev_2_b', FAIL
version='1.0.0.1.dev_2-3', FAIL
version='1.0.0.1.dev_2.3', FAIL
version='1.0.0.1.dev_2.3', FAIL
version='1.0.0.d1.dev', FAIL
version='1.0.0.d.dev', FAIL
version='1.0.0.1d1.dev', FAIL
version='1.0.0.1d1.dev1', FAIL
version='1.0.0.1.dev1-3', FAIL
version='1.0.0.1.dev1.3', FAIL
version='1.0.0.1.dev1.3', FAIL
version='1.0.0.1.1.3', ok
version='1.0.0.1.1-3.3', …Run Code Online (Sandbox Code Playgroud) azure-devops ×4
terraform ×3
amazon-ec2 ×2
amazon-elb ×1
artifact ×1
azure ×1
azure-acr ×1
azure-aks ×1
bash ×1
git ×1
java ×1
jq ×1
kubernetes ×1
python ×1
python-wheel ×1
windows ×1