#github #yocto #github-actions
#github #yocto #github-действия
Вопрос:
В моем рабочем процессе я могу нормально клонировать репозитории и подмодули, и сборка запускается, но когда запускается рецепт, который извлекается из наших частных репозиториев GitHub, я получаю сообщение об ошибке (все репозитории являются одноранговыми в одной организации). Обратите внимание, что рецепты, которые клонируются из Интернета, работают нормально, и они отлично строятся, когда я клонирую и создаю локально. Просто когда я использую действия GitHub, я получаю следующую ошибку.
Cloning into bare repository '/home/runner/yocto_cache/downloads/git2/github.com.xxxxx.yyyyy.git'...
fatal: could not read Username for 'https://github.com': No such device or address
Рецепт похож…
SRC_URI = "git://github.com/xxxxx/yyyyy.git;protocol=https;nobranch=1;subpath=<folder>/<folder>;rev=${BUILD_REV}"
Рабочий процесс
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
token: ${{ secrets.REPO_ACCESS }}
submodules: recursive
- name: Configure Git
run: |
git config --unset-all "http.https://github.com/.extraheader"
git config --add "http.https://github.com/.extraheader" "AUTHORIZATION:
Basic $(base64 <<< ${{ secrets.REPO_ACCESS }}:x-oauth-basic)"
- name: Running on VM
env:
CC: gcc-9
run: |
sudo apt-get install -y diffstat
gcc --version
./yocto-setup.sh
source ./poky/oe-init-build-env
bitbake image
У меня возникли проблемы с поиском ответов на этот конкретный сбой, и мне интересно, сталкивался ли кто-нибудь с чем-то подобным и может оказать некоторую помощь.
Ответ №1:
Судя по сообщению об ошибке
фатальный: не удалось прочитать имя пользователя для 'https://github.com ': Нет такого устройства или адреса
похоже, что ваш частный репозиторий, расположенный по $SRC_URI
адресу, хочет, чтобы клиент Git (используемый внутри BitBake) аутентифицировался, поэтому он запросил учетные данные, которые должны быть предоставлены на вводе терминала. Действия GitHub выполняются в неинтерактивном режиме, поэтому ввод терминала недоступен (отсюда и сообщение об ошибке):
Нет такого устройства или адреса
Чтобы преодолеть это, если вы хотите получить доступ к своему частному репозиторию Git по протоколу HTTP (S) без предоставления учетных данных на вводе терминала, вам необходимо настроить git
включение заголовка аутентификации basic access в HTTP-запрос.
Заголовок аутентификации можно настроить с помощью http.extraHeader
опции git-config. Вы можете сделать это прямо в своей build
работе, просто добавив этот дополнительный шаг перед Running on VM
:
- name: Configure Git
run: |
git config --unset-all "http.https://github.com/.extraheader"
git config --add "http.https://github.com/.extraheader"
"AUTHORIZATION: Basic $(base64 <<< ${{ secrets.REPO_ACCESS }}:x-oauth-basic)"
- name: Running on VM
...
После добавления вышеуказанного Running on VM
шага операция клонирования git должна завершиться успешно.
(Я предполагаю, что предоставленный GitHub REPO_ACCESS
secret — это токен доступа, имеющий, по крайней мере, доступ на чтение к частному репозиторию, обозначаемый $SRC_URI
символом ).
Вы можете прочитать больше о токенах доступа здесь и здесь .
Комментарии:
1. Все еще сбой. Обновленный оригинал с предлагаемыми обновлениями рабочего процесса
2. Какое сообщение об ошибке появляется после изменений? То же, что описано в вопросе?
3. ДА. Это все еще не выполняется, как описано.