Google cloud构建未用环境变量替换firebase令牌

Google cloud构建未用环境变量替换firebase令牌,firebase,google-cloud-platform,firebase-cli,google-cloud-build,Firebase,Google Cloud Platform,Firebase Cli,Google Cloud Build,我有一个云构建触发器,它试图将我的应用程序推送到firebase主机。为此,我有一个加密的.env.enc文件,其中包含部署所需的firebase令牌。在构建过程中,我解密此文件并尝试部署,但遇到未经授权的消息 我尝试在部署脚本中对令牌进行硬编码,而不是使用环境变量,它部署得很好 这是我的cloudbuild.yaml steps: - name: gcr.io/cloud-builders/gcloud args: - kms - decrypt - --ciphertext-

我有一个云构建触发器,它试图将我的应用程序推送到firebase主机。为此,我有一个加密的.env.enc文件,其中包含部署所需的firebase令牌。在构建过程中,我解密此文件并尝试部署,但遇到未经授权的消息

我尝试在部署脚本中对令牌进行硬编码,而不是使用环境变量,它部署得很好

这是我的cloudbuild.yaml

steps:
- name: gcr.io/cloud-builders/gcloud
  args:
  - kms
  - decrypt
  - --ciphertext-file=.env.enc
  - --plaintext-file=.env
  - --location=global
  - --keyring=ssr-vue-docker-app
  - --key=cloudbuild-env
# Install
- name: 'gcr.io/cloud-builders/npm'
  args: ['install']
# Test
- name: 'gcr.io/cloud-builders/npm'
  args: ['run', 'test']
# Build
- name: 'gcr.io/cloud-builders/npm'
  args: ['run', 'build']
# Deploy
- name: 'gcr.io/cloud-builders/npm'
  args: ['run', 'deploy']
最后一个部署步骤使用解密的.env文件中使用的环境变量调用my package.json中的npm脚本

"deploy": "firebase deploy --debug --token \"$FIREBASE_TOKEN\"
我得到的初始输出表明令牌未被使用,但也可以从最终日志中进行编辑

Step #4: [2019-04-17T21:14:48.087Z] Command: /usr/local/bin/node /workspace/node_modules/.bin/firebase deploy --debug --token= --only=hosting
这是我在尝试部署时收到的错误

Step #4: Error: HTTP Error: 403, The caller does not have permission
Step #4: 
Step #4: [2019-04-17T21:14:48.531Z] <<< HTTP RESPONSE BODY code=403, message=The caller does not have permission, status=PERMISSION_DENIED
Step #4: [2019-04-17T21:14:48.530Z] <<< HTTP RESPONSE 403 vary=X-Origin, Referer, Origin,Accept-Encoding, content-type=application/json; charset=UTF-8, date=Wed, 17 Apr 2019 21:14:48 GMT, server=ESF, cache-control=private, x-xss-protection=1; mode=block, x-frame-options=SAMEORIGIN, x-content-type-options=nosniff, accept-ranges=none, transfer-encoding=chunked
Step #4: rewrites=[glob=**, region=us-central1, serviceId=nuxt-server], deployment-tool=cli-firebase
Step #4: [2019-04-17T21:14:48.337Z] >>> HTTP REQUEST POST https://firebasehosting.googleapis.com/v1beta1/sites/ssr-vue-docker-app/versions 
Step #4: i deploying hosting
Step #4: 
Step #4: === Deploying to 'ssr-vue-docker-app'...
步骤4:错误:HTTP错误:403,调用方没有权限
第4步:
步骤4:[2019-04-17T21:14:48.531Z]构建firebase Docker映像。
见:

加密ci令牌
$firebase登录:ci
$gcloud kms密钥环创建cloudbuilder--位置全局
$gcloud kms密钥创建firebase令牌--位置全局--密钥环cloudbuilder--用途加密
$echo-n | gcloud kms加密\
--纯文本文件=-\
--密文文件=-\
--位置=全局\
--keyring=cloudbuilder\
--密钥=firebase令牌| base64
在cloudbuild.yaml中设置加密的ci令牌 见:

