首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Meteor应用程序中使用envsubst

在Meteor应用程序中使用envsubst
EN

Stack Overflow用户
提问于 2022-09-21 21:13:14
回答 2查看 74关注 0票数 0

我有下面的bitbucket管道,它用于部署带有Mup的Meteor应用程序。

一切都在进行,直到最后的mup deploy command,它似乎无法读取生成的config.json文件,应该有我的安全芒果url注入到它。

这就是secure_mongo.json文件的样子

代码语言:javascript
复制
{
    "secret": $STAGING_MONGO_URL
}

在mup文件中,我访问的方式如下

代码语言:javascript
复制
var mongo = require('./config.json');

module.exports = {
  MONGO_URL: mongo.secret,
}
代码语言:javascript
复制
image: node:14.16.0

pipelines:
  branches:
    staging:
      -  step:
           name: Deploy to staging CI/CD Environment
           script:
             - mkdir -p ~/.ssh
             - apt-get update && apt-get install gettext-base
             - curl https://install.meteor.com/ | sh
             - export METEOR_ALLOW_SUPERUSER=true
             - cd .bot-staging-ci-cd
             - (umask 077 ; echo $DO_STAGING_CICD_SSH_KEY | base64 --decode > ~/.ssh/id_rsa)
             - cat secure_mongo.json | envsubst > config.json
             - cat config.json && realpath config.json
             - npm install -g mup
             - npm install -g ssh2
             - mup deploy

我在存储库中确实有一个名为$STAGING_MONGO_URL的安全变量。所以不能完全确定到底出了什么问题。任何帮助都会很好。

这个问题是相关的,帮助我走了这么远,Storing secrets into Bitbucket Pipelines and then deploy on App Engine?,但它不是同一个问题。

要明确的是,我得到的错误是Mup部署是说config.json文件到达了一个Unexpected token

精确误差

代码语言:javascript
复制
Error loading config file:
SyntaxError: /opt/atlassian/pipelines/agent/build/.bot-staging-ci-cd/config.json: Unexpected token m in JSON at position 13

更新:

因此,我认为json错误与config.json文件的要求有关,并试图直接用module.exports .js文件编写use envsubst,但它似乎根本没有替换变量,Mup在应该替换变量的位置直接失败。

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-09-23 18:45:01

除非您的STAGING_MONGO_URL变量以双引号开头并以双引号结尾,否则一旦envsubst将其呈现到config.json中,该文件就不再是有效的json。

在secure_mongo.json模板中用双引号包装值占位符

代码语言:javascript
复制
{
    "secret": "$STAGING_MONGO_URL"
}

此外,要小心避免秘密值中的实际双引号,因为一旦呈现,就会再次中断json解析。

即使您成功地呈现了config.json文件,将其打印到stdout也是无用的: Bitbucket安全特性将阻止您在管道日志中打印您的秘密变量,例如,请参阅:

票数 1
EN

Stack Overflow用户

发布于 2022-09-26 21:19:28

对于任何试图让这个和Meteor一起工作的人来说,这对我来说是有效的。

代码语言:javascript
复制
image: node:14

pipelines:
  branches:
    staging:
      -  step:
           name: Deploy to staging CI/CD Environment
           script:
             - mkdir -p ~/.ssh
             - apt-get update && apt-get install gettext-base
             - curl https://install.meteor.com/ | sh
             - export METEOR_ALLOW_SUPERUSER=true
             - cd .bot-staging-ci-cd
             - (umask 077 ; echo $DO_STAGING_CICD_SSH_KEY | base64 --decode > ~/.ssh/id_rsa)
             - cat mup-secure.js | envsubst > mup.js
             - cat settings-secure.json | envsubst > settings.json
             - rm -rf node_modules
             - npm install -g mup
             - npm install -g ssh2
             - meteor npm i
             - mup setup
             - mup deploy --settings settings.json
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73807001

复制
相关文章

相似问题

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