Действие GitHub, которое обновляет файл рабочего процесса другого действия

#github #github-actions

Вопрос:

У меня есть два действия на GitHub в одном и том же репозитории. Я пытаюсь обновить одно из другого, но при попытке зафиксировать и перенести изменения я получаю следующую ошибку:

! [remote rejected] HEAD -> some-branch (refusing to allow a GitHub App to create or update workflow .github/workflows/the-other-action.yml without workflows permission)

Это упрощенная версия действия GH, которое я пытаюсь запустить:

 name: my-action

on:
  workflow_dispatch:
  schedule:
    - cron: "0 9 * * *"

jobs:
  components:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout the code
        uses: actions/checkout@v2

      - name: Update the other Action
        run: |
          # Do something to .github/workflows/the-other-action.yaml here

      - name: Create Pull Request
        uses: peter-evans/create-pull-request@v3
        with:
            token: ${{ secrets.GITHUB_TOKEN }}
            branch: some-branch
            commit-message: Updated stuff
 

Я пытаюсь понять , как дать workflows разрешение на GITHUB_TOKEN это, но не уверен, как это сделать?

(Для контекста: я выполняю это действие один раз в день, чтобы проверить, выпущена ли новая версия инструмента, используемого в другом действии. Если это так, он создает PR, обновляющий другое действие, чтобы вместо него использовать более новую версию)

Комментарии:

1. Здесь вам нужно будет использовать PAT с разрешением на рабочие процессы, а GITHUB_TOKEN не с определенной областью действия. Это ${{ secrets.GITHUB_TOKEN }} твой ПЭТ? Если это так, то есть проблема, потому что вы не можете добавлять секреты с GITHUB_ префиксом .

2. Спасибо @GuiFalourd! GITHUB_TOKEN это токен по умолчанию, а не PAT. Но в итоге я использовал ПЭТ в качестве обходного пути. Хорошо знать, что тогда это невозможно с помощью токена по умолчанию.

3. Отлично! 😀 Если это решило вашу проблему, могу ли я добавить официальный ответ на ваш вопрос?

4. @GuiFalourd, конечно!

Ответ №1:

Здесь вам нужно использовать Личный токен доступа с разрешением на рабочие процессы, а не тот GITHUB_TOKEN , который имеет определенную область действия.

Более того, если это ${{ secrets.GITHUB_TOKEN }} ваш ПЭТ, может возникнуть проблема, потому что вы не можете добавлять секреты с префиксом GITHUB_. Поэтому вам придется переименовать секрет, следуя этому синтаксису.