Я пытаюсь написать набор рабочих процессов, которые устанавливают зависимости, расположенные в частном репозитории GitHub.
Репозитории с для пакетов включен Доступ из репозиториев в организации «Моя организация».
Код: Выделить всё
GITHUB_TOKEN
В действии проекта рабочий процесс вызывается с явно переданным GITHUB_TOKEN:
Код: Выделить всё
.github/workflows/deploy_myproject.yaml:
name: Deploy "My Project" to Sandbox
run-name: 🚀 Deploying to sbx
on:
push:
branches:
- sandbox
paths:
- 'my_project/**'
- .github/workflows/deploy_myproject.yaml
jobs:
deploy:
uses: MyORG/github-actions/.github/workflows/call_pip_install.yaml@main
secrets:
GH_TOKEN: ${{secrets.GITHUB_TOKEN}}
with:
env_name: sandbox
Код: Выделить всё
MyORG/github-actions/.github/workflows/call_pip_install.yaml:
name: Deploy PIP
run-name: 🚀 Deploying to ${{ inputs.env_name }}
on:
workflow_call:
inputs:
env_name:
description: 'Target environment'
required: true
type: string
default: "sandbox"
secrets:
GH_TOKEN:
description: 'A token passed from the caller workflow'
required: true
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up Python 3.12
uses: actions/setup-python@v5
with:
python-version: 3.12
- name: 'Set up Python & deploy'
run: |
python3 -m venv venv
source ./venv/bin/activate
echo "Installing dependencies"
git config --global url."https://${{ secrets.GH_TOKEN }}@github".insteadOf https://github
git config --list
./venv/bin/pip3 install -r requirements.txt -v
Код: Выделить всё
git config --list
Код: Выделить всё
requirements.txt:
module-1 @ git+https://github.com/MyORG/module-1-repo@main
module-2 @ git+https://github.com/MyORG/module-2-repo@main
В обоих случаях рабочий процесс завершается сбоем:
Код: Выделить всё
fatal: could not read Password for 'https://***@github.com': No such device or address
После исследования многих других сообщений на SO я также попробовал эти форматы require.txt вместо глобальной конфигурации git:
Код: Выделить всё
module-1 @ git+https://x-access-token:{GITHUB_TOKEN}@github.com/MyORG/module-1-repo@main
module-1 @ git+https://oauth2:{GITHUB_TOKEN}@github.com/MyORG/module-1-repo@main
Я не знаю Я не хочу использовать ключи SSH или передавать PAT в рабочий процесс, поскольку это долгоживущие секреты, я хочу использовать GITHUB_TOKEN, потому что он одноразовый
Подробнее здесь: https://stackoverflow.com/questions/792 ... s-workflow