作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已被指示“以编程方式处理此问题”,但我无法更改或添加凭据文件。
使用 Github Actions,我创建了一个需要 GCloud 身份验证的工作流。不幸的是,该变量似乎在 run
之前被替换了。正在执行的命令,导致产生一堆错误的多行 YAML 文件。
这是 YAML 的一个片段:
# Setup gcloud CLI
- name: Use Google Cloud Platform
uses: GoogleCloudPlatform/github-actions/setup-gcloud@master
with:
version: '270.0.0'
service_account_email: ${{ secrets.SA_EMAIL }}
service_account_key: ${{ secrets.GOOGLE_APPLICATION_CREDENTIALS }}
- run: cd ui/ && pwd && npm install && npm run test
env:
CI: true
- run: |
echo ${{ secrets.GCP_AUTH_STAGING }} | gcloud auth activate-service-account --key-file=-
gcloud container clusters get-credentials staging --region northamerica-northeast1 --project example-staging
cd ui/ && pwd && npm run build && cd build/ && gsutil cp -r . gs://test.example.com/
CREDS=$( ${{ secrets.GCP_AUTH_STAGING }} )
之类的方式转义凭据但这只会导致另一个多线问题。我相信 YAML 变量在执行之前会被替换,而不是作为 env 传递。
最佳答案
我们使用 base 64 编码服务帐户 JSON 并通过环境变量传递它。然后在调用 activate-service-account
之前使用 shell 脚本进行解码。
示例代码:
echo "$GCP_CREDENTIALS" > gcp_credentials_enc.json
cat gcp_credentials_enc.json | base64 -d > gcp_credentials.json
关于bash - 如何在 Github 工作流程中逃避多行 secret ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60840243/
我是一名优秀的程序员,十分优秀!