秘密:
-kmsKeyName:projects//locations/global/keyRings/cloudbuilder/cryptoKeys/firebase令牌
秘密:
FIREBASE_令牌:
步骤:
-id:“npm安装”
名称:“gcr.io/cloudbuilders/npm”
参数:['install']
-id:“功能npm安装”
名称:“gcr.io/cloudbuilders/npm”
参数:['install']
目录:“功能”
-id:“部署firebase”
名称:“gcr.io/$PROJECT\u ID/firebase”
参数:['deploy','--project=']
#部署特定的Firebase服务
#(如果您只想部署特定的Firebase服务或功能)
#
#-id:“部署火力基地”
#名称:“gcr.io/$PROJECT\u ID/firebase”
#参数:['deploy','--only','functions','--project=']
# 
#-id:“部署firebase存储”
#名称:“gcr.io/$PROJECT\u ID/firebase”
#参数:['deploy','-only','storage','-project=']
#秘密:['FIREBASE_TOKEN']
# 
#-id:“部署firebase firestore”
#名称:“gcr.io/$PROJECT\u ID/firebase”
#参数:['deploy','-only','firestore','-project=']
#秘密:['FIREBASE_TOKEN']
# 
#-id:“部署firebase主机”
#名称:“gcr.io/$PROJECT\u ID/firebase”
#参数:['deploy','--only','hosting','--project=']
更多信息
构建firebase Docker映像。 见:

加密ci令牌
$firebase登录:ci
$gcloud kms密钥环创建cloudbuilder--位置全局
$gcloud kms密钥创建firebase令牌--位置全局--密钥环cloudbuilder--用途加密
$echo-n | gcloud kms加密\
--纯文本文件=-\
--密文文件=-\
--位置=全局\
--keyring=cloudbuilder\
--密钥=firebase令牌| base64
在cloudbuild.yaml中设置加密的ci令牌 见:

秘密:
-kmsKeyName:projects//locations/global/keyRings/cloudbuilder/cryptoKeys/firebase令牌
秘密:
FIREBASE_令牌:
步骤:
-id:“npm安装”
名称:“gcr.io/cloudbuilders/npm”
参数:['install']
-id:“功能npm安装”
名称:“gcr.io/cloudbuilders/npm”
参数:['install']
目录:“功能”
-id:“部署firebase”
名称:“gcr.io/$PROJECT\u ID/firebase”
参数:['deploy','--project=']
#部署特定的Firebase服务
#(如果您只想部署特定的Firebase服务或功能)
#
#-id:“部署火力基地”
#名称:“gcr.io/$PROJECT\u ID/firebase”
#参数:['deploy','--only','functions','--project=']
# 
#-id:“部署firebase存储”
#名称:“gcr.io/$PROJECT\u ID/firebase”
#参数:['deploy','-only','storage','-project=']
#秘密:['FIREBASE_TOKEN']
# 
#-id:“部署firebase firestore”
#名称:“gcr.io/$PROJECT\u ID/firebase”
#参数:['deploy','-only','firestore','-project=']
#秘密:['FIREBASE_TOKEN']
# 
#-id:“部署firebase主机”
#名称:“gcr.io/$PROJECT\u ID/firebase”
#参数:['deploy','--only','hosting','--project=']
更多信息
$ git clone https://github.com/GoogleCloudPlatform/cloud-builders-community
$ cd firebase
$ gcloud builds submit --config cloudbuild.yaml .
$ firebase login:ci
$ gcloud kms keyrings create cloudbuilder --location global
$ gcloud kms keys create firebase-token --location global --keyring cloudbuilder --purpose encryption
$ echo -n <ciToken> | gcloud kms encrypt \
  --plaintext-file=- \
  --ciphertext-file=- \
  --location=global \
  --keyring=cloudbuilder \
  --key=firebase-token | base64
secrets:
- kmsKeyName: projects/<projectName>/locations/global/keyRings/cloudbuilder/cryptoKeys/firebase-token
  secretEnv:
    FIREBASE_TOKEN: <EncryptedCiToken>
steps:
- id: 'npm install'
  name: 'gcr.io/cloud-builders/npm'
  args: ['install']

- id: 'functions npm install'
  name: 'gcr.io/cloud-builders/npm'
  args: ['install']
  dir: 'functions'

- id: "deploy firebase"
  name: 'gcr.io/$PROJECT_ID/firebase'
  args: ['deploy', '--project=<projectName>']

# Deploy specific Firebase services
# (If you only want to deploy specific Firebase services or features)
#
# - id: "deploy firebase"
#   name: 'gcr.io/$PROJECT_ID/firebase'
#   args: ['deploy', '--only', 'functions', '--project=<projectName>']
# 
# - id: "deploy firebase storage"
#   name: 'gcr.io/$PROJECT_ID/firebase'
#   args: ['deploy', '--only', 'storage', '--project=<projectName>']
#   secretEnv: ['FIREBASE_TOKEN']
# 
# - id: "deploy firebase firestore"
#   name: 'gcr.io/$PROJECT_ID/firebase'
#   args: ['deploy', '--only', 'firestore', '--project=<projectName>']
#   secretEnv: ['FIREBASE_TOKEN']
# 
# - id: "deploy firebase hosting"
#   name: 'gcr.io/$PROJECT_ID/firebase'
#   args: ['deploy', '--only', 'hosting', '--project=<projectName>']