bash - 将变量构建参数传递给 docker build 命令
问题描述
这是码头工人阶段:
- template: ../docker-template.yml
parameters:
buildArgs:
- name: Arg1
value: $(arg1-value)
- name: Arg2
value: $(arg2-value)
码头工人模板.yml
parameters:
buildArgs: []
stages:
- stage: Docker
displayName: Docker Stage
jobs:
- job: Docker
steps:
# - ${{ each arg in parameters.buildArgs }}:
# - bash: |
# buildArgString+=' --build-arg ${{arg.name}}=${{arg.value}}'
# displayName: "Getting Params"
- bash: |
${{ each arg in parameters.buildArgs }}:
buildArgString+=' --build-arg ${{arg.name}}=${{arg.value}}'
echo 'buildstring=$buildArgString'
displayName: 'build string'
- bash: |
cd $(sourceDirectory)
docker build \
-t $(registryName)/$(imageName):$(imageTag) \
$buildArgString \
.
failOnStderr: true
displayName: 'docker build'
这里我想根据传递的参数构造buildArgString,并把它传递给docker build命令,如图所示。当我使用它时,我得到了错误
The directive 'each' is not allowed in this context. Directives are not supported for expressions that are embedded within a string. Directives are only supported when the entire value is an expression.
有什么建议么?
解决方案
如消息所述,您each
在错误的地方使用。尝试使用以下脚本示例:
天蓝色管道.yml:
extends:
template: docker-template.yml
parameters:
buildArgs:
Arg1 : $(arg1-value)
Arg2 : $(arg2-value)
码头模板.yml:
parameters:
- name: buildArgs
type: object
default: []
stages:
- stage: Docker
displayName: Docker Stage
jobs:
- job: Docker
steps:
- ${{ each arg in parameters.buildArgs }}:
- bash: |
echo ${{ arg.key }}
echo ${{ arg.value }}
echo "##vso[task.setvariable variable=buildArgStringOther]--build-arg ${{ arg.key }}=${{ arg.value }}"
displayName: ${{ arg.key }}
- bash: |
echo "buildstring=$(buildArgStringOther)"
displayName: ECHO-${{ arg.key }}
推荐阅读
- javascript - 在 Node js 中通过某些条件导出模块函数
- angular - 我如何添加外部 js 文件以在 angular cli V 7.2.1 上工作
- c++ - 我无法获得基于读取字符数组的算法来工作
- php - 为什么切换到安全文件夹(httpsdocs)会破坏 PHP 文件上传功能
- mongodb - Mongo:在文本索引中忽略 & char
- python - Selenium + Headless Chrome,提交凭据后 YouTube 无法连接到帐户
- php - 从其他设备远程触发事件
- python - 在 Python 中计算不平衡括号。我怎样才能改进我的代码?
- javascript - 用于实例化单个对象的模式,同时保持可测试性
- ios - 在 iOS 模拟器中 React-Native Fetch + 解析 JSON 抓取,但在远程调试中即时