Почему действие не может получить доступ к секретам? - PullRequest
1 голос
/ 19 апреля 2020

Я пытаюсь создать рабочий процесс для развертывания пакетов Nuget в Github Package Repository с помощью Github Actions.

В этом случае

  • Хранилище находится внутри организации
  • Я владелец этой организации
  • У меня есть доступ администратора к хранилищу
  • В хранилище перечислены секреты
  • Коммит принадлежит
  • Коммит - это прямой коммит в ветку

Но действие НЕ МОЖЕТ получить доступ к секретам

echo

Ниже приведен рабочий процесс Я пытаюсь выполнить

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

Ответы [ 2 ]

1 голос
/ 20 апреля 2020

Обновление

Да, это возможно, но очень плохая практика. Если вам нужно, вы можете использовать следующую команду, которая уклоняется от мер безопасности 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 }}

Это то, как я использую его в своих действиях.

enter image description here

Обновление2

Проверьте здесь подробные инструкции о том, как напечатать ваши секреты, хотя настоятельно рекомендуется не делать это.

https://help.github.com/en/actions/configuring-and-managing-workflows/creating-and-storing-encrypted-secrets#limits -для-секреты

0 голосов
/ 21 апреля 2020

Эта проблема возникла из-за того, что мое недоразумение «Секретные значения должны отображаться в журналах, если они переданы действию».

Я объединяю ответы Бен Виндинг и bk2204 , чтобы было понятно.

Секретные значения очищаются в журналах действий . Не ожидайте увидеть фактические значения в журнале действий. Получение очищенного текста означает, что значение передано действию. Вы можете использовать значение, но вы не можете видеть их в журналах. Проверьте Ответ Бена , чтобы узнать, как вы можете видеть значения, даже если это не рекомендуется.

...