如何将变量的值从一项工作转移到另一项工作
How to use value of variable from one job to another
Objective: 尝试将作业 A 中的一个步骤变量传递给 CircleCI 中的作业 B,或者如果可能的话以编程方式将环境变量创建到 CircleCI 上下文
到目前为止我做了什么:
我有如下配置,但作为步骤的一部分,我需要在步骤中存储一个字符串值(下面代码段中的 $key)并在下一个作业中使用它。
但我阅读了文档,每个“运行”运行 都是自己的 shell,并且我看到导出到 bash 是一种解决方法,但我使用 windows 执行器...所以它不会是选项
version: 2.1
jobs:
self-hosted-agent-test:
machine: true
resource_class: xxxxxxx/devops-self-hosted-agent
steps:
- checkout
- run:
command: az login --service-principal -u $xxxxxx -p $xxxxx --tenant $xxxx
- run:
command: az group create --location $xxxxx --name $xxxxxxxx
- run:
command: az storage account create --name $xxxxxxxx --resource-group $xxxxxxx --location $xxxxx --sku Standard_LRS
- run:
command: az storage container create --name xxxxxx --account-name $xxxxxxxx
- run:
command: Connect-AzAccount --service-principal -u $xxx -p $xxx --tenant $xxxx
- run:
shell: powershell.exe
command: $key=(Get-AzStorageAccountKey -ResourceGroupName $xxxxxxxxx -AccountName $xxxxxxx)[0].Value
self-hosted-agent-test1:
machine: true
resource_class: xxxxxxx/devops-self-hosted-agent
steps:
- checkout
- run:
name: Storage key persistance check
command: Write-Host $key
workflows:
my-workflow:
jobs:
- self-hosted-agent-test:
context:
- abcd
- self-hosted-agent-test1
你能建议如何实现这个或如何在构建期间创建环境变量(不是通过 UI 手动使用这个 $key 以便我在工作流程的下一个工作中参考它
更新:
我在下面使用过但出现解析错误:
name: "Create Context"
command:
curl --request POST \
--url https://circleci.com/api/v2/context \
--header 'authorization: Basic xxxxxxxxxxxxxxxxxxxxxxxxxx' \
--header 'content-type:' 'application/json' \
--data '{"name":"string","owner":{"id":"string","type":"organization"}}'
错误:
Unable to parse YAML
mapping values are not allowed here
in 'string', line 23, column 36:
--header 'authorization: xxxxxxxxxxxxxxx ...
您可以使用 CircleCI API v2:https://circleci.com/docs/api/v2/#operation/addEnvironmentVariableToContext
Objective: 尝试将作业 A 中的一个步骤变量传递给 CircleCI 中的作业 B,或者如果可能的话以编程方式将环境变量创建到 CircleCI 上下文
到目前为止我做了什么:
我有如下配置,但作为步骤的一部分,我需要在步骤中存储一个字符串值(下面代码段中的 $key)并在下一个作业中使用它。
但我阅读了文档,每个“运行”运行 都是自己的 shell,并且我看到导出到 bash 是一种解决方法,但我使用 windows 执行器...所以它不会是选项
version: 2.1
jobs:
self-hosted-agent-test:
machine: true
resource_class: xxxxxxx/devops-self-hosted-agent
steps:
- checkout
- run:
command: az login --service-principal -u $xxxxxx -p $xxxxx --tenant $xxxx
- run:
command: az group create --location $xxxxx --name $xxxxxxxx
- run:
command: az storage account create --name $xxxxxxxx --resource-group $xxxxxxx --location $xxxxx --sku Standard_LRS
- run:
command: az storage container create --name xxxxxx --account-name $xxxxxxxx
- run:
command: Connect-AzAccount --service-principal -u $xxx -p $xxx --tenant $xxxx
- run:
shell: powershell.exe
command: $key=(Get-AzStorageAccountKey -ResourceGroupName $xxxxxxxxx -AccountName $xxxxxxx)[0].Value
self-hosted-agent-test1:
machine: true
resource_class: xxxxxxx/devops-self-hosted-agent
steps:
- checkout
- run:
name: Storage key persistance check
command: Write-Host $key
workflows:
my-workflow:
jobs:
- self-hosted-agent-test:
context:
- abcd
- self-hosted-agent-test1
你能建议如何实现这个或如何在构建期间创建环境变量(不是通过 UI 手动使用这个 $key 以便我在工作流程的下一个工作中参考它
更新:
我在下面使用过但出现解析错误:
name: "Create Context"
command:
curl --request POST \
--url https://circleci.com/api/v2/context \
--header 'authorization: Basic xxxxxxxxxxxxxxxxxxxxxxxxxx' \
--header 'content-type:' 'application/json' \
--data '{"name":"string","owner":{"id":"string","type":"organization"}}'
错误:
Unable to parse YAML
mapping values are not allowed here
in 'string', line 23, column 36:
--header 'authorization: xxxxxxxxxxxxxxx ...
您可以使用 CircleCI API v2:https://circleci.com/docs/api/v2/#operation/addEnvironmentVariableToContext