gpt4 book ai didi

javascript - GitHub Actions - 清空环境 secret

转载 作者:行者123 更新时间:2023-11-29 22:45:43 26 4
gpt4 key购买 nike

我已经开始玩 GitHub 操作,但我很难访问我作为 env 传递的存储库 secret 。

我的工作流程文件:

name: Invite

on:
pull_request:
branches: [master]
types: [closed]
jobs:
invite:
runs-on: ubuntu-latest
steps:
- name: Hello world action
uses: lekterable/inclusive-organization-action@master
env:
SECRET_TOKEN: ${{ secrets.SECRET_TOKEN }}
organization: string
SUPER_SECRET: ${{ secrets.SUPER_SECRET }}

Action 索引文件

const core = require('@actions/core')
const github = require('@actions/github')

const run = async () => {
try {
...
console.log('env', process.env)
const token = process.env.SECRET_TOKEN
const secret = process.env.SUPER_SECRET
const organization = process.env.organization
console.log('organization', organization)
console.log('token?', !!token)
console.log('secret?', !!secret)
console.log('token length', token.length)
...
} catch (error) {
core.setFailed(error.message)
}
}

run()

如您所见,我传递了 3 个 env,值为 'string' 的组织按预期存在,但 SECRET_TOKEN 和 SUPER_SECRET 为空。

enter image description here

是的,我确实在运行该操作的 repo 中设置了 secret :

enter image description here

我做错了什么吗?

最佳答案

更新

虽然下面的原始答案仍然适用于公共(public) 存储库,但有几个 new updates这可能有助于某些用例。

  • 如果您的存储库是私有(private)的,您现在可以 enable workflows来自 fork 。

  • 如果您的存储库是公开的,则有一个新的 pull_request_target不受任何代币限制的事件。

原始答案

您遇到此行为的原因是 Invite 工作流程是由来自 fork 存储库的拉取请求触发的。

With the exception of GITHUB_TOKEN, secrets are not passed to the runner when a workflow is triggered from a forked repository.

发生这种情况时,工作流的参与者 就是打开拉取请求的用户。如果该用户没有对您的存储库的写入权限,则他们不能使用 secret (GITHUB_TOKEN 除外)。

Anyone with write access to a repository can create, read, and use secrets.

引用:https://help.github.com/en/actions/automating-your-workflow-with-github-actions/creating-and-using-encrypted-secrets#using-encrypted-secrets-in-a-workflow

如果您在工作流程中运行此步骤,您会发现它与您的操作无关。 TEST_SECRET secret 在工作流中也不可用。

      - name: Test
env:
TEST_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
TEST_SECRET: ${{ secrets.TEST_SECRET }}
run: |
echo ${#TEST_GITHUB_TOKEN}
echo ${#TEST_SECRET}

Test secrets on pull requests from forks

检查 GitHub 上下文中的事件数据,您会看到 actor 是 fork 存储库并打开拉取请求的用户。

      - name: Dump GitHub context
env:
GITHUB_CONTEXT: ${{ toJson(github) }}
run: echo "$GITHUB_CONTEXT"

This is a different but related issue一位 GitHub 工作人员回答说,存在这些对 fork 存储库的限制是为了“防止恶意行为者使用操作来毒害上游或下游存储库。”

关于javascript - GitHub Actions - 清空环境 secret ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58737785/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com