Данный workflow - это переиспользуемая конфигурация GitHub-Actions, которая запускает серию проверок для модов на "Бесконечное лето". Workflow состоит из трех шагов:
-
Подготовка окружения
- Скачивание и кэширование нужной версии Ren'Py SDK (по умолчанию указана версия 8.1.3)
- Загрузка и распаковка "чистой версии" "Бесконечного лета" из Google Drive. Версия архива (для кэширования) и ID объекта в Google Drive задаются через входные параметры.
-
Запуск проверок (линтеров)
- Marker Lint: проверяет мод на наличие маркеров (например # TODO и # FIXME), заданных через конфигурационный файл
- Text Lint: проверяет текст мода на орфографические, стилистические и пунктуационные ошибки
- Basic Lint: встроенный линтер из Ren'Py SDK для проверки проблем с кодом
-
Вывод отчетов
- Отчет по каждому из шагов выводится в вкладку Actions внутри репозитория
- Создание файла вызова workflow
В корне репозитория по пути .github/workflows/
необходимо создать файл, например lint.yml
со следующим содержимым:
name: Lint ES Mod
on:
push:
branches: main
jobs:
lint:
uses: zImpact/es_mod_workflow/.github/workflows/[email protected]
with:
project_name: "Название вашего мода" # ОБЯЗАТЕЛЬНО: Название мода
sdk_version: "8.1.3" # Можно оставить значение по умолчанию
google_drive_id: "ВАШ_GOOGLE_DRIVE_ID" # ID архива с игрой
es_ver: "1" # Версия архива для кэширования
grammar_check_files: "scenario/main.rpy" # Файлы или папка для text-lint
exclusions: "exclusions.yml" # Файл со словами исключениями
output_type: "markdown" # Формат вывода отчета
folder: "code" # Папка для marker-lint
markers: "markers.yml" # Файл с маркерами для проверки
run_marker_lint: true # Запустить проверку маркеров
run_text_lint: true # Запустить текстовый линт
run_basic_lint: true # Запустить базовую проверку через Ren’Py линтер
- Настройка параметров
project_name
: название мода, будет использоваться для формирования пути, куда копируются файлы репозитория для проверки. Например, если мод лежит по путиEverlasting Summer/game/MyMod
, то в качестве значения параметраproject_name
нужно указатьMyMod
sdk_version
: версия Ren`Py SDK. По умолчанию указано значение "8.1.3"google_drive_id
: ID архива с игрой на Google Drive. Можно использовать "1MM3B6VRDXJDwQphj_sWuG8AthqIu8s-y" либо указать свойes_ver
: версия игры, используется для кэшированияgrammar_check_files
: список файлов для проверки в шагеText Lint
. Возможные варианты:- Проверка одного файла
grammar_check_files: code/scenario.rpy
- Проверка нескольких файлов
grammar_check_files: >- code/bsar_sotp_scenario.rpy code/bsar_insomnia_scenario.rpy
- Проверка целой папки
grammar_check_files: code/scenario
- Проверка одного файла
exclusions
: путь к файлам с исключениями для проверкиText Lint
. Файл должен быть формата.yml
. Слова, указанные в данном файле не будут восприниматься линтеров как ошибки. Пример файла:
words:
- "Нит"
- "опознаю"
- "Ниту"
- "Ниточнику"
- "Пионерчика"
- "красноволосыми"
- "врывов"
- "пара-тройка"
output_type
: формат вывода отчетов. Для GitHub Actions нужно оставитьmarkdown
, чтобы отчет автоматически скопировался в переменную окружения и вывелся в разделActions
. Так же возможен вариантconsole
folder
: путь к папке для поиска маркеров шагомMarker Lint
.markers
: путь к файлу с маркерами. Маркеры задаются в файле формата.yml
. Пример файла:
markers:
- "# TODO"
- "# FIXME"
run_marker_lint:
: нужно ли запускать поиск макеров (по умолчанию true)run_text_lint
: нужно ли запускать линтер текста (по умолчанию true)run_basic_lint
: нужно ли запускать линтер кода (по умолчанию true)
Данный workflow предоставляет возможность публиковать или обновлять предмет в мастерской Steam напрямую из GitHub-репозитория.
- Создание секретов
В настройках репозитория - Settings -> Secrets and variables -> Actions -> Repository secrets
необходимо добавить следующие секреты:
STEAM_USERNAME
: логин аккаунта, с которого будет публиковаться предметSTEAM_PASSWORD
: пароль от аккаунтаSTEAM_SHARED_SECRET
: shared_secret от аккаунта, получить можно, например, используя Steam Desktop Authenticator
- Создание конфига деплоя
В любом удобном месте внутри репозитория необходимо создать файл формата .yml
со следующим содержимым:
appid: "331470" # ID игры в Steam - для "Бесконечного лета" это 331470
publishedfileid: "null" # ID мода - null или ID опубликованного предмета
visibility: "2" # Видимость - 0: публичный, 1: для друзей, 2: для себя
title: "Мой мод!" # Название предмета
changenote: "Добавили новый текст" # Описание изменений
previewfile: "deploy/avatar.png" # Аватар предмета
project_name: "project" # Название мода
exclusions: # Файлы, которые НЕ БУДУТ загружены в мастерскую
- ".git"
- ".github"
- ".gitattributes"
- ".vscode"
- "scripts"
- "steamcmd"
- "build"
- "README.md"
- "deploy"
- Настройка параметров
appid
: ID игры в Steam, предмет для которой будет загружен. Для "Бесконечного лета" нужно установить 331470publishedfileid
: ID предмета в мастерской. При первой загрузке нужно указать значениеnull
для создания нового предмета. При обновлении мода, значение поля нужно поменять на ID созданного предмета, например3418334944
visibility
: видимость предмета в мастерской.- 0: для всех
- 1: только друзьям
- 2: для себя
title
: название предмета в мастерскойchangenote
: описание обновленияpreviewfile
: изображение предметаproject_name
: название мода, будет использоваться для формирования пути, куда копируются файлы репозитория для проверки. Например, если мод лежит по путиEverlasting Summer/game/MyMod
, то в качестве значения параметраproject_name
нужно указатьMyMod
exclusions
: список файлов, которые не будут загружены в мастерскую
- Создание файла вызова workflow
В корне репозитория по пути .github/workflows/
необходимо создать файл, например deploy.yml
со следующим содержимым:
name: Deploy to Steam Workshop
on:
workflow_dispatch:
jobs:
deploy:
uses: zImpact/es_mod_workflow/.github/workflows/[email protected]
with:
steam_config_path: "deploy/config.yml"
lint_workflow_file: "lint.yml"
branch: "main"
check_lint_status: false
secrets:
STEAM_USERNAME: "${{ secrets.STEAM_USERNAME }}"
STEAM_PASSWORD: "${{ secrets.STEAM_PASSWORD }}"
STEAM_SHARED_SECRET: "${{ secrets.STEAM_SHARED_SECRET }}"
- Деплой
Для деплоя необходимо перейти в раздел Actions
репозитория, слева будет список workflow. Необходимо выбрать то название, которое было указано в .yml
файле
В правой части экрана можно будет увидеть кнопку Run workflow
, на которую необходимо кликнуть
- Описание предмета, который будет загружен, берется из файла README.md в корне репозитория и конвертируется в Steam-формат с использованием библиотеки
md2steam
- Если workflow deploy_to_steam используется отдельно от lint_es_mod, то важно в
deploy.yml
указать значение переменнойcheck_lint_status
равнойfalse