我试图将Jenkins-build特定的环境变量传播到node.js服务器中,以便能够知道AWS的构建#/ git-branch / commit-sha弹性beanstalk环境正在运行。
根据各种AWS指南,我创建了一个包含环境变量的文件。目的是在构建过程中替换文件中的值,以便它们反映特定于构建的信息:
$ cat .ebextensions/env.config
option_settings:
- namespace: aws:elasticbeanstalk:application:environment
option_name: BUILD_NUMBER
value: BUILD_NUMBER_VALUE
问题是当节点实例在EBS环境中启动时,process.env.BUILD_NUMBER
未设置(由节点服务器中的console.log(process.env)
确认)。
知道在此配置中缺少哪些环境变量在节点process.env
下显示?
注意:
namespace
不是强制性的。为了安全起见,我尝试了两者并且没有它,没有区别答案 0 :(得分:0)
另一种可能的选择是使用package.json
为您生成状态。如果您运行npm version patch
npm将增加应用程序的补丁版本。它还会使用相同的版本名称标记您的git仓库。如果然后运行eb deploy
弹性beanstalk将创建一个以标记命名的zip文件。例如:
npm version patch
eb deploy log:
创建应用程序版本存档" v1_3_3" .`
将store-api / v1_3_3.zip上传到S3。这可能需要一段时间。
然后,您可以在代码中的package.json
中要求:
var p = require('./package.json');
console.log(p.version);
结果是您在repo中最终得到一个标签,该标签链接到package.json文件中的某个版本,然后该文件还链接到s3中的.zip文件。
答案 1 :(得分:0)
我对此感到相当愚蠢,因为问题是.ebextensions / env.config文件在项目中的gulp任务期间被覆盖了。因此问题是配置文件实际上没有部署。一旦部署,一切都像魅力......