Bitbucket 管道,在 NodeJS 脚本中使用 ENV VARS 部署到 S3 Deploy
Bitbucket pipelines, use ENV VARS in a NodeJS script to deploy to S3 Deploy
现在我有一个 bitbucket 管道,只需一步就可以很好地工作,如下所示:
( options: docker: true )
- docker build --rm -f Dockerfile-deploy ./ -t deploy --build-arg AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID --build-arg AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY
这会在 Docker 容器中设置密钥,然后使用 bash 脚本和 AWS-CLI 将其部署到 ELB 以提交,所以我实际上并没有尝试公开env vars,但 eb deploy
确实如此并且有效。
当尝试 运行 具有 image: node:latest
和步骤
的管道时
- npm i
- npm run build ( Babel transpile )
- npm run deploy ( node script to send to S3 )
最后一步我需要节点脚本访问我添加到 bitbucket 回购管道配置中的环境变量,而不是我得到该变量的命名变量表示:
// NodeJS Config File
module.exports = {
AWS_S3_BUCKET : process.env.AWS_S3_BUCKET || undefined,
AWS_ACCESS_KEY : process.env.AWS_ACCESS_KEY || undefined,
AWS_ACCESS_SECRET : process.env.AWS_ACCESS_SECRET || undefined,
}
-
// NodeJS deploy file... parts
const aws = {
params: {
Bucket: config.AWS_S3_BUCKET
},
accessKeyId: config.AWS_ACCESS_KEY,
secretAccessKey: config.AWS_ACCESS_SECRET,
distributionId: config.CLOUDFRONT_DISTRIBUTION_ID,
region: "us-east-1"
}
console.log('-----START AWS-----')
console.log(aws)
console.log('------END AWS------')
然后 bitbucket 管道回显 console.logs
-----START AWS-----
{ params: { Bucket: '$AWS_S3_BUCKET' },
accessKeyId: '$AWS_ACCESS_KEY',
secretAccessKey: '$AWS_ACCESS_SECRET',
distributionId: '$CLOUDFRONT_DISTRIBUTION_ID',
region: 'us-east-1' }
------END AWS------
有什么想法吗?
好吧,我的问题是我从 AWS 复制粘贴了带有尾随 space... 的变量,这是一个字符,但肯定不在预期的秘密或密钥字符串中。糟糕
现在我有一个 bitbucket 管道,只需一步就可以很好地工作,如下所示:
( options: docker: true )
- docker build --rm -f Dockerfile-deploy ./ -t deploy --build-arg AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID --build-arg AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY
这会在 Docker 容器中设置密钥,然后使用 bash 脚本和 AWS-CLI 将其部署到 ELB 以提交,所以我实际上并没有尝试公开env vars,但 eb deploy
确实如此并且有效。
当尝试 运行 具有 image: node:latest
和步骤
- npm i
- npm run build ( Babel transpile )
- npm run deploy ( node script to send to S3 )
最后一步我需要节点脚本访问我添加到 bitbucket 回购管道配置中的环境变量,而不是我得到该变量的命名变量表示:
// NodeJS Config File
module.exports = {
AWS_S3_BUCKET : process.env.AWS_S3_BUCKET || undefined,
AWS_ACCESS_KEY : process.env.AWS_ACCESS_KEY || undefined,
AWS_ACCESS_SECRET : process.env.AWS_ACCESS_SECRET || undefined,
}
-
// NodeJS deploy file... parts
const aws = {
params: {
Bucket: config.AWS_S3_BUCKET
},
accessKeyId: config.AWS_ACCESS_KEY,
secretAccessKey: config.AWS_ACCESS_SECRET,
distributionId: config.CLOUDFRONT_DISTRIBUTION_ID,
region: "us-east-1"
}
console.log('-----START AWS-----')
console.log(aws)
console.log('------END AWS------')
然后 bitbucket 管道回显 console.logs
-----START AWS-----
{ params: { Bucket: '$AWS_S3_BUCKET' },
accessKeyId: '$AWS_ACCESS_KEY',
secretAccessKey: '$AWS_ACCESS_SECRET',
distributionId: '$CLOUDFRONT_DISTRIBUTION_ID',
region: 'us-east-1' }
------END AWS------
有什么想法吗?
好吧,我的问题是我从 AWS 复制粘贴了带有尾随 space... 的变量,这是一个字符,但肯定不在预期的秘密或密钥字符串中。糟糕