Вопрос или проблема
Я владелец организации на GitHub и создал приватный репозиторий в рамках этой организации. Я настраиваю действие GitHub, но оно не удается, потому что remote: Доступ на запись в репозиторий не предоставлен.
В настройках репозитория я выбрал права на чтение и запись:
Тем не менее, когда действие запускается, включены только чтение
:
Существует ли что-то еще, что мне нужно сделать, чтобы разрешить действию иметь права на запись?
ИЗМЕНЕНИЕ: Вот файл рабочего процесса:
on:
push:
branches: [main, master]
pull_request:
branches: [main, master]
workflow_dispatch:
name: bookdown
permissions: read-all
jobs:
bookdown:
runs-on: ubuntu-latest
# Только ограничьте конкуренцию для непулл-запросов
concurrency:
group: pkgdown-${{ github.event_name != 'pull_request' || github.run_id }}
env:
GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }}
steps:
- uses: actions/checkout@v4
- uses: r-lib/actions/setup-pandoc@v2
- uses: r-lib/actions/setup-tinytex@v2
- uses: r-lib/actions/setup-r@v2
with:
use-public-rspm: true
- uses: r-lib/actions/setup-renv@v2
- name: Кэширование результатов bookdown
uses: actions/cache@v4
with:
path: _bookdown_files
key: bookdown-${{ hashFiles('**/*Rmd') }}
restore-keys: bookdown-
- name: Построить сайт
run: source("_render.R")
shell: Rscript {0}
- name: Развернуть книгу 🚀
if: github.event_name != 'pull_request'
uses: JamesIves/[email protected]
with:
branch: deploy
folder: _book
Ответ или решение
Для предоставления прав на запись для GitHub Actions в частном репозитории вашей организации, необходимо убедиться, что настройки разрешений установлены правильно как на уровне репозитория, так и в конфигурационном файле рабочего процесса.
Пошаговое руководство
-
Проверка настроек репозитория:
Убедитесь, что в настройках вашего репозитория установлены права доступа для действий в GitHub. Для этого выполните следующие шаги:- Перейдите в ваш репозиторий.
- Нажмите на вкладку Settings.
- В меню слева выберите Actions.
- Убедитесь, что выбран параметр Read and write permissions.
Это позволяет процессам GitHub Actions выполнять операции записи в ваш репозиторий.
-
Настройка прав в вашем файле workflow:
В файле вашего рабочего процесса (workflow), который вы предоставили, обратите внимание на секциюpermissions
. У вас указаноpermissions: read-all
, что может быть причиной проблемы. Для разрешения на запись следуйте следующему примеру:permissions: contents: write
Полный файл рабочего процесса будет выглядеть примерно так:
on: push: branches: [main, master] pull_request: branches: [main, master] workflow_dispatch: name: bookdown permissions: contents: write # Измените здесь jobs: bookdown: runs-on: ubuntu-latest concurrency: group: pkgdown-${{ github.event_name != 'pull_request' || github.run_id }} env: GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} steps: - uses: actions/checkout@v4 - uses: r-lib/actions/setup-pandoc@v2 - uses: r-lib/actions/setup-tinytex@v2 - uses: r-lib/actions/setup-r@v2 with: use-public-rspm: true - uses: r-lib/actions/setup-renv@v2 - name: Cache bookdown results uses: actions/cache@v4 with: path: _bookdown_files key: bookdown-${{ hashFiles('**/*Rmd') }} restore-keys: bookdown- - name: Build site run: source("_render.R") shell: Rscript {0} - name: Deploy book 🚀 if: github.event_name != 'pull_request' uses: JamesIves/[email protected] with: branch: deploy folder: _book
-
Проверка и тестирование:
После внесения изменений в файл рабочего процесса и настройки прав, выполните новый запуск GitHub Actions. Это поможет вам убедиться, что права на запись теперь действительны и ваше действие не будет выдавать ошибкуremote: Write access to repository not granted
.
Примечания
- Убедитесь, что ваш GitHub token (обычно переменная
GITHUB_TOKEN
) имеет достаточные привилегии для выполнения операций, требующих записи. - Если вы используете пользовательский токен доступа (PAT), убедитесь, что он также предоставляет необходимые разрешения для доступа к репозиторию.
Заключение
Следуя этим шагам, вы должны устранить проблему с правами на запись для ваших действий в GitHub. Регулярно проверяйте настройки и права доступа, чтобы избежать подобных проблем в будущем. Если вопросы останутся, обратитесь к документации GitHub или в службу поддержки для более детального анализа.