Предоставить права записывания для действий GitHub в репозитории частной организации

Вопрос или проблема

Я владелец организации на GitHub и создал приватный репозиторий в рамках этой организации. Я настраиваю действие GitHub, но оно не удается, потому что remote: Доступ на запись в репозиторий не предоставлен.

В настройках репозитория я выбрал права на чтение и запись:

Скриншот разрешений рабочего процесса, показывающий выбранные "Права на чтение и запись"

Тем не менее, когда действие запускается, включены только чтение:

Скриншот выполнения рабочего процесса, показывающий разрешения GITHUB_TOKEN, которые все "чтение"

Существует ли что-то еще, что мне нужно сделать, чтобы разрешить действию иметь права на запись?

ИЗМЕНЕНИЕ: Вот файл рабочего процесса:

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 в частном репозитории вашей организации, необходимо убедиться, что настройки разрешений установлены правильно как на уровне репозитория, так и в конфигурационном файле рабочего процесса.

Пошаговое руководство

  1. Проверка настроек репозитория:
    Убедитесь, что в настройках вашего репозитория установлены права доступа для действий в GitHub. Для этого выполните следующие шаги:

    • Перейдите в ваш репозиторий.
    • Нажмите на вкладку Settings.
    • В меню слева выберите Actions.
    • Убедитесь, что выбран параметр Read and write permissions.

    Это позволяет процессам GitHub Actions выполнять операции записи в ваш репозиторий.

  2. Настройка прав в вашем файле 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
  3. Проверка и тестирование:
    После внесения изменений в файл рабочего процесса и настройки прав, выполните новый запуск GitHub Actions. Это поможет вам убедиться, что права на запись теперь действительны и ваше действие не будет выдавать ошибку remote: Write access to repository not granted.

Примечания

  • Убедитесь, что ваш GitHub token (обычно переменная GITHUB_TOKEN) имеет достаточные привилегии для выполнения операций, требующих записи.
  • Если вы используете пользовательский токен доступа (PAT), убедитесь, что он также предоставляет необходимые разрешения для доступа к репозиторию.

Заключение

Следуя этим шагам, вы должны устранить проблему с правами на запись для ваших действий в GitHub. Регулярно проверяйте настройки и права доступа, чтобы избежать подобных проблем в будущем. Если вопросы останутся, обратитесь к документации GitHub или в службу поддержки для более детального анализа.

Оцените материал
Добавить комментарий

Капча загружается...