Установка из частного репозитория через рабочий процесс GitHub Actions.Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Установка из частного репозитория через рабочий процесс GitHub Actions.

Сообщение Anonymous »

TL;DR: Как передать GITHUB_TOKEN в pip в вызываемом рабочем процессе? Требуется какая-либо дополнительная настройка?
Я пытаюсь написать набор рабочих процессов, которые устанавливают зависимости, расположенные в частном репозитории 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
просто подтверждает наличие URL.https://***@github.insteadof=https://github

Код: Выделить всё

requirements.txt:
module-1 @ git+https://github.com/MyORG/module-1-repo@main
module-2 @ git+https://github.com/MyORG/module-2-repo@main
Мне также надоело использовать {{ github.token }} внутри call_pip_install.yaml, поскольку это всего лишь мета-аннотация, которая должна быть доступна во всех рабочих процессах, но в итоге оказалась явной передача токена на всякий случай.
В обоих случаях рабочий процесс завершается сбоем:

Код: Выделить всё

fatal: could not read Password for 'https://***@github.com': No such device or address
Та же конфигурация работает, если я добавляю личный токен вместо GITHUB_TOKEN.
После исследования многих других сообщений на 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
но они не работают с удаленным доступом: поддержка аутентификации по паролю была удалена 13 августа 2021 г. или аналогичные ошибки
Я не знаю Я не хочу использовать ключи SSH или передавать PAT в рабочий процесс, поскольку это долгоживущие секреты, я хочу использовать GITHUB_TOKEN, потому что он одноразовый

Подробнее здесь: https://stackoverflow.com/questions/792 ... s-workflow
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»