【问题标题】:How to set `environment_url` from environment variables如何从环境变量设置`environment_url`
【发布时间】:2022-10-22 06:37:01
【问题描述】:
我有多个要部署的环境。 (开发、分期、生产)。
我依赖 env 上下文来获取一些值,例如 AWS 存储桶名称。
jobs:
deploy:
runs-on: self-hosted
env:
BUCKET: ${{ secrets.BUCKET }}
environment:
name: ${{ inputs.environment }}
url: https://www.${{ env.BUCKET }}
steps:
在我的工作流程中,我得到:
跳过将环境 url 设置为环境“开发”可能包含秘密。
我也尝试将其称为 $BUCKET 但没有成功(不插入此字段)
【问题讨论】:
标签:
github-actions
github-enterprise
【解决方案1】:
Github 将自动分析您的工作流程,以防止在任何输出(日志、放置、调试、环境 url ......)中泄露任何秘密
如果您的 environmnet_url 上存在 ANY SECRETS 的内容,则会出现此错误消息。
例如:
- 当您的秘密“secrets.BUCKET”被解析为
the-bucket
- 在运行工作流时,如果字符串
the-bucket 出现在输出的任何部分(此处为 environment_url),Github 会阻止输出以保守您的秘密。秘密!
笔记:如果您将其以纯文本格式(如format("https://pr-{0}-{1}.domain.dev", "1", "the-bucket"))保存,您的秘密也会得到保护。结果为https://pr-1-***.domain.dev 并显示错误Skip setting environment url as environment 'development' may contain secret.
解决方案 1
不要将存储桶名称放在您的秘密中,并在您的工作流程中直接使用 env var
jobs:
deploy:
runs-on: self-hosted
env:
BUCKET: the-bucket
environment:
name: ${{ inputs.environment }}
url: https://www.${{ env.BUCKET }}
steps: []
解决方案2: 更痛苦
如果您的存储桶名称需要绝对保密,请在您的一个域后面创建一个重定向并将此域用作 url
jobs:
deploy:
runs-on: self-hosted
env:
BUCKET: the-bucket
environment:
name: ${{ inputs.environment }}
# redirect to https://www.{{ env.BUCKET }}
url: https://www.my-secret-bucket.domain.tld
steps: []