Skip to content

Fix/Архивируем результаты EDT-валидации в отдельный архив#185

Open
Kyrales wants to merge 10 commits intofirstBitMarksistskaya:developfrom
Kyrales:fix/archive_Only_EDT_validation
Open

Fix/Архивируем результаты EDT-валидации в отдельный архив#185
Kyrales wants to merge 10 commits intofirstBitMarksistskaya:developfrom
Kyrales:fix/archive_Only_EDT_validation

Conversation

@Kyrales
Copy link
Contributor

@Kyrales Kyrales commented Oct 19, 2025

Архивируем результаты EDT-валидации в отдельный архив
Сейчас много файлов засоряют артефакты. В доработке: архивируем нужные необходимые для обработки сонаром в отдельный архив edt-validate-ResultForSonar.zip и помещаем в артефакты.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Oct 19, 2025

Warning

Rate limit exceeded

@nixel2007 has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 5 minutes and 2 seconds before requesting another review.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

📥 Commits

Reviewing files that changed from the base of the PR and between cff2078 and d71672d.

📒 Files selected for processing (1)
  • src/ru/pulsar/jenkins/library/steps/EdtValidate.groovy

Walkthrough

Обновлены константы путей результатов для EDT (добавлена подпапка edt-validate/) и изменена логика архивации: сохраняется stash, добавлен шаг копирования логов в директорию результатов и создание ZIP-архивов (edt-validate.zip и edt-validate-ResultsTransformer.zip) вместо единственного прямого archiveArtifacts.

Changes

Когорта / Файл(s) Описание изменений
Константы путей результатов
src/ru/pulsar/jenkins/library/steps/EdtValidate.groovy, src/ru/pulsar/jenkins/library/steps/ResultsTransformer.groovy
Обновлён RESULT_FILE: добавлена подпапка edt-validate/EdtValidate: build/out/edt-validate/edt-validate.out; ResultsTransformer: build/out/edt-validate/edt-issues.json.
Архивация и stash (EdtValidate)
src/ru/pulsar/jenkins/library/steps/EdtValidate.groovy
Убраны прямые вызовы archiveArtifacts(RESULT_FILE); сохранён stash(RESULT_STASH, RESULT_FILE); добавлена логика создания resultDir, копирования .log в эту директорию и формирования ZIP-архива edt-validate.zip как артефакта.
Архивация и stash (ResultsTransformer)
src/ru/pulsar/jenkins/library/steps/ResultsTransformer.groovy
Вместо прямого archiveArtifacts(RESULT_FILE) оставлен stash, добавлено вычисление resultDir на основе edtValidateFile и создание ZIP-архива edt-validate-ResultsTransformer.zip (архивирование содержимого resultDir).

Sequence Diagram(s)

sequenceDiagram
  autonumber
  actor Jenkins as Jenkins
  participant EdtValidate
  participant Workspace as Workspace
  participant Artifacts as Artifacts

  Jenkins->>EdtValidate: run validation
  EdtValidate->>Workspace: write `build/out/edt-validate/edt-validate.out`
  EdtValidate->>Jenkins: stash(RESULT_STASH, RESULT_FILE)
  EdtValidate->>Workspace: create resultDir, copy .log into resultDir
  EdtValidate->>Artifacts: zip resultDir -> edt-validate.zip
  Note right of Artifacts `#DDFFDD`: ZIP marked for archive (artifact)
Loading
sequenceDiagram
  autonumber
  actor Jenkins as Jenkins
  participant ResultsTransformer
  participant Workspace as Workspace
  participant Artifacts as Artifacts

  Jenkins->>ResultsTransformer: transform results
  ResultsTransformer->>Workspace: write `build/out/edt-validate/edt-issues.json`
  ResultsTransformer->>Jenkins: stash(RESULT_STASH, RESULT_FILE)
  ResultsTransformer->>Workspace: compute resultDir from edtValidateFile
  ResultsTransformer->>Artifacts: zip resultDir -> edt-validate-ResultsTransformer.zip
  Note right of Artifacts `#DDFFDD`: ZIP marked for archive (artifact)
Loading

Оценка усилий при рецензировании

🎯 2 (Простой) | ⏱️ ~12 минут

Возможные участки требующие внимания:

  • Корректность новых путей RESULT_FILE и совместимость с существующими потребителями/stash.
  • Логика создания resultDir и копирования .log (права, существование директорий).
  • Имена ZIP-архивов и их регистрация как артефактов (совпадение с CI-ожиданиями).

