如何将所有 GitHub 机密放入环境变量中以供操作访问(在我的例子中是 powershell)?

问题描述 投票:0回答:3

我读过一些类似的帖子,但似乎没有人回答这个问题。如果我知道秘密的名称,我可以将单个 GitHub 秘密设置到操作中的环境变量中:

env:
    PW_ID0007: "${{secrets.PW_ID0007}}"

如何在不知道其名称的情况下将所有秘密公开为环境变量(批量或以某种方式迭代它们并单独设置它们?)

github environment-variables github-actions github-secret
3个回答
14
投票

有一种方法可以做到这一点。请检查这里

- name: view the secrets context
  shell: bash
  run: echo "$SECRETS_CONTEXT"
  env:
    SECRETS_CONTEXT: ${{ toJson(secrets) }}

这样你就会在不知道名字的情况下暴露所有秘密:

并且知道您需要的是使用例如 jq 来遍历此 json 并将它们设置为使用以下语法的 env 变量:

 echo "variable_name=variable_value" >> $GITHUB_ENV

9
投票

我为此创建了一个操作 - 获取所有秘密并将它们导出到环境变量中。

一个例子是:

- run: echo "Value of MY_SECRET1: $MY_SECRET1"
  env:
    MY_SECRET1: ${{ secrets.MY_SECRET1 }}
    MY_SECRET2: ${{ secrets.MY_SECRET2 }}
    MY_SECRET3: ${{ secrets.MY_SECRET3 }}
    MY_SECRET4: ${{ secrets.MY_SECRET4 }}
    MY_SECRET5: ${{ secrets.MY_SECRET5 }}
    MY_SECRET6: ${{ secrets.MY_SECRET6 }}
    ...

您可以将其转换为:

- uses: oNaiPs/secrets-to-env-action@v1
  with:
    secrets: ${{ toJSON(secrets) }}
- run: echo "Value of MY_SECRET1: $MY_SECRET1"

操作链接,其中包含有关配置的更多文档:https://github.com/oNaiPs/secrets-to-env-action


5
投票

我想出了一个简单的解决方案,它也适用于多行字符串。以下是相应的 GitHub 操作步骤:

- name: Expose github environment as shell variables
  env:
    SECRETS_CONTEXT: ${{ toJson(secrets) }}
    VARS_CONTEXT: ${{ toJson(vars) }}
  run: |
    # https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions#setting-an-environment-variable
    # https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions#multiline-strings
    EOF=$(dd if=/dev/urandom bs=15 count=1 status=none | base64)
    to_envs() { jq -r "to_entries[] | \"\(.key)<<$EOF\n\(.value)\n$EOF\n\""; }
    echo "$VARS_CONTEXT" | to_envs >> $GITHUB_ENV
    echo "$SECRETS_CONTEXT" | to_envs >> $GITHUB_ENV

jq
获取 json 的每个键值对并生成以下形式的 env 命令:

{name}<<{delimiter}
{value}
{delimiter}

出于安全原因,分隔符

$EOF
是一个随机字符串。

然后将这些 env 命令附加到

$GITHUB_ENV
,以便它们在后续步骤中可用。

© www.soinside.com 2019 - 2024. All rights reserved.