【问题标题】:Setting enviroment variable in CircleCI using a command使用命令在 CircleCI 中设置环境变量
【发布时间】:2015-10-20 21:44:13
【问题描述】:

我正在尝试通过将环境变量 (SHORT_HASH) 作为命令 ('echo $CIRCLE_SHA1 | cut -c -7') 运行来将其设置为更短的 github 哈希。

所以,我希望将哈希 'b1e5ef8acff51c9218ccbf7152fae1d2049d03c5' 缩短为 'b1e5ef8'

这是我的 circle.yml 的精简版

machine:
  python:
    version: 2.7.3
  services:
    - docker
  environment:
    SHORT_HASH: 'echo $CIRCLE_SHA1 | cut -c -7'
    BUILD_TAG: $CIRCLE_BUILD_NUM-$SHORT_HASH

我查看了 circleci 文档,但没有找到类似的内容。 https://circleci.com/docs/environment-variables

【问题讨论】:

  • 圆圈错误是:发现字符`'' that cannot start any token. (Do not use 用于缩进)。

标签: circleci


【解决方案1】:

代码在 shell 中执行,因此您需要在要评估的短语周围使用反引号或 $() 方法。这个这个:

SHORT_HASH: $(echo $CIRCLE_SHA1 | cut -c -7)

【讨论】:

  • 这似乎不起作用(不再?),请参阅circleci.com/gh/tesch1/OpenVnmrJ/72
  • 我看到你成功了。你不需要像 OVJ_BUILDDIR: $(echo $HOME/OpenVnmrJBuild) 这样的东西,因为你没有(真的)使用任何 shell 命令。我展示的示例需要cut 命令,所以我们必须包装整个东西。
  • 是的,我完全不使用environment: 选项让它工作了。没有工作的是评估 $(...) ,它只是转义了所有特殊字符。也无法做到OVJ_BUILDDIR: $HOME/blah。 ¯\_(ツ)_/¯
【解决方案2】:

一种方法是将导出语句附加到$BASH_ENV 这是一个例子:

version: 2
jobs:
  build:
    docker:
      - image: buildpack-deps:jessie
    working_directory: ~/project
    steps:
      - checkout
      - run: |
        bar_var="foo-bar"
        echo 'export FOO_ENV_VAR="${bar_var}"' >> $BASH_ENV
      - run:
          command: |
            echo $FOO_ENV_VAR

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-30
    • 1970-01-01
    • 2019-08-30
    • 1970-01-01
    • 2015-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多