CircleCI 插入环境变量
CircleCI insert environment variable
我昨天创建了我的第一个管道,我想用 CIRCLE_BUILD_NUM 环境变量替换 bundle.gradle 文件中的占位符。我发现的唯一方法是编写自己的“sed”命令并在 运行 语句中执行正则表达式。这在起床和 运行ning 时效果很好,因为只有一个变量要替换,但是这种方法显然不会扩展,在路上。是否有 CircleCI feature/orb 或其他方法可以在我的项目中进行更全面的 placeholder/envar 交换?
- run:
name: Increment build id
command: sed "s/_buildNum/${CIRCLE_BUILD_NUM}/g" -i build.gradle
编辑
寻找与 Azure DevOps 类似的 utility/tools/orb/CircleCI 最佳实践(Jenkins 也执行类似的功能):只需将指定文件中的所有占位符替换为与相同名称匹配的环境变量。
https://marketplace.visualstudio.com/items?itemName=qetza.replacetokens
envtpl
工具以各种语言实现了无数。
它允许使用环境变量中设置的值在模板中插入变量。
以下描述的命令在 Rust 中安装一个实现。
commands:
replace-vars-from-env:
description: Replace variables in file from environment variables.
parameters:
filename:
type: string
steps:
- run:
name: Replace variables in build.gradle file
command: |
if ! [ -x /usr/local/bin/envtpl ]; then
curl -L https://github.com/niquola/envtpl/releases/download/0.0.3/envtpl.linux > /usr/local/bin/envtpl
chmod +x /usr/local/bin/envtpl
fi
mv <<parameters.filename>> <<parameters.filename>>.tpl
cat <<parameters.filename>>.tpl | envtpl > <<parameters.filename>>
rm <<parameters.filename>>
并将其用于其他命令或作为您工作的一部分。例如,
executors:
linux:
machine:
image: ubuntu-1604:201903-01
jobs:
build:
executor: linux
steps:
- replace-vars-from-env:
filename: build.gradle
您可以使用 envsubst,它基本上开箱即用。
取决于您的 primary container you can install envsubst on top of alpine/your distro, or use some image that has that already, like datasailors/envsubst.
在那种情况下,您只需要运行配置如下:
- run:
name: Increment build id
command: envsubst < build.gradle.template > build.gradle
并且在您的模板文件中,您可以直接拥有 ${CIRCLE_BUILD_NUM}
以及许多其他变量。
我昨天创建了我的第一个管道,我想用 CIRCLE_BUILD_NUM 环境变量替换 bundle.gradle 文件中的占位符。我发现的唯一方法是编写自己的“sed”命令并在 运行 语句中执行正则表达式。这在起床和 运行ning 时效果很好,因为只有一个变量要替换,但是这种方法显然不会扩展,在路上。是否有 CircleCI feature/orb 或其他方法可以在我的项目中进行更全面的 placeholder/envar 交换?
- run:
name: Increment build id
command: sed "s/_buildNum/${CIRCLE_BUILD_NUM}/g" -i build.gradle
编辑
寻找与 Azure DevOps 类似的 utility/tools/orb/CircleCI 最佳实践(Jenkins 也执行类似的功能):只需将指定文件中的所有占位符替换为与相同名称匹配的环境变量。
https://marketplace.visualstudio.com/items?itemName=qetza.replacetokens
envtpl
工具以各种语言实现了无数。
它允许使用环境变量中设置的值在模板中插入变量。
以下描述的命令在 Rust 中安装一个实现。
commands:
replace-vars-from-env:
description: Replace variables in file from environment variables.
parameters:
filename:
type: string
steps:
- run:
name: Replace variables in build.gradle file
command: |
if ! [ -x /usr/local/bin/envtpl ]; then
curl -L https://github.com/niquola/envtpl/releases/download/0.0.3/envtpl.linux > /usr/local/bin/envtpl
chmod +x /usr/local/bin/envtpl
fi
mv <<parameters.filename>> <<parameters.filename>>.tpl
cat <<parameters.filename>>.tpl | envtpl > <<parameters.filename>>
rm <<parameters.filename>>
并将其用于其他命令或作为您工作的一部分。例如,
executors:
linux:
machine:
image: ubuntu-1604:201903-01
jobs:
build:
executor: linux
steps:
- replace-vars-from-env:
filename: build.gradle
您可以使用 envsubst,它基本上开箱即用。
取决于您的 primary container you can install envsubst on top of alpine/your distro, or use some image that has that already, like datasailors/envsubst.
在那种情况下,您只需要运行配置如下:
- run:
name: Increment build id
command: envsubst < build.gradle.template > build.gradle
并且在您的模板文件中,您可以直接拥有 ${CIRCLE_BUILD_NUM}
以及许多其他变量。