Skip to content

Conversation

@IT-Medved
Copy link

@IT-Medved IT-Medved commented Oct 18, 2025

Summary by CodeRabbit

Chores

  • Добавлены GitHub Actions для автоматизированной сборки и тестирования проекта.
  • Внедрены новые рабочие процессы, обеспечивающие кросс-платформное тестирование на Windows и Linux с поддержкой различных локалей и версий.
  • Добавлены вспомогательные действия для извлечения версий и управления расширениями.

@coderabbitai
Copy link

coderabbitai bot commented Oct 18, 2025

Walkthrough

В pull request добавлена полная инфраструктура CI/CD для проекта на 1C:Enterprise, включающая три новых GitHub Action для извлечения версий и загрузки расширений, а также четыре новых workflow для экспорта исходников, сборки артефактов на Windows и запуска тестов с матрицей по операционным системам и локалям.

Changes

Когорта / Файлы Описание изменений
GitHub Actions для поддержки
.github/actions/extract-version/action.yml, .github/actions/load-extension/action.yml
Новые composite действия: первое извлекает версию из файла Configuration.mdo через регулярное выражение; второе выполняет последовательность команд ibcmd для загрузки, применения и обновления расширений в InfoBase
Основной workflow тестирования
.github/workflows/perform-tests.yml
Главный workflow с триггерами на push и pull_request_target, определяет трёхэтапный pipeline: export_to_designer → build_artifacts → tests с матрицей по версиям 1C, локалям (ru_RU, en_US) и ОС (Windows, Ubuntu)
Workflow экспорта конфигурации
.github/workflows/step-export-xml.yml
Workflow для конвертации исходников из EDT-формата в конфигуратор: распаковка исходников, установка EDT, экспорт конфигурации и тестов в директорию export, архивирование и публикация артефакта
Workflow сборки артефактов
.github/workflows/step-build-artifacts-windows.yml
Windows-специфичный workflow для подготовки инструментов: установка 1C:Enterprise, создание информационной базы, импорт RAT и тестов, сохранение конфигурации и публикация артефактов с retention=1 day
Workflow запуска тестов
.github/workflows/step-run-tests.yml
Кросс-платформенный workflow для выполнения тестов с поддержкой Linux и Windows: настройка окружения (локали, DirectX, конфиг), запуск ibsrv, выполнение тестов через xvfb-run (Linux) или 1cv8c.exe (Windows), публикация JUnit-отчётов

Sequence Diagram(s)

sequenceDiagram
    participant GH as GitHub Actions
    participant Export as step-export-xml
    participant Build as step-build-artifacts-windows
    participant Test as step-run-tests
    
    GH->>Export: trigger (push/pull_request_target)
    activate Export
    Export->>Export: checkout sources
    Export->>Export: extract RAT version
    Export->>Export: install EDT 2023.1.2
    Export->>Export: export configuration & tests to export/
    Export->>Export: archive to export.7z
    Export-->>GH: artifact: designer-src
    deactivate Export
    
    GH->>Build: trigger (after export_to_designer)
    activate Build
    Build->>Build: download artifact (designer-src)
    Build->>Build: install 1C:Enterprise 8.3.21.1895
    Build->>Build: extract sources
    Build->>Build: create infobase
    Build->>Build: import RAT & tests
    Build->>Build: save configuration
    Build-->>GH: artifact: build-artifacts
    deactivate Build
    
    loop for each [v8_version, locale, os]
        GH->>Test: trigger (after build_artifacts)
        activate Test
        Test->>Test: download artifact (build-artifacts)
        Test->>Test: prepare OS environment
        Test->>Test: install 1C:Enterprise
        Test->>Test: create infobase & load extensions
        alt Linux
            Test->>Test: xvfb-run + ibsrv + tests
        else Windows
            Test->>Test: ibsrv + 1cv8c.exe tests
        end
        Test-->>GH: JUnit report + artifact
        deactivate Test
    end
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Причина: множество взаимосвязанных workflow файлов с условной логикой, матричными стратегиями, кросс-платформенными различиями (Linux/Windows), управлением процессами, обработкой артефактов и интеграцией с внешними действиями. Требуется отдельная проверка каждого workflow и понимание взаимодействия между ними.

