5

我正在尝试创建一个工作流来使用 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 }}
...

GITHUB_TOKEN

4

2 回答 2

4

更新

是的,这是可能的,但这是一个非常糟糕的做法。如果必须的话可以使用下面的命令,它规避了 Github 防止机密泄露日志的安全措施

run: echo MYSECRET | sed -e 's/\(.\)/\1 /g'
# this will print "M Y S E C R E T"

只需替换MYSECRET为您要打印的秘密,例如$GITHUB_TOKEN.

旧答案

查看其他答案,这似乎是 Github 操作的预期行为。

如您所见,我可以获取(并使用)环境变量的值,但不会暴露秘密。

那是因为它们是秘密。Actions 输出已明确清除机密信息,并且不会显示。

文件内容仍然包含秘密内容。

更新:

这是关于如何将秘密传递到行动步骤的常规惯例。

env: 
  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

这就是我在行动中使用它的方式。

在此处输入图像描述

更新2

在此处查看有关如何打印您的秘密的详细说明,但强烈建议您不要这样做。

https://help.github.com/en/actions/configuring-and-managing-workflows/creating-and-storing-encrypted-secrets#limits-for-secrets

于 2020-04-19T23:46:34.450 回答
2

出现这个问题是因为我的一个误解,我认为如果秘密值正确传递给操作,它们应该显示在日志中。

我将Ben Windingbk2204的答案结合起来说清楚。

秘密值在操作日志中被清除。不要期望在操作日志中看到实际值。获取擦除后的文本意味着该值已传递给操作。您可以在脚本中使用该值,但在日志中看不到它们。查看Ben 的答案以了解如何查看这些值,但不建议这样做。

于 2020-04-21T02:55:17.707 回答