GitHub Action для загрузки заданий в LMS PumpRoom
Этот экшен упаковывает репозиторий с заданиями в ZIP-архив и загружает его на платформу PumpRoom.
- Создает ZIP-архив указанного каталога
- Автоматически исключает каталоги
.git
и.github
- Позволяет указать дополнительные файлы/каталоги для исключения
- Проверяет репозиторий на типовые ошибки
- Загружает архив в PumpRoom LMS
- Предоставляет подробные сообщения об ошибках в случае неудачной загрузки
ID школы (realm) и API-ключ для публикации заданий вы найдете в разделе Интеграция (GitHub) из панели администратора PumpRoom Admin.
Чтобы использовать это действие в вашем рабочем процессе, добавьте следующий шаг:
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Upload to PumpRoom
uses: inzhenerka/pumproom-publish@v1
with:
# Обязательно: ID школы из админки
realm: 'your-realm-name'
# Обязательно: Имя репозитория
repo_name: ${{ github.event.repository.name }}
# Обязательно: API-ключ для публикации из админки
api_key: ${{ secrets.api_key }}
# Каталог для архивации и загрузки (по умолчанию корень репозитория)
root_dir: ''
# Файлы и каталоги для исключения (разделенные запятыми)
ignore: '.idea,.vscode'
Параметр | Описание | Обязательный | По умолчанию |
---|---|---|---|
realm |
ID школы из админки | Да | |
repo_name |
Имя репозитория (без организации GitHub) | Да | |
api_key |
API-ключ для публикации из админки | Да | |
root_dir |
Каталог для архивации и загрузки | Нет | '' (корень репозитория) |
ignore |
Файлы и каталоги для исключения (через запятую) | Нет | '' |
name: Upload to PumpRoom
on:
push:
branches: [main]
jobs:
upload:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Upload to PumpRoom
uses: inzhenerka/pumproom-publish@v1
with:
realm: 'inzh'
repo_name: ${{ github.event.repository.name }}
api_key: ${{ secrets.api_key }}
ignore: '.idea,.vscode'
Примечание: Убедитесь, что вы сохранили свой API-ключ как секрет API_KEY в настройках вашего репозитория.
Файлы каждого задания должны располагаться в отдельной папке. Имя папки становится названием задания.
Каждое задание настраивается в едином корневом файле .inzhenerka.yml
. Вот его
простейший пример:
# yaml-language-server: $schema=https://pumproom-api.inzhenerka-cloud.com/inzhenerka_schema
pump_room:
backend: judge0
language: auto
visible_name: Демо
tasks:
- name: code_task1
- name: code_task2
framework: python_multi
- name: agent_task1
backend: agent
framework: helper
При работе с файлом IDE автоматически предложит описание полей и автоподстановку. Более подробная техническая документация предоставляется по запросу.
Требуется NodeJS версии 20 и выше.
- Установка зависимостей
bun install
- Компиляция JavaScript для распространения
bun bundle
- Запуск автотестов
bun run test
Для автоматической публикации новой версии действия используйте следующие команды:
# Для выпуска новой минорной версии (1.0.0 -> 1.1.0)
bun publish:minor
# Для выпуска новой патч-версии (1.0.0 -> 1.0.1)
bun publish:patch
Скрипт публикации выполнит следующие действия:
- Убедится, что выбрана ветка main
- Проверит наличие незакоммиченных изменений (выдаст ошибку, если они есть)
- Выполнит сборку проекта с помощью
bun all
илиnpm run all
- Обновит версию в package.json и создаст тег
- Закоммитит результат сборки
- Отправит изменения и теги в удаленный репозиторий
- Объединит ветку main в v1 и отправит изменения