【问题标题】:How do I use secrets in Github Actions?如何在 Github Actions 中使用机密?
【发布时间】:2021-01-20 19:34:11
【问题描述】:

我觉得这是一个非常愚蠢的问题,但似乎无法弄清楚。我有 set up a really simple node.js project 和 API_KEY 作为秘密。

在nodejs action yml 我有以下内容:

    steps:
    - uses: actions/checkout@v2
    - name: Use Node.js ${{ matrix.node-version }}
      uses: actions/setup-node@v1
      with:
        node-version: ${{ matrix.node-version }}
      env:  
        API_KEY: ${{ secrets.API_KEY }} 
    - run: export 
    - run: npm ci
    - run: npm run build --if-present
    - run: npm test

API_KEY doesn't show in export 正如我所期望的那样,当我 console.log(process.env) 时它也不会显示。

According to the documentation,这应该可以正常工作。我觉得我错过了一些非常简单的东西。

这不是 suggested in this stackoverflow question 的分叉。

在我的节点脚本中获取 API_KEY 缺少什么?

【问题讨论】:

  • 您是否已将密钥添加到存储库中?
  • export 不会显示它,因为它不在同一个步骤中。您必须在要访问它的每个步骤中设置密钥。
  • @BenjaminW。是的,秘密在存储库中。你有一个我应该如何在每个步骤中设置秘密的例子吗?
  • 如果您将env: 和API_KEY 字段添加到运行步骤?喜欢-env:\nAPI_KEY: ${{ secrets.API_KKEY }}\nrun:export? (当然,用换行符和适当的缩进替换 n)
  • @BenjaminW。这似乎是答案。我想知道为什么文档对此不清楚。我会在他们的操作页面上创建一个 PR,看看为什么会这样。

标签: node.js github github-actions


【解决方案1】:

环境变量可以在三个层次上定义:

优先考虑可用的最具体的变量。例如:

env:
  VAR: I am global
jobs:
  job1:
    steps:
      - run: echo "$VAR"  # "I am global"
  job2:
    env:
      VAR: I am on the job level
    steps:
      - run: echo "$VAR"  # "I am on the job level"
      - env:
          VAR: I am on the step level
        run: echo "$VAR"  # "I am on the step level"
      - run: echo "$VAR"  # "I am on the job level"

要在步骤中动态设置环境变量并使其可用于进一步的步骤,您必须使用environment file(这具有使用工作流命令的changed recently,现在不推荐用于环境变量):

steps:
  - name: Set the variable
    run: echo "foo=bar" >> "$GITHUB_ENV"
  - name: Print the variable
    run: echo "$foo"  # bar

现在已弃用的旧方式会将其设置为:

run: echo "::set-env name=foo::bar"

但这现在会触发弃用警告。

【讨论】:

    猜你喜欢
    • 2020-04-16
    • 2020-03-03
    • 2020-01-01
    • 2020-07-30
    • 2020-01-14
    • 2021-03-21
    • 2020-05-27
    • 2020-04-28
    • 2020-11-30
    相关资源
    最近更新 更多