Возможно связанные PR

  • Поддержка 1cedtcli #133 — модификации в классе EdtValidate; затрагивает те же константы/поток валидации и архивации.

Рекомендуемые рецензенты

  • nixel2007

Стихотворение

🐰 Я кролик, радость в лапках таю,
Новые пути я в папке нашёл,
Stash и zip теперь вместе слетают,
Артефакты в edt-validate живут,
Пусть сборка по новому плывёт! 🎉

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
✅ Passed checks (2 passed)
Check name Status Explanation
Title Check ✅ Passed Заголовок "Fix/Архивируем результаты EDT-валидации в отдельный архив" полностью соответствует основным изменениям в Pull Request. Анализ фактических изменений показывает, что основная цель — переход от прямого архивирования файлов к созданию отдельных ZIP-архивов для результатов EDT-валидации в обоих измененных файлах (EdtValidate.groovy и ResultsTransformer.groovy). Заголовок ясно и конкретно описывает эту главную цель без лишних деталей, что делает его подходящим для истории коммитов.
Description Check ✅ Passed Описание Pull Request связано с изменениями в наборе кода. Оно объясняет цель изменения — архивирование результатов EDT-валидации в отдельный архив для уменьшения количества файлов в артефактах — что соответствует фактическим изменениям. Описание также упоминает намерение поместить необходимые для обработки Sonar файлы в отдельный архив, что совпадает с общей идеей реализации. Хотя конкретное имя архива в описании может отличаться от реальной реализации, основная цель и смысл изменений ясны и соответствуют changeset.

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
Contributor

@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 (2)
src/ru/pulsar/jenkins/library/steps/EdtValidate.groovy (1)

58-60: Рассмотрите удаление закомментированного кода.

Закомментированный код с пояснением лучше, чем просто удаление без объяснений, но теперь, когда результаты архивируются в zip-формате в ResultsTransformer.groovy (строки 78-82), эти строки, вероятно, больше не нужны.

Рекомендации:

  • Если это временное решение для тестирования, добавьте TODO с указанием следующих шагов
  • Если решение постоянное, удалите закомментированные строки, оставив только комментарий с объяснением
-// * Каратаев Олег - Убрана отправка в артефакты, т.к. непонятен смысл наличия данных артефактов в сборке
-//steps.archiveArtifacts("$DesignerToEdtFormatTransformation.WORKSPACE/.metadata/.log")
-//steps.archiveArtifacts(RESULT_FILE)
+// Архивирование артефактов перенесено в ResultsTransformer.groovy (см. edt-validate-ResultForSonar.zip)
 steps.stash(RESULT_STASH, RESULT_FILE)
src/ru/pulsar/jenkins/library/steps/ResultsTransformer.groovy (1)

78-82: Добавьте проверку существования директории перед архивированием.

Код не проверяет наличие директории перед вызовом steps.zip(). Это оставляет возможность ошибки, если resultDir не существует. В кодовой базе используется аналогичная защита в других местах — например, в PublishAllure.groovy (строка 48-49) и ZipInfobase.groovy (строка 46-47).

Рекомендуется добавить проверку:

 // Архивируем результат в отдельный архив и отправляем в артефакты.
 def resultDir = FileUtils.getFilePath("$edtValidateFile").getParent()
+if (!steps.fileExists("$resultDir")) {
+    Logger.println("Предупреждение: директория результатов не найдена: $resultDir")
+    return
+}
 String archivePath = "edt-validate-ResultForSonar.zip"
 Boolean archiveArtifacts = true
 steps.zip("$resultDir", archivePath, '', archiveArtifacts)

Также рекомендуется уточнить путь archivePath — добавить явную директорию (например, "build/out/edt-validate-ResultForSonar.zip"), как сделано в SyntaxCheck.groovy.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between a3e61e6 and e635098.

