代码之家  ›  专栏  ›  技术社区  ›  matt

是否可以在codeship-steps.yml文件中使用变量?

  •  0
  • matt  · 技术社区  · 6 年前

    我们目前使用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区域。因此,问题是:

    是否可以在codeship-steps.yml文件中使用变量?

    我知道一些属性可以使用代码发布提供的一些内置变量(例如 {{.Timestamp}} 用于的值 image_tag 属性),但我不知道,例如,是否 env_file 可用于 image_name , registry 和/或 command 步骤的属性。

    我在想象这样的事情…

    代码发布-步骤.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
    

    …但这会导致推送步骤上出现“分析图像名称时出错:引用格式无效”。

    我只是尝试不在 图像名

      image_name: project/app-name
    

    …但是我在推送步骤中得到了一个“构建错误:没有基本的认证凭证”。在这一点上,我已经没有想法了。

    1 回复  |  直到 6 年前
        1
  •  2
  •   Drew Kitch    6 年前

    是否可以在codeship-steps.yml文件中使用[environment]变量?

    image_tag 可以利用 Go templates ,情况也不一样 image_name , registry 或者别的什么。这是一组单独的模板化变量,只有 图像标签 世代。

    对于一般环境变量(CI环境变量或在服务配置中定义的环境变量),这些值可用于 codeship-steps.yml 在通过shell命令时执行命令步骤。例如:

    - 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
    

    至于您的“无基本身份验证凭据”错误消息,可能是您检索访问映像注册表的基本身份验证凭据的方式有问题。如果您使用的是MacOS设备,我建议您查看我们的文档,了解如何 generate Docker credentials .

    推荐文章