Poem

🐰 Версии извлекаем, расширенья грузим в лад,
По 1C конфигуратору экспортируем назад,
На Windows собираем, тесты гонимся в строю,
Через Linux и Windows с матрицей беги́т беглую взлью,
JUnit отчёты шлём — CI/CD готов к работе!
🚀✨

Pre-merge checks and finishing touches

✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title Check ✅ Passed Заголовок "Установка ci" (CI Setup) полностью соответствует основным изменениям в пул-реквесте. Все добавленные файлы (.github/actions и .github/workflows) направлены на установку CI/CD инфраструктуры для проекта, включая GitHub Actions, рабочие процессы тестирования и расширения. Заголовок является concise, ясным и специфичным — разработчики, просматривая историю, сразу поймут, что это о настройке CI. Он не использует неинформативные термины и адекватно отражает главную цель изменений.
Docstring Coverage ✅ Passed No functions found in the changes. Docstring coverage check skipped.
✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (8)
.github/workflows/step-build-artifacts-windows.yml (1)

33-41: Закрепите версию действия вместо использования @main.

Использование @main делает workflow уязвимым к неожиданным изменениям в действии. Рекомендуется использовать конкретный тег версии.

-      uses: 1CDevFlow/onec-setup-action@main
+      uses: 1CDevFlow/onec-setup-action@v1  # или последняя доступная версия

Пожалуйста, проверьте последнюю стабильную версию действия 1CDevFlow/onec-setup-action и используйте её вместо @main.

.github/actions/extract-version/action.yml (1)

14-16: Добавьте обработку ошибок при извлечении версии.

Если файл Configuration.mdo не существует или не содержит тега <version>, grep вернёт пустую строку без ошибки. Это может привести к тихому сбою на следующих шагах.

     - name: Извлечение версии
       shell: bash
-      run: echo "version=$(cat ${{ inputs.path }}/Configuration/Configuration.mdo | grep -oP '(?<=<version>)[\d.]+')" >> $GITHUB_OUTPUT
+      run: |
+        VERSION=$(cat ${{ inputs.path }}/Configuration/Configuration.mdo | grep -oP '(?<=<version>)[\d.]+')
+        if [ -z "$VERSION" ]; then
+          echo "Error: Could not extract version from Configuration.mdo" >&2
+          exit 1
+        fi
+        echo "version=$VERSION" >> $GITHUB_OUTPUT
       id: extract_version
.github/actions/load-extension/action.yml (1)

13-18: Добавьте обработку ошибок для обеспечения целостности операций.

При разделении команд без проверки кодов выхода, если одна команда завершится с ошибкой, информационная база может остаться в непредсказуемом состоянии.

     - name: Загрузка расширения ${{inputs.name}}
       shell: bash
       run: |
+        set -e
         ibcmd infobase config load --db-path=file-db --extension=${{inputs.name}} --force ${{inputs.path}}
         ibcmd infobase config apply --db-path=file-db --extension=${{inputs.name}} --force
         ibcmd infobase config extension update --db-path=file-db --name=${{inputs.name}} --safe-mode=no --unsafe-action-protection=no
.github/workflows/step-export-xml.yml (3)

60-68: Исправьте опечатку и уточните название шага.

В названии шага есть опечатка "Ковертация" (должно быть "Конвертация"). Кроме того, это название не отражает, что конвертируется именно конфигурация, а не тесты (как в следующих шагах).

-    - name: Ковертация исходников конфигурации
+    - name: Конвертация исходников конфигурации

70-86: Устраните дублирование названия шага и исправьте опечатки.

