我们目前使用Codeship Pro将Docker映像推送到AWS上的私有注册表,并将这些映像部署到ECS集群中。
但是,codeship-steps.yml文件包含一个硬编码的区域名,我要推到该区域。例如:
- name: push_production
service: app
type: push
image_name: 123456789012.dkr.ecr.us-east-1.amazonaws.com/project/app-name
image_tag: "{{.Timestamp}}"
tag: master
registry: https://123456789012.dkr.ecr.us-east-1.amazonaws.com
dockercfg_service: aws_generator我希望能够很容易地将其切换到不同的AWS区域。因此,问题是:
可以在代码步骤.file文件中使用变量吗?
我知道一些属性可以使用Codeship提供的少量内置变量(例如用于image_tag属性的image_tag值),但我不知道来自env_file的值是否可以用于步骤的image_name、registry和/或command属性。
我在想象这样的事情..。
codeship-steps.yml
- name: push_production
service: app
type: push
image_name: "123456789012.dkr.ecr.{{.AWS_REGION}}.amazonaws.com/project/app-name"
image_tag: "{{.Timestamp}}"
tag: master
registry: "https://123456789012.dkr.ecr.{{.AWS_REGION}}.amazonaws.com"
dockercfg_service: aws_generator..。但是,这会导致在push步骤上出现“错误解析图像名:无效引用格式”。
我试过不指定image_name中的注册表.
image_name: project/app-name..。但是我得到了一个“构建错误:没有基本的auth凭证”的推步骤。在这一点上,我的想法快用完了。
发布于 2018-10-02 22:08:20
是否有可能在codeship s.yml文件中使用环境变量?
虽然image_tag可以利用Go模板,但image_name、registry或其他任何东西都不是这样。这是一组单独的模板变量,只能由image_tag生成访问。
对于一般的环境变量(CI环境变量或服务信任中定义的环境变量),当通过shell命令传递时,这些值可以在命令步骤中在codeship-steps.yml中使用。例如:
- service: app
command: echo The branch name is: $CI_BRANCH在以下方面的成果:
The branch name is: $CI_BRANCH- service: app
command: /bin/sh -c 'echo The branch name is: $CI_BRANCH'在以下方面的成果:
The branch name is: master至于您的“无基本auth凭据”错误消息,您如何检索访问图像注册表的基本auth凭据可能会出现问题。如果您在MacOS设备上,我建议您查看我们关于如何使用生成码头凭证的文档。
https://stackoverflow.com/questions/52615769
复制相似问题