【发布时间】:2020-08-02 03:10:55
【问题描述】:
我正在尝试创建一个工作流,以使用 Github Actions 将 Nuget 包部署到 Github 包存储库。
在这种情况下,
- 存储库位于组织内部
- 我是该组织的所有者
- 我拥有存储库的管理员权限
- 存储库列出了机密
- 提交是我的
- 提交是对分支的直接提交
但该操作无法访问机密
以下是我正在尝试执行的工作流程
name: Build and Publish
on:
push:
branches:
- gh-packages
jobs:
build_and_publish:
env:
ACCESS_TOKEN: ${{ secrets.GITHUB_TOKEN }}
name: Publish Packages to NuGet
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-dotnet@v1
with:
dotnet-version: "3.0.100"
- name: Dump Github Context
env:
CONTEXT: ${{ toJson(github) }}
SECRETS: ${{ toJson(secrets) }}
TOK: ${{ secrets.ACCESS_TOKEN }}
TEST: ${{ secrets.TEST }
run: |
echo $ACCESS_TOKEN
echo $TOK
echo $TEST
echo $GITHUB_TOKEN
echo "$SECRETS"
echo "$CONTEXT"
- name: Setup Config
run: sed "s/ACCESS_TOKEN/$ACCESS_TOKEN/g" .nuget.config > nuget.config
- run: cat nuget.config
- name: Build
run: dotnet build -c Release
- name: Publish
run: chmod +x ./push.sh && ./push.sh
GITHUB_TOKEN 和 ACCESS_TOKEN 之类的自定义机密都不起作用。
加法01:
即使将环境变量名称设置为 GITHUB_TOKEN 也无法正常工作
name: Build and Publish
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
...
【问题讨论】:
-
任何秘密值(以及秘密值的某些编码,例如 Base64)都会从输出中清除,并在日志中替换为星号,这是最佳安全实践。无论您如何呈现它们都是如此:如果日志文本与秘密匹配,则将其清除。您的脚本和工作流程仍然可以访问它们,但无法查看它们。
-
这是一个非常酷的功能,在文档中不是很清楚,但绝对是 Github 团队的一个很好的安全措施。我想你可以在每个字符后用空格打印秘密......再次更新我的答案
标签: github github-actions building-github-actions