将envsubst用于具有位桶管道的Meteor应用程序



我有以下比特桶管道,用于部署带有Mup的Meteor应用程序。

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

这就是secure_mongo.json文件的

{
"secret": $STAGING_MONGO_URL
}

在mup文件中,我像一样访问

var mongo = require('./config.json');
module.exports = {
MONGO_URL: mongo.secret,
}
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的安全变量。所以不完全确定出了什么问题。任何帮助都会很棒。

这个问题是相关的,并帮助我走到了这一步。将秘密存储到Bitbucket管道中,然后部署在应用程序引擎上?但这不是同一个问题。

需要澄清的是,我得到的错误是Mup deploy说config.json文件正在到达Unexpected token

精确误差

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直接在应该替换变量的位置失败。

感谢

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

在secure_mongo.json模板中用双引号括起值占位符

{
"secret": "$STAGING_MONGO_URL"
}

此外,要小心避免在机密值中使用实际的双引号,因为一旦呈现,就会再次破坏json解析。

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

  • Bitbucket管道用变量替换文本
  • Bitbucket:显示标记为机密的变量的值

对于任何试图使用Meteor的人来说,这对我来说都是有效的

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

最新更新