【问题标题】: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 的内容,则会出现此错误消息。

    例如:

    1. 当您的秘密“secrets.BUCKET”被解析为the-bucket
    2. 在运行工作流时,如果字符串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: []
      

    【讨论】:

      猜你喜欢
      • 2014-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-02
      • 2014-09-29
      • 2012-02-06
      相关资源
      最近更新 更多