Запустил свой GitHub action, выпуски загрузились на сайты, но... в списках изменения нет списка модов! После работы action они выглядят так:

«Это бета-версия русификатора для модов Minecraft 1.20.x.

Если вы обнаружите ошибки в этой версии, пожалуйста, сообщите об этом!

Эта бета-версия включает переводы следующих модов:

Список изменений: https://github.com/RushanM/Minecraft-Mods-Russian-Translation/compare/b6...b7»

В чём проблема? Почему нет списка модов?

Вот и сам код:

name: Мастер выпусков

on:
  workflow_dispatch:

jobs:
  build:
    runs-on: ubuntu-latest
    permissions:
      contents: write
    steps:
      - name: Клонирование репозитория
        uses: actions/checkout@v2

      - name: Установка Python
        uses: actions/setup-python@v5
        with:
          python-version: '3.12' 

      - name: Установка зависимостей
        run: pip install gspread oauth2client requests

      - name: Установка утилиты ZIP
        run: sudo apt-get install -y zip

      - name: Проверка последнего бета-выпуска
        id: get_latest_release
        uses: actions/github-script@v6
        with:
          github-token: ${{ secrets.GITHUB_TOKEN }}
          script: |
            const fs = require('fs');
            const token = core.getInput("github-token");
            const headers = {
              "Authorization": `token ${token}`,
              "Accept": "application/vnd.github.v3+json"
            };

            const response = await fetch(`https://api.github.com/repos/${context.repo.owner}/${context.repo.repo}/releases`, {
              method: "GET",
              headers: headers
            });
            const releases = await response.json();

            console.log('Выпуски:', releases);

            let next_version;
            let prev_version;
            if (releases.length === 0) {
              next_version = 1;
              prev_version = 0;
            } else {
              const betaReleases = releases
                .filter(release => release.tag_name.startsWith('b'))
                .map(release => parseInt(release.tag_name.replace('b', ''), 10))
                .filter(version => !isNaN(version))
                .sort((a, b) => b - a);

              console.log('Отфильтрованные бета-выпуски:', betaReleases);

              if (betaReleases.length > 0) {
                prev_version = betaReleases[0];
                next_version = prev_version + 1;
              } else {
                prev_version = 0;
                next_version = 1;
              }
            }

            console.log('Предыдущая версия:', prev_version);
            console.log('Следующая версия:', next_version);

            fs.appendFileSync(process.env.GITHUB_OUTPUT, `next_version=${next_version}\n`);
            fs.appendFileSync(process.env.GITHUB_OUTPUT, `prev_version=${prev_version}\n`);

      - name: Генерация списка модов для каждого выпуска
        id: generate_mod_list
        env:
          GOOGLE_SERVICE_ACCOUNT_KEY: ${{ secrets.GOOGLE_SERVICE_ACCOUNT_KEY }}
          CF_API_KEY: ${{ secrets.CF_API_KEY }}
        shell: python
        run: |
          import os
          import json
          import re
          import gspread
          from oauth2client.service_account import ServiceAccountCredentials
          import requests

          service_account_info = json.loads(os.environ['GOOGLE_SERVICE_ACCOUNT_KEY'])
          
          scopes = ['https://www.googleapis.com/auth/spreadsheets.readonly']
          creds = ServiceAccountCredentials.from_json_keyfile_dict(service_account_info, scopes)
          client = gspread.authorize(creds)
          
          sheet_id = '1kGGT2GGdG_Ed13gQfn01tDq2MZlVOC9AoiD1s3SDlZE'
          sheet = client.open_by_key(sheet_id)
          worksheet = sheet.sheet1
          
          data = worksheet.get_all_records()
          
          from collections import defaultdict

          mod_lists = defaultdict(list)
          for row in data:
              proofread = str(row.get('proofread', '')).strip()
              if proofread and proofread not in ['', 'FALSE']:
                  gameVer = str(row.get('gameVer', '')).strip()
                  mod_name = row.get('name', '').strip()
                  modrinth_id = row.get('modrinthId', '').strip()
                  curseforge_id = row.get('curseforgeId', '').strip()
                  
                  if modrinth_id and modrinth_id.upper() != 'FALSE':
                      # Получаем ссылку на Modrinth
                      response = requests.get(f'https://api.modrinth.com/v2/project/{modrinth_id}')
                      if response.status_code == 200:
                          mod_data = response.json()
                          mod_url = mod_data.get('url', f'https://modrinth.com/mod/{modrinth_id}')
                      else:
                          mod_url = f'https://modrinth.com/mod/{modrinth_id}'
                  elif curseforge_id and curseforge_id.upper() != 'FALSE':
                      # Получаем ссылку на CurseForge
                      API_KEY = os.environ.get('CF_API_KEY')
                      headers = {
                          'Accept': 'application/json',
                          'x-api-key': API_KEY
                      }
                      response = requests.get(f'https://api.curseforge.com/v1/mods/{curseforge_id}', headers=headers)
                      if response.status_code == 200:
                          mod_data = response.json().get('data', {})
                          mod_url = mod_data.get('links', {}).get('websiteUrl', f'https://www.curseforge.com/minecraft/mc-mods/{curseforge_id}')
                      else:
                          mod_url = f'https://www.curseforge.com/minecraft/mc-mods/{curseforge_id}'
                  else:
                      mod_url = '' # Надлежащего идентификатора нет, получить ссылку невозможно
                  
                  mod_entry = f'* [{mod_name}]({mod_url})' if mod_url else f'* {mod_name}'
                  mod_lists[gameVer].append(mod_entry)

          # Устанавливаем выводы
          with open(os.environ['GITHUB_OUTPUT'], 'a') as gh_out:
              for gameVer, mods in mod_lists.items():
                  mod_list_str = '\n'.join(mods)
                  output_name = f'mod_list_{gameVer.replace(".", "_").replace("-", "_")}'
                  gh_out.write(f'{output_name}<<EOF\n')
                  gh_out.write(f'{mod_list_str}\n')
                  gh_out.write('EOF\n')

      - name: Создание архивов выпусков для каждой из версий игр
        run: |
          for version in 1.7 1.12 1.16 1.17 1.18 1.19 1.20 1.21; do
            cd "Набор ресурсов/$version"
            zip -r ../../Rus-For-Mods-$version-B${{ steps.get_latest_release.outputs.next_version }}.zip assets dynamicmcpack.json pack.mcmeta respackopts.json5
            cd ../../
            zip -j -g Rus-For-Mods-$version-B${{ steps.get_latest_release.outputs.next_version }}.zip "Набор ресурсов/pack.png" "Набор ресурсов/peruse_or_bruise.txt"
          done

      - name: Создание тега для выпуска
        id: create_tag
        run: |
          tag_name="b${{ steps.get_latest_release.outputs.next_version }}"
          git tag $tag_name
          git push origin $tag_name
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

      - name: Создание выпуска
        id: create_release
        uses: softprops/action-gh-release@v2
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          body: |
            Это автоматический бета-выпуск всех переводов проекта. В отличие от альфа-выпуска, качество переводов здесь значительно выше, поскольку включены только те переводы, чьё качество достигло достаточно высокого уровня. Однако из-за этого охваченный спектр модов, сборок модов и наборов шейдеров значительно уже.
            
            Этот выпуск является кандидатом на релиз. Если вы заметили какие-либо ошибки в этом выпуске, пожалуйста, сообщите об этом в разделе issues или отправьте сообщение [Дефлекте](https://github.com/RushanM)!
          tag_name: b${{ steps.get_latest_release.outputs.next_version }}
          name: Бета-выпуск №${{ steps.get_latest_release.outputs.next_version }}
          draft: false
          prerelease: true

      - name: Загрузка архивов в выпуск
        run: |
          for version in 1.7 1.12 1.16 1.17 1.18 1.19 1.20 1.21; do
            asset_path="./Rus-For-Mods-$version-B${{ steps.get_latest_release.outputs.next_version }}.zip"
            asset_name="Rus-For-Mods-$version-B${{ steps.get_latest_release.outputs.next_version }}.zip"
            echo "Uploading $asset_name"
            gh release upload b${{ steps.get_latest_release.outputs.next_version }} "$asset_path" --clobber
          done
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

      - name: Публикация 1.7 на CurseForge и Modrinth
        uses: Kir-Antipov/mc-publish@v3.3
        with:
          curseforge-id: 374772
          curseforge-token: ${{ secrets.CF_API_KEY }}
          modrinth-id: GsoCvyCO
          modrinth-featured: false
          modrinth-token: ${{ secrets.MODRINTH_API_KEY }}
          files: |
            ./Rus-For-Mods-1.7-B${{ steps.get_latest_release.outputs.next_version }}.zip
          name: Бета-версия №${{ steps.get_latest_release.outputs.next_version }} для MC 1.7.x
          version: 1.7-B${{ steps.get_latest_release.outputs.next_version }}
          version-type: beta
          changelog: |
            Это бета-версия русификатора для модов Minecraft 1.7.x.

            Если вы обнаружите ошибки в этой версии, пожалуйста, сообщите об этом!

            Эта бета-версия включает переводы следующих модов:

            ${{ steps.generate_mod_list.outputs.mod_list_1_7 }}

            Список изменений: https://github.com/RushanM/Minecraft-Mods-Russian-Translation/compare/b${{ steps.get_latest_release.outputs.prev_version }}...b${{ steps.get_latest_release.outputs.next_version }}
          loaders: minecraft
          game-versions: |
            >=1.7 <1.8
          game-version-filter: releases

      - name: Публикация 1.12 на CurseForge и Modrinth
        uses: Kir-Antipov/mc-publish@v3.3
        with:
          curseforge-id: 374772
          curseforge-token: ${{ secrets.CF_API_KEY }}
          modrinth-id: GsoCvyCO
          modrinth-featured: false
          modrinth-token: ${{ secrets.MODRINTH_API_KEY }}
          files: |
            ./Rus-For-Mods-1.12-B${{ steps.get_latest_release.outputs.next_version }}.zip
          name: Бета-версия №${{ steps.get_latest_release.outputs.next_version }} для MC 1.12.x
          version: 1.12-B${{ steps.get_latest_release.outputs.next_version }}
          version-type: beta
          changelog: |
            Это бета-версия русификатора для модов Minecraft 1.12.x.

            Если вы обнаружите ошибки в этой версии, пожалуйста, сообщите об этом!

            Эта бета-версия включает переводы следующих модов:

            ${{ steps.generate_mod_list.outputs.mod_list_1_12 }}

            Список изменений: https://github.com/RushanM/Minecraft-Mods-Russian-Translation/compare/b${{ steps.get_latest_release.outputs.prev_version }}...b${{ steps.get_latest_release.outputs.next_version }}
          loaders: minecraft
          game-versions: |
            >=1.12 <1.13
          game-version-filter: releases

      - name: Публикация 1.16 на CurseForge и Modrinth
        uses: Kir-Antipov/mc-publish@v3.3
        with:
          curseforge-id: 374772
          curseforge-token: ${{ secrets.CF_API_KEY }}
          modrinth-id: GsoCvyCO
          modrinth-featured: false
          modrinth-token: ${{ secrets.MODRINTH_API_KEY }}
          files: |
            ./Rus-For-Mods-1.16-B${{ steps.get_latest_release.outputs.next_version }}.zip
          name: Бета-версия №${{ steps.get_latest_release.outputs.next_version }} для MC 1.16.x
          version: 1.16-B${{ steps.get_latest_release.outputs.next_version }}
          version-type: beta
          changelog: |
            Это бета-версия русификатора для модов Minecraft 1.16.x.

            Если вы обнаружите ошибки в этой версии, пожалуйста, сообщите об этом!

            Эта бета-версия включает переводы следующих модов:

            ${{ steps.generate_mod_list.outputs.mod_list_1_16 }}

            Список изменений: https://github.com/RushanM/Minecraft-Mods-Russian-Translation/compare/b${{ steps.get_latest_release.outputs.prev_version }}...b${{ steps.get_latest_release.outputs.next_version }}
          loaders: minecraft
          game-versions: |
            >=1.16 <1.17
          game-version-filter: releases
          dependencies: |
            respackopts(optional){modrinth:TiF5QWZY}{curseforge:430090}#(ignore:github)

      - name: Публикация 1.17 на CurseForge и Modrinth
        uses: Kir-Antipov/mc-publish@v3.3
        with:
          curseforge-id: 374772
          curseforge-token: ${{ secrets.CF_API_KEY }}
          modrinth-id: GsoCvyCO
          modrinth-featured: false
          modrinth-token: ${{ secrets.MODRINTH_API_KEY }}
          files: |
            ./Rus-For-Mods-1.17-B${{ steps.get_latest_release.outputs.next_version }}.zip
          name: Бета-версия №${{ steps.get_latest_release.outputs.next_version }} для MC 1.17.x
          version: 1.17-B${{ steps.get_latest_release.outputs.next_version }}
          version-type: beta
          changelog: |
            Это бета-версия русификатора для модов Minecraft 1.17.x.

            Если вы обнаружите ошибки в этой версии, пожалуйста, сообщите об этом!

            Эта бета-версия включает переводы следующих модов:

            ${{ steps.generate_mod_list.outputs.mod_list_1_17 }}

            Список изменений: https://github.com/RushanM/Minecraft-Mods-Russian-Translation/compare/b${{ steps.get_latest_release.outputs.prev_version }}...b${{ steps.get_latest_release.outputs.next_version }}
          loaders: minecraft
          game-versions: |
            >=1.17 <1.18
          game-version-filter: releases
          dependencies: |
            dynamicpack(optional){modrinth:IT6fZgjc}#(ignore:github)
            respackopts(optional){modrinth:TiF5QWZY}{curseforge:430090}#(ignore:github)

      - name: Публикация 1.18 на CurseForge и Modrinth
        uses: Kir-Antipov/mc-publish@v3.3
        with:
          curseforge-id: 374772
          curseforge-token: ${{ secrets.CF_API_KEY }}
          modrinth-id: GsoCvyCO
          modrinth-featured: false
          modrinth-token: ${{ secrets.MODRINTH_API_KEY }}
          files: |
            ./Rus-For-Mods-1.18-B${{ steps.get_latest_release.outputs.next_version }}.zip
          name: Бета-версия №${{ steps.get_latest_release.outputs.next_version }} для MC 1.18.x
          version: 1.18-B${{ steps.get_latest_release.outputs.next_version }}
          version-type: beta
          changelog: |
            Это бета-версия русификатора для модов Minecraft 1.18.x.

            Если вы обнаружите ошибки в этой версии, пожалуйста, сообщите об этом!

            Эта бета-версия включает переводы следующих модов:

            ${{ steps.generate_mod_list.outputs.mod_list_1_18 }}

            Список изменений: https://github.com/RushanM/Minecraft-Mods-Russian-Translation/compare/b${{ steps.get_latest_release.outputs.prev_version }}...b${{ steps.get_latest_release.outputs.next_version }}
          loaders: minecraft
          game-versions: |
            >=1.18 <1.19
          game-version-filter: releases
          dependencies: |
            dynamicpack(optional){modrinth:IT6fZgjc}#(ignore:github)
            respackopts(optional){modrinth:TiF5QWZY}{curseforge:430090}#(ignore:github)

      - name: Публикация 1.19 на CurseForge и Modrinth
        uses: Kir-Antipov/mc-publish@v3.3
        with:
          curseforge-id: 374772
          curseforge-token: ${{ secrets.CF_API_KEY }}
          modrinth-id: GsoCvyCO
          modrinth-featured: false
          modrinth-token: ${{ secrets.MODRINTH_API_KEY }}
          files: |
            ./Rus-For-Mods-1.19-B${{ steps.get_latest_release.outputs.next_version }}.zip
          name: Бета-версия №${{ steps.get_latest_release.outputs.next_version }} для MC 1.19.x
          version: 1.19-B${{ steps.get_latest_release.outputs.next_version }}
          version-type: beta
          changelog: |
            Это бета-версия русификатора для модов Minecraft 1.19.x.

            Если вы обнаружите ошибки в этой версии, пожалуйста, сообщите об этом!

            Эта бета-версия включает переводы следующих модов:

            ${{ steps.generate_mod_list.outputs.mod_list_1_19 }}

            Список изменений: https://github.com/RushanM/Minecraft-Mods-Russian-Translation/compare/b${{ steps.get_latest_release.outputs.prev_version }}...b${{ steps.get_latest_release.outputs.next_version }}
          loaders: minecraft
          game-versions: |
            >=1.19 <1.20
          game-version-filter: releases
          dependencies: |
            better-resource-pack-sorting(optional){modrinth:SpY2M2I9}{curseforge:556855}#(ignore:github)
            dynamicpack(optional){modrinth:IT6fZgjc}#(ignore:github)
            respackopts(optional){modrinth:TiF5QWZY}{curseforge:430090}#(ignore:github)

      - name: Публикация 1.20 на CurseForge и Modrinth
        uses: Kir-Antipov/mc-publish@v3.3
        with:
          curseforge-id: 374772
          curseforge-token: ${{ secrets.CF_API_KEY }}
          modrinth-id: GsoCvyCO
          modrinth-featured: false
          modrinth-token: ${{ secrets.MODRINTH_API_KEY }}
          files: |
            ./Rus-For-Mods-1.20-B${{ steps.get_latest_release.outputs.next_version }}.zip
          name: Бета-версия №${{ steps.get_latest_release.outputs.next_version }} для MC 1.20.x
          version: 1.20-B${{ steps.get_latest_release.outputs.next_version }}
          version-type: beta
          changelog: |
            Это бета-версия русификатора для модов Minecraft 1.20.x.

            Если вы обнаружите ошибки в этой версии, пожалуйста, сообщите об этом!

            Эта бета-версия включает переводы следующих модов:

            ${{ steps.generate_mod_list.outputs.mod_list_1_20 }}

            Список изменений: https://github.com/RushanM/Minecraft-Mods-Russian-Translation/compare/b${{ steps.get_latest_release.outputs.prev_version }}...b${{ steps.get_latest_release.outputs.next_version }}
          loaders: minecraft
          game-versions: |
            >=1.20 <1.21
          game-version-filter: releases
          dependencies: |
            better-resource-pack-sorting(optional){modrinth:SpY2M2I9}{curseforge:556855}#(ignore:github)
            dynamicpack(optional){modrinth:IT6fZgjc}#(ignore:github)
            respackopts(optional){modrinth:TiF5QWZY}{curseforge:430090}#(ignore:github)

      - name: Публикация 1.21 на CurseForge и Modrinth
        uses: Kir-Antipov/mc-publish@v3.3
        with:
          curseforge-id: 374772
          curseforge-token: ${{ secrets.CF_API_KEY }}
          modrinth-id: GsoCvyCO
          modrinth-featured: false
          modrinth-token: ${{ secrets.MODRINTH_API_KEY }}
          files: |
            ./Rus-For-Mods-1.21-B${{ steps.get_latest_release.outputs.next_version }}.zip
          name: Бета-версия №${{ steps.get_latest_release.outputs.next_version }} для MC 1.21.x
          version: 1.21-B${{ steps.get_latest_release.outputs.next_version }}
          version-type: beta
          changelog: |
            Это бета-версия русификатора для модов Minecraft 1.21.x.

            Если вы обнаружите ошибки в этой версии, пожалуйста, сообщите об этом!

            Эта бета-версия включает переводы следующих модов:

            ${{ steps.generate_mod_list.outputs.mod_list_1_21 }}

            Список изменений: https://github.com/RushanM/Minecraft-Mods-Russian-Translation/compare/b${{ steps.get_latest_release.outputs.prev_version }}...b${{ steps.get_latest_release.outputs.next_version }}
          loaders: minecraft
          game-versions: |
            >=1.21 <1.22
          game-version-filter: releases
          dependencies: |
            dynamicpack(optional){modrinth:IT6fZgjc}#(ignore:github)
            respackopts(optional){modrinth:TiF5QWZY}{curseforge:430090}#(ignore:github)