首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有可能在codeship s.yml文件中使用变量?

是否有可能在codeship s.yml文件中使用变量?
EN

Stack Overflow用户
提问于 2018-10-02 20:15:18
回答 1查看 621关注 0票数 0

我们目前使用Codeship Pro将Docker映像推送到AWS上的私有注册表,并将这些映像部署到ECS集群中。

但是,codeship-steps.yml文件包含一个硬编码的区域名,我要推到该区域。例如:

代码语言:javascript
复制
- 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_nameregistry和/或command属性。

我在想象这样的事情..。

codeship-steps.yml

代码语言:javascript
复制
- 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中的注册表.

代码语言:javascript
复制
  image_name: project/app-name

..。但是我得到了一个“构建错误:没有基本的auth凭证”的推步骤。在这一点上,我的想法快用完了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-02 22:08:20

是否有可能在codeship s.yml文件中使用环境变量?

虽然image_tag可以利用Go模板,但image_nameregistry或其他任何东西都不是这样。这是一组单独的模板变量,只能由image_tag生成访问。

对于一般的环境变量(CI环境变量或服务信任中定义的环境变量),当通过shell命令传递时,这些值可以在命令步骤中在codeship-steps.yml中使用。例如:

代码语言:javascript
复制
- service: app
  command: echo The branch name is: $CI_BRANCH

在以下方面的成果:

代码语言:javascript
复制
The branch name is: $CI_BRANCH
代码语言:javascript
复制
- service: app
  command: /bin/sh -c 'echo The branch name is: $CI_BRANCH'

在以下方面的成果:

代码语言:javascript
复制
The branch name is: master

至于您的“无基本auth凭据”错误消息,您如何检索访问图像注册表的基本auth凭据可能会出现问题。如果您在MacOS设备上,我建议您查看我们关于如何使用生成码头凭证的文档。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52615769

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档