首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何声明一个shell常量,让Jenkins执行shell构建配置?

如何声明一个shell常量,让Jenkins执行shell构建配置?
EN

Stack Overflow用户
提问于 2016-02-04 09:11:36
回答 2查看 793关注 0票数 0

我在Jenkins作业配置中的"execute shell“条目中运行以下命令。

代码语言:javascript
运行
复制
AWS_ACCESS_KEY_ID=XXX AWS_SECRET_ACCESS_KEY=XXX CASS_HOSTNAME=XXX DB_HOSTNAME=XXX DB_PASSWORD=XXX DB_USERNAME=XXX EMAIL_REGION=XXX RED_HOSTNAME=XXXX RED_PORT=XXX npm run

我如何为这些参数创建一个变量?我试图声明一个普通的shell常量,例如:

代码语言:javascript
运行
复制
readonly parameters="AWS_ACCESS_KEY_ID=XXX AWS_SECRET_ACCESS_KEY=XXX .."
$parameters npm run init_test_tenant

但是我得到了以下错误

/tmp/hudson6912171417213995775.sh: 4: /tmp/hudson6912171717213995775.sh: AWS_ACCESS_KEY_ID=XXX: not

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-02-04 09:40:37

为了避免将eval放在所有事物和open a hole in your code前面,您可以使用一个技巧:

代码语言:javascript
运行
复制
export $parameters
npm run init_test_tenant

与问题中的尝试不同:所有变量对npm都是可见的,在此之后执行的所有其他命令都是可见的,而VAR=value command语法允许VAR只对command可见。

票数 2
EN

Stack Overflow用户

发布于 2016-02-04 09:40:27

env前缀

代码语言:javascript
运行
复制
readonly parameters="AWS_ACCESS_KEY_ID=XXX AWS_SECRET_ACCESS_KEY=XXX .."
env $parameters npm run init_test_tenant

此外,如果您的nodejs程序中不需要任何其他环境变量,您可以将-i选项添加到env中,以便为npm提供一个干净的环境,但是您必须通过完整路径(例如:/usr/bin/npm )和可能在nodejs程序中运行的所有其他程序来解决npm问题:

代码语言:javascript
运行
复制
readonly parameters="AWS_ACCESS_KEY_ID=XXX AWS_SECRET_ACCESS_KEY=XXX .."
env -i $parameters /usr/bin/npm run init_test_tenant

或者将PATH=/usr/bin/添加到$parameters常量中,如下所示:

代码语言:javascript
运行
复制
readonly parameters="PATH=/usr/bin AWS_ACCESS_KEY_ID=XXX AWS_SECRET_ACCESS_KEY=XXX .."
env -i $parameters npm run init_test_tenant
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35196816

复制
相关文章

相似问题

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