Авторизуйтесь bash для доступа к защищенной ветке GitHub. - PullRequest
2 голосов
/ 06 января 2020

Это может быть глупый вопрос, но вот я после двух дней головокружительного удара ?

В настоящее время я работаю над заданием GitHub Actions, это было бы в какой-то момент git push в защищенную ветвь (master, на самом деле). Однако, как только он перейдет к этому шагу, задание завершится с ошибкой « У вас нет прав на pu sh»:

Error message код ошибки GH006

В моей ситуации, когда это произошло впервые, это означало, что работник (CLI, bash) вообще не авторизован. Итак, я пошел, чтобы войти в нее в отдельной учетной записи GitHub, - и вот где я застрял на пару дней.

Итак, как мне войти в учетную запись GitHub через CLI?


Вещи, которые я пробовал:

Нажатие на мастеринг вручную

Это работает без ошибок, так как авторизация в порядке, - но это очевидно не автоматизированный, вот что мне нужно.

Пара деталей:

  • Я использовал Windows 10, в то время как задание настроено для запуска на "ubuntu-18.04";
  • Я удалил все логины, связанные с GitHub, из Windows Диспетчер учетных данных перед выполнением git push и снова настроил их через диалоговое окно GitHub Login.

Вручную отправка под несанкционированными учетными данными завершается неудачно, как и ожидалось.

git remote set-url origin "https://$username:$token@github.com/my/repo"

Это, похоже, не дало никакого эффекта. Я пытался как установить URL-адрес существующих удаленных, так и удалить удаленные, чем добавление, с разными URL-адресами, - кажется, что оба подхода работают (не работают) одинаково.

Ни одна из приведенных ниже конфигураций не работала:

steps:
  - run: git remote set-url origin "https://$username:$token@github.com/my/repo"
  - run: git push origin master
steps:
  - run: git remote remove origin
  - run: git remote add origin "https://$username:$token@github.com/my/repo"
  - run: git fetch origin --all # with and without this step
  - run: git push origin master

curl -u "$username:$token" https://api.github.com/user

Это , предложенное в документах , и оно успешно выполняется, но вход в систему не сохраняется до git push - даже если толчок происходит на том же шаге. Я подозреваю, что может быть решение, связанное с cook ie, но я не уверен, как они работают в среде без браузера. Кроме того, я считаю, что этот API предназначен для различных целей.

Обе эти конфигурации не удалось:

steps:
  # separate processes
  - run: curl -u "$username:$token" https://api.github.com/user
  - run: git push origin master
steps:
  # same process
  - run: |
      curl -u "$username:$token" https://api.github.com/user
      git push origin master

1 Ответ

2 голосов
/ 06 января 2020

actions/checkout@v2 теперь будет настраивать и сохранять аутентификацию при настройке входа token. Вам не нужно настраивать исходный URL-адрес вручную.

      - uses: actions/checkout@v2
        with:
          token: ${{ secrets.PAT }}
      - name: Create a change
        run: echo "test" > test.txt
      - name: Commit change
        run: |
          git config --global user.name 'Your Name'
          git config --global user.email 'your-username@users.noreply.github.com'
          git add -A
          git commit -m "Add test file"
          git push

Согласно этому комментарию на форумах GitHub, PAT должен быть создан из учетной записи администратора / владельца организации. Соавтора с правами на запись недостаточно, чтобы отправить sh в защищенные ветви.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...