我有以下比特桶管道,用于部署带有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