firstBitMarksistskaya / jenkins-lib

Jenkins shared library для 1С:Предприятие 8
MIT License
158 stars 67 forks source link

YAXUnit, вторая попытка #114

Closed ovcharenko-di closed 4 months ago

ovcharenko-di commented 5 months ago

Вместо #94 Решил выделить в отдельный PR, чтобы было удобно работать с ним напрямую.

Для решения проблемы с подключением расширений после доп. шагов инициализации (где могут создаваться пользователи ИБ) я добавил возможность использования vrunner.json в initInfoBase.

Summary by CodeRabbit

coderabbitai[bot] commented 5 months ago

Обзор изменений

Обновление зависимостей и расширение функциональности в проекте Jenkins. Добавлены новые методы для работы с файлами, поддержка конфигурации YAXUnit, а также улучшена логика загрузки расширений. Оптимизированы тесты и обновлены документации.

Изменения

Файлы Описание изменений
build.gradle.kts Обновление зависимости mockito-core, добавление пустых строк
src/.../IStepExecutor.groovy, src/.../StepExecutor.groovy Добавление метода writeFile
src/.../configuration/*.groovy Расширение поддержки конфигураций, добавление yaxunitOptions, обновление классов и методов
src/.../steps/*.groovy Добавление и обновление методов для работы с расширениями и тестами YAXUnit
vars/*.groovy Добавление и обновление скриптов для работы со стадиями и расширениями
test/.../*.groovy, test/.../*.java Добавление новых тестов и утверждений
README.md Обновление документации с учетом новых функций и тестов

Стих

🐇 "В коде мир создаю я новый,
🌟 Изменения вношу с любовью.
📜 Строк за строкой — как ноты в песне,
🛠️ Каждый коммит — мой маленький шедевр.
🎉 Пусть будет код чист, как звездный свет!"


Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

Share - [X](https://twitter.com/intent/tweet?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A&url=https%3A//coderabbit.ai) - [Mastodon](https://mastodon.social/share?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A%20https%3A%2F%2Fcoderabbit.ai) - [Reddit](https://www.reddit.com/submit?title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&text=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code.%20Check%20it%20out%3A%20https%3A//coderabbit.ai) - [LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fcoderabbit.ai&mini=true&title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&summary=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code)
Tips ### Chat There are 3 ways to chat with [CodeRabbit](https://coderabbit.ai): - Review comments: Directly reply to a review comment made by CodeRabbit. Example: - `I pushed a fix in commit .` - `Generate unit testing code for this file.` - `Open a follow-up GitHub issue for this discussion.` - Files and specific lines of code (under the "Files changed" tab): Tag `@coderabbitai` in a new review comment at the desired location with your query. Examples: - `@coderabbitai generate unit testing code for this file.` - `@coderabbitai modularize this function.` - PR comments: Tag `@coderabbitai` in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples: - `@coderabbitai generate interesting stats about this repository and render them as a table.` - `@coderabbitai show all the console.log statements in this repository.` - `@coderabbitai read src/utils.ts and generate unit testing code.` - `@coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.` Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. ### CodeRabbit Commands (invoked as PR comments) - `@coderabbitai pause` to pause the reviews on a PR. - `@coderabbitai resume` to resume the paused reviews. - `@coderabbitai review` to trigger a review. This is useful when automatic reviews are disabled for the repository. - `@coderabbitai resolve` resolve all the CodeRabbit review comments. - `@coderabbitai help` to get help. Additionally, you can add `@coderabbitai ignore` anywhere in the PR description to prevent this PR from being reviewed. ### CodeRabbit Configration File (`.coderabbit.yaml`) - You can programmatically configure CodeRabbit by adding a `.coderabbit.yaml` file to the root of your repository. - Please see the [configuration documentation](https://docs.coderabbit.ai/guides/configure-coderabbit) for more information. - If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: `# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json` ### Documentation and Community - Visit our [Documentation](https://coderabbit.ai/docs) for detailed information on how to use CodeRabbit. - Join our [Discord Community](https://discord.com/invite/GsXnASn26c) to get help, request features, and share feedback. - Follow us on [X/Twitter](https://twitter.com/coderabbitai) for updates and announcements.
nixel2007 commented 5 months ago

Может это, "скоммуницироваться в социуме" с @Segate-ekb на тему списка стейджей, когда грузить? Можно ещё vrunner.json прям в элемент Extension добавить

Segate-ekb commented 5 months ago

Может это, "скоммуницироваться в социуме" с @Segate-ekb на тему списка стейджей, когда грузить? Можно ещё vrunner.json прям в элемент Extension добавить

Ну как по мне, то проще всего предусмотреть возможность грузить везде, где используется предприятие+ дефолтная точка загрузки, как сейчас. На данный момент- это Смоуки, бдд, yaxunit и инициализация бд

ovcharenko-di commented 5 months ago

@nixel2007 добавил stash\unstash собранных расширений

Segate-ekb commented 5 months ago

Поменяй пожалуйста порядок стейджей ещё.

Сначала загрузка расширений, а потом первоначальный запуск базы. А то зачастую конфа которая заточена под расширение без него не отработает.

ivanmolodec commented 4 months ago

Я потестировал PR, шаг работает отлично, публикует и в jUnit и в Allure (хотя с аллюром вопрос - можно ли сгруппировать тесты, сейчас они идут просто по-одному списком, если публиковать в аллюр ещё дымовые/бдд то там каша получается). Есть один вопрос: 2024-04-26_13-29-51 Вот так выглядит сейчас сборочная линия, зачем нужен шаг загрузки расширений перед каждым шагом проверки? Чисто логически мы 1 раз загружаем все расширения (кроме яксюнита) вначале, далее они уже на всех шагах присутствуют. А вот как раз перед шагом юнит тестов надо загрузить яксюнит. Потому что сейчас у меня например дымовые стали падать потому что начали проверять открытие обработок яксюнита.

ovcharenko-di commented 4 months ago

@ivanmolodec загрузка\незагрузка расширения YAXUnit - это только один частный случай. Допускаю, что возможность загружать\не загружать то или иное расширение может пригодиться и в других стейджах. Соответственно, нужна гибкая настройка.

Кстати, если при запуске дымовых в базе стали открываться обработки YAXUnit, значит, проект сконфигурирован не совсем правильно: для расширения YAXUnit необходимо указать stages: ['yaxunit']. Тогда это расширение будет загружено только перед выполнением yaxunit.

Логика обработки расширений в пайплайне такая: 1) в базу загружаются все расширения, для которых в конфиге не указаны stages 2) выполняется архивация ИБ далее, параллельно для каждого stage: 3) выполняется разархивация ИБ 4) в базу загружаются расширения, для которых в конфиге в списке stages указан текущий stage

ivanmolodec commented 4 months ago

@ivanmolodec загрузка\незагрузка расширения YAXUnit - это только один частный случай. Допускаю, что возможность загружать\не загружать то или иное расширение может пригодиться и в других стейджах. Соответственно, нужна гибкая настройка.

Кстати, если при запуске дымовых в базе стали открываться обработки YAXUnit, значит, проект сконфигурирован не совсем правильно: для расширения YAXUnit необходимо указать stages: ['yaxunit']. Тогда это расширение будет загружено только перед выполнением yaxunit.

Логика обработки расширений в пайплайне такая:

  1. в базу загружаются все расширения, для которых в конфиге не указаны stages
  2. выполняется архивация ИБ далее, параллельно для каждого stage:
  3. выполняется разархивация ИБ
  4. в базу загружаются расширения, для которых в конфиге в списке stages указан текущий stage

Да, теперь понятно. Просто нигде в ридми это не прописано, или ткни меня туда) Если нет, то стоит дописать потому что не очевидно

ivanmolodec commented 4 months ago

Что-то у меня при такой настройке конфигурации он подключил расширение и при инициализации, и перед шагом юнит-тестов. Что я делаю не так?)


   "initInfobase": {
        "initMethod": "fromSource",
        "extensions": [
            {
                "name": "YAXUnit",
                "initMethod": "fromSource",
                "path": "src/cfe/YAXUnit",
                "stages": ["yaxunit"]
            }
        ]
    }
ovcharenko-di commented 4 months ago

@ivanmolodec посмотрю

nixel2007 commented 4 months ago

@ovcharenko-di посмотри нет ли конфликтов после мержа соседнего мр, пожалуйста.

ovcharenko-di commented 4 months ago

@nixel2007 ок, позже

ovcharenko-di commented 4 months ago

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

@nixel2007 влил develop, все по прежнему красиво

ivanmolodec commented 4 months ago

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

@nixel2007 влил develop, все по прежнему красиво

Спасибо! Проверил, загрузилось только перед шагом яксюнита, сборка полностью зеленая)

nixel2007 commented 4 months ago

@ovcharenko-di @ivanmolodec посоны, ещё один follow-up :(

nixel2007 commented 4 months ago

@ivanmolodec организуешь красивый скрин? :)

ivanmolodec commented 4 months ago

@ivanmolodec организуешь красивый скрин? :) jenkins-lib Не знаю насколько он красивый конечно)

nixel2007 commented 4 months ago

@ivanmolodec для полной красоты осталось едт настроить)

nixel2007 commented 4 months ago

Огромное спасибо, ребята!