📒 Files selected for processing (2)
  • src/ru/pulsar/jenkins/library/steps/EdtValidate.groovy (2 hunks)
  • src/ru/pulsar/jenkins/library/steps/ResultsTransformer.groovy (2 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: build
🔇 Additional comments (2)
src/ru/pulsar/jenkins/library/steps/ResultsTransformer.groovy (1)

16-16: Обновление пути выглядит корректно.

Путь к файлу результатов обновлён с учётом новой структуры каталогов build/out/edt-validate/, что соответствует изменениям в EdtValidate.groovy.

src/ru/pulsar/jenkins/library/steps/EdtValidate.groovy (1)

14-14: Обновление пути выглядит корректно.

Путь к файлу результатов обновлён для использования выделенного подкаталога build/out/edt-validate/, что улучшает организацию артефактов и согласуется с изменениями в ResultsTransformer.groovy.

Copy link
Contributor

@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: 3

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between e635098 and cff2078.

📒 Files selected for processing (2)
  • src/ru/pulsar/jenkins/library/steps/EdtValidate.groovy (2 hunks)
  • src/ru/pulsar/jenkins/library/steps/ResultsTransformer.groovy (2 hunks)
🔇 Additional comments (4)
src/ru/pulsar/jenkins/library/steps/ResultsTransformer.groovy (2)

16-16: Путь обновлён для соответствия новой структуре директорий.

Изменение константы согласуется с централизацией результатов валидации в поддиректории edt-validate/.


78-82: Исправьте семантическую ясность кода и проверьте имя архива в описании PR.

При анализе обнаружены следующие моменты:

  1. Имя архива: Заявленное несоответствие с "edt-validate-ResultForSonar.zip" не удаётся проверить — описание PR недоступно. Подтвердите нужное имя в описании PR.

  2. Риск потери данных: Исходный файл валидации сохраняется, так как архив содержит весь каталог build/out/edt-validate/. Однако использование переменной edtValidateFile (оригинальный файл) для определения архивируемой директории трансформированных результатов семантически запутанно. Используйте вместо этого ResultsTransformer.RESULT_FILE для большей ясности.

  3. Обработка ошибок: Если трансформация (строки 56-72) завершится с ошибкой, архивирование все равно выполнится, но трансформированный файл может быть неполным. Рассмотрите добавление обработки ошибок.

src/ru/pulsar/jenkins/library/steps/EdtValidate.groovy (2)

14-14: Путь обновлён для соответствия новой структуре директорий.

Изменение константы согласуется с централизацией результатов валидации в поддиректории edt-validate/.


67-69: Проверьте соответствие имени архива требованиям PR.

Имя архива edt-validate.zip не совпадает с именем edt-validate-ResultForSonar.zip, указанным в описании PR.

Уточните, какое имя архива должно использоваться согласно требованиям, и обеспечьте согласованность именования между EdtValidate.groovy и ResultsTransformer.groovy.

Comment on lines +63 to +65
String resultLogFrom = FileUtils.getFilePath("$env.WORKSPACE/$DesignerToEdtFormatTransformation.WORKSPACE/.metadata/.log")
String resultLogTo = FileUtils.getFilePath("$env.WORKSPACE/$resultDir/.log")
FileUtils.loadFile(resultLogFrom, env, resultLogTo) // копируем лог в папку, которая будет архивироваться
Copy link
Contributor

@coderabbitai coderabbitai bot Oct 25, 2025

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

Копирование лога должно выполняться условно.

Код копирует лог из директории DesignerToEdtFormatTransformation.WORKSPACE/.metadata/.log, которая существует только для формата DESIGNER (строки 36-46). При использовании формата EDT (строки 46-50) этот путь не будет существовать, что приведёт к ошибке.

Оберните копирование лога в условие:

if (config.sourceFormat == SourceFormat.DESIGNER) {
    String resultLogFrom = FileUtils.getFilePath("$env.WORKSPACE/$DesignerToEdtFormatTransformation.WORKSPACE/.metadata/.log")
    String resultLogTo = FileUtils.getFilePath("$env.WORKSPACE/$resultDir/.log")
    FileUtils.loadFile(resultLogFrom, env, resultLogTo)
}
🤖 Prompt for AI Agents
In src/ru/pulsar/jenkins/library/steps/EdtValidate.groovy around lines 63 to 65,
the code always copies a log file from
DesignerToEdtFormatTransformation.WORKSPACE/.metadata/.log which only exists for
SourceFormat.DESIGNER and will fail for EDT; wrap the log-copy block in a
conditional that checks if config.sourceFormat == SourceFormat.DESIGNER and only
then compute resultLogFrom/resultLogTo and call FileUtils.loadFile so the copy
is skipped for non-DESIGNER formats.

Copy link
Member

Choose a reason for hiding this comment

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

@Kyrales посмотри на комментарий кролика, пожалуйста.

Copy link
Contributor

Choose a reason for hiding this comment

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

Seems like the humans are having a chat. I'll hop back into my burrow for now. If you need me again, just tag @coderabbitai in a new comment, and I'll come hopping out!

@Kyrales
Copy link
Contributor Author

Kyrales commented Dec 11, 2025

@nixel2007 почему не мержим в девелоп?

@nixel2007
Copy link
Member

@Kyrales сейчас все силы на bsl ls. Как доделаю релиз, вернусь к jenkins lib.

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
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