Шаги на строках 70-77 и 79-86 имеют одинаковые названия "Ковертация исходников тестов" (с опечаткой), хотя конвертируют разные исходники (exts/rat vs tests). Это затрудняет отладку и понимание процесса.

-    - name: Ковертация исходников тестов
+    - name: Конвертация исходников RAT
       uses: alkoleft/onec-edtcli-command-action@main
       with:
         export: true
         from: exts/rat
         to: export/rat
         timeout: 15
       timeout-minutes: 15

-    - name: Ковертация исходников тестов
+    - name: Конвертация исходников тестов
       uses: alkoleft/onec-edtcli-command-action@main
       with:
         export: true
         from: tests
         to: export/tests
         timeout: 15
       timeout-minutes: 15

50-58: Закрепите версии действий вместо использования @main.

Использование @main для действий 1CDevFlow/onec-setup-action и alkoleft/onec-edtcli-command-action делает workflow уязвимым к неожиданным изменениям. Рекомендуется использовать конкретные теги версий.

Пожалуйста, обновите все ссылки на действия, чтобы использовать конкретные версии вместо @main.

.github/workflows/step-run-tests.yml (1)

110-123: Закрепите версию действия write-file-action.

Использование @master не рекомендуется в production-процессах. Следует использовать конкретный тег версии.

     - name: Создание файла конфигурации тестирования
-      uses: DamianReeves/write-file-action@master
+      uses: DamianReeves/write-file-action@v1

Пожалуйста, проверьте последнюю стабильную версию действия и используйте её вместо @master.

.github/workflows/perform-tests.yml (1)

25-28: Проверьте необходимость разрешений write для contents.

У workflow установлено contents: write, но не очевидно, зачем это нужно. Если workflow только читает содержимое репозитория, достаточно contents: read. Избыток разрешений представляет потенциальный риск безопасности.

Пожалуйста, убедитесь, что workflow фактически требует возможности записи в репозиторий. Если нет, измените на contents: read.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 33f2181 and 1753241.

📒 Files selected for processing (6)
  • .github/actions/extract-version/action.yml (1 hunks)
  • .github/actions/load-extension/action.yml (1 hunks)
  • .github/workflows/perform-tests.yml (1 hunks)
  • .github/workflows/step-build-artifacts-windows.yml (1 hunks)
  • .github/workflows/step-export-xml.yml (1 hunks)
  • .github/workflows/step-run-tests.yml (1 hunks)
🔇 Additional comments (1)
.github/workflows/step-run-tests.yml (1)

97-107: Рецензия некорректна: локальные действия требуют шага actions/checkout.

Рецензия предлагает использовать локальное действие ./.github/actions/load-extension, но это невозможно без предварительного добавления actions/checkout. В текущем рабочем процессе:

  • Используется workflow_call (переиспользуемый рабочий процесс)
  • Первый шаг загружает артефакты с помощью actions/download-artifact@v4
  • В рабочем процессе нет шага actions/checkout
  • Локальные действия требуют наличия кода в рабочей директории

Внешнее действие 1CDevFlow/workflows/actions/load-extension@main может быть намеренно использовано для этого типа рабочего процесса. Реализация предложения рецензии без добавления actions/checkout приведёт к ошибке выполнения.

Likely an incorrect or invalid review comment.

name: Конвертация исходников
uses: ./.github/workflows/step-export-xml.yml
with:
edt_version: 2023.1.2
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

нужно 2024 актуальную взять

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Помнится были какие-то проблемы с новой версией в gh actions

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

надо на edt cli переписать c ring

steps:

- name: Установка 1С:Предприятие
uses: 1CDevFlow/onec-setup-action@main
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

я соглашусь с замечаниями кролика, лучше использовать явную версию

timeout-minutes: 10

- name: Загрузка исходников в формате конфигуратора
uses: actions/download-artifact@v4
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

экшен с депендаботом нужно подключить, для обновления зависимостей GA

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants