Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Загрузка расширений в конфигурацию для прогона тестов. #104

Merged
merged 79 commits into from
Mar 17, 2024

Conversation

Segate-ekb
Copy link
Contributor

@Segate-ekb Segate-ekb commented Jan 19, 2024

Вот примерное видение того, как можно загружать расширения.

Реализовано:

  • Конвертация исходников в формате EDT для загрузки в конфигурацию
  • Сборка cfe из исходников
  • Получение cfe из интернета
  • Загрузка скомпилированных(скачанных) cfe в базу.

Summary by CodeRabbit

  • Новые функции

    • Добавлена конфигурация для автоматического обновления зависимостей через Dependabot.
    • Улучшена интеграция с GitHub Actions для сборки Gradle проектов.
    • Расширена функциональность для загрузки расширений в информационную базу, включая поддержку различных режимов синтаксической проверки и возможность загрузки из источника или интернета.
    • Добавлена новая зависимость для работы с файловыми операциями.
    • Обновлена версия в jenkinsResources/core-version.txt.
    • Введены изменения в конфигурацию Jenkins для поддержки загрузки расширений, включая новые поля и методы в соответствующих классах.
    • Добавлены новые этапы в Jenkins Pipeline для сборки из исходников и загрузки расширений в конфигурацию.
  • Исправления ошибок

    • Исправлено условие для удаления файла '1Cv8.1CD.zip' перед созданием нового архива.
  • Тесты

    • Добавлено утверждение для проверки пути в классе тестирования конфигурации задачи.

README.md Outdated Show resolved Hide resolved
Ivan Smirnov and others added 2 commits February 20, 2024 15:59
commit df9515f
Merge: d79e367 0899819
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date:   Tue Feb 13 16:55:11 2024 +0000

    Merge pull request firstBitMarksistskaya#109 from firstBitMarksistskaya/dependabot/github_actions/actions/checkout-4

commit 0899819
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date:   Tue Feb 13 16:53:45 2024 +0000

    Bump actions/checkout from 3 to 4

    Bumps [actions/checkout](https://github.com/actions/checkout) from 3 to 4.
    - [Release notes](https://github.com/actions/checkout/releases)
    - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
    - [Commits](actions/checkout@v3...v4)

    ---
    updated-dependencies:
    - dependency-name: actions/checkout
      dependency-type: direct:production
      update-type: version-update:semver-major
    ...

    Signed-off-by: dependabot[bot] <[email protected]>

commit d79e367
Merge: 1cfefc2 5bdca69
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date:   Tue Feb 13 16:53:11 2024 +0000

    Merge pull request firstBitMarksistskaya#108 from firstBitMarksistskaya/dependabot/github_actions/actions/setup-java-4

commit 5bdca69
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date:   Tue Feb 13 16:51:29 2024 +0000

    Bump actions/setup-java from 3 to 4

    Bumps [actions/setup-java](https://github.com/actions/setup-java) from 3 to 4.
    - [Release notes](https://github.com/actions/setup-java/releases)
    - [Commits](actions/setup-java@v3...v4)

    ---
    updated-dependencies:
    - dependency-name: actions/setup-java
      dependency-type: direct:production
      update-type: version-update:semver-major
    ...

    Signed-off-by: dependabot[bot] <[email protected]>

commit 1cfefc2
Author: Nikita Fedkin <[email protected]>
Date:   Tue Feb 13 17:51:01 2024 +0100

    Create dependabot.yml

commit 3a1c9fb
Merge: be33515 494f9b9
Author: Nikita Fedkin <[email protected]>
Date:   Tue Feb 13 17:43:26 2024 +0100

    Merge pull request firstBitMarksistskaya#107 from ivanmolodec/file-exist-bug

commit 494f9b9
Merge: 8c9a702 be33515
Author: Ivan Smirnov <[email protected]>
Date:   Tue Feb 13 19:38:25 2024 +0300

    Merge branch 'firstBitMarksistskaya:develop' into file-exist-bug

commit be33515
Author: Nikita Fedkin <[email protected]>
Date:   Tue Feb 13 17:29:25 2024 +0100

    Fix dependencies download

commit 8c9a702
Author: Ivan Smirnov <[email protected]>
Date:   Tue Feb 13 19:05:26 2024 +0300

    Внесены правки в yaml файл для ci

commit 7fb7fa1
Author: Ivan Smirnov <[email protected]>
Date:   Tue Feb 13 18:29:56 2024 +0300

    Возвращено создание папки build/out

commit bd943e9
Author: Ivan Smirnov <[email protected]>
Date:   Tue Feb 13 15:07:44 2024 +0300

    Добавлена проверка на существование файла 1Cv8.1CD.zip, удален дубль создания папки build/out
Copy link
Contributor

coderabbitai bot commented Feb 20, 2024

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

Walkthrough: Обновления вносят новую функциональность загрузки расширений в информационную базу, улучшают настройки Dependabot и GitHub Actions для Gradle, обновляют зависимости в build.gradle.kts и улучшают работу с расширениями в Jenkins.

Изменения:

Файлы Краткое описание изменений
.github/dependabot.yml Настройка Dependabot для обновлений версий.
.github/workflows/gradle.yml Обновлена настройка GitHub Actions для Gradle.
README.md Добавлена функциональность загрузки расширений.
build.gradle.kts Добавлен репозиторий mavenCentral() и новая зависимость.
jenkinsResources/core-version.txt Обновлена версия с 2.246 на 2.441.
src/ru/pulsar/jenkins/library/configuration/...
ConfigurationReader.groovy, InitInfoBaseOptions.groovy, InitExtensionMethod.groovy, JobConfiguration.groovy, TimeoutOptions.groovy, EdtToDesignerFormatTransformation.groovy, GetExtensions.groovy, LoadExtensions.groovy
Изменения для поддержки загрузки расширений.
test/integration/groovy/jobConfigurationTest.groovy, vars/getExtensions.groovy, vars/loadExtensions.groovy, vars/pipeline1C.groovy, vars/zipInfobase.groovy Добавлена поддержка и тестирование загрузки расширений.
src/ru/pulsar/jenkins/library/steps/...
EdtToDesignerFormatTransformation.groovy, GetExtensions.groovy, LoadExtensions.groovy
Улучшения в обработке и загрузке расширений в Jenkins.
src/ru/pulsar/jenkins/library/...
IStepExecutor.groovy, StepExecutor.groovy, steps/Cmd.groovy, steps/DesignerToEdtFormatTransformation.groovy, steps/EdtValidate.groovy, steps/RingCommand.groovy
Изменения в интерфейсах и классах для управления шагами и выполнения команд.
test/unit/groovy/ru/pulsar/jenkins/library/steps/CmdTest.java Модификации в тестах для управления выполнением команд с добавлением параметров и изменением типа возвращаемого значения.
vars/cmd.groovy, vars/ringCommand.groovy Обновления в функциях для выполнения команд с добавлением параметров и улучшением функциональности.

🐰✨

В мире кода новый рассвет,

Расширенья — наш секрет.

С Dependabot и Gradle вперёд,

Jenkins теперь ещё бодрей идёт.

🌟 В каждой строке — магия света,

🚀 И CodeRabbit следит за этим летом!

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

Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>.
    • Generate unit-tests 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 tests 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 tests.
    • @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.
  • The JSON schema for the configuration file is available here.
  • 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/coderabbit-overrides.v2.json

CodeRabbit Discord Community

Join our Discord Community to get help, request features, and share feedback.

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.

Review Status

Actionable comments generated: 4

Configuration used: CodeRabbit UI

Commits Files that changed from the base of the PR and between 8aac6e0 and 5088976.
Files ignored due to path filters (3)
  • resources/globalConfiguration.json is excluded by: !**/*.json
  • resources/schema.json is excluded by: !**/*.json
  • test/integration/resources/jobConfiguration.json is excluded by: !**/*.json
Files selected for processing (18)
  • .github/dependabot.yml (1 hunks)
  • .github/workflows/gradle.yml (1 hunks)
  • README.md (2 hunks)
  • build.gradle.kts (3 hunks)
  • jenkinsResources/core-version.txt (1 hunks)
  • src/ru/pulsar/jenkins/library/configuration/ConfigurationReader.groovy (2 hunks)
  • src/ru/pulsar/jenkins/library/configuration/InitInfoBaseOptions.groovy (1 hunks)
  • src/ru/pulsar/jenkins/library/configuration/InitMethod.groovy (1 hunks)
  • src/ru/pulsar/jenkins/library/configuration/JobConfiguration.groovy (1 hunks)
  • src/ru/pulsar/jenkins/library/configuration/TimeoutOptions.groovy (2 hunks)
  • src/ru/pulsar/jenkins/library/steps/EdtToDesignerFormatTransformation.groovy (4 hunks)
  • src/ru/pulsar/jenkins/library/steps/GetExtensions.groovy (1 hunks)
  • src/ru/pulsar/jenkins/library/steps/LoadExtensions.groovy (1 hunks)
  • test/integration/groovy/jobConfigurationTest.groovy (1 hunks)
  • vars/getExtensions.groovy (1 hunks)
  • vars/loadExtensions.groovy (1 hunks)
  • vars/pipeline1C.groovy (2 hunks)
  • vars/zipInfobase.groovy (1 hunks)
Files skipped from review due to trivial changes (1)
  • jenkinsResources/core-version.txt
Additional comments: 6
src/ru/pulsar/jenkins/library/configuration/InitMethod.groovy (1)
  • 1-12: Изменения в файле InitMethod.groovy корректны и соответствуют лучшим практикам программирования. Использование аннотаций @JsonProperty для указания имен свойств JSON является правильным подходом.
vars/zipInfobase.groovy (1)
  • 2-4: Добавление условной проверки для удаления существующего файла '1Cv8.1CD.zip' перед созданием нового архива и его сохранением улучшает надёжность скрипта, предотвращая потенциальные конфликты или ошибки.
vars/getExtensions.groovy (1)
  • 1-10: Изменения в файле getExtensions.groovy корректны. Скрипт правильно использует зависимости и разделение ответственности, создавая новый экземпляр GetExtensions и запуская его с предоставленной конфигурацией.
vars/loadExtensions.groovy (1)
  • 1-10: Изменения в файле loadExtensions.groovy корректны. Скрипт аналогичен getExtensions.groovy, но создаёт и запускает экземпляр LoadExtensions. Подход правильный и соответствует лучшим практикам Groovy.
vars/pipeline1C.groovy (2)
  • 79-90: Добавлен этап "Сборка из исходников" корректно использует условие для выполнения, основанное на необходимости загрузки расширений. Использование таймаута и создание директории выглядят адекватно задачам этапа. Убедитесь, что логика внутри этапа оптимизирована и соответствует лучшим практикам.
  • 122-132: Этап "Загрузка расширений в конфигурацию" также корректно реализован с учетом условия выполнения, зависящего от необходимости загрузки расширений. Применение таймаута соответствует ожиданиям. Рекомендуется проверить интеграцию и функциональность этого этапа в контексте всего пайплайна.

README.md Outdated Show resolved Hide resolved
README.md Outdated Show resolved Hide resolved
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.

Review Status

Actionable comments generated: 1

Configuration used: CodeRabbit UI

Commits Files that changed from the base of the PR and between 5088976 and ca6a31e.
Files selected for processing (1)
  • src/ru/pulsar/jenkins/library/steps/EdtToDesignerFormatTransformation.groovy (4 hunks)
Additional comments: 4
src/ru/pulsar/jenkins/library/steps/EdtToDesignerFormatTransformation.groovy (4)
  • 7-7: Добавлен импорт класса InitMethod, что соответствует описанию изменений.
  • 20-22: Добавлены константы для работы с расширениями. Это улучшает читаемость и поддерживаемость кода, позволяя легко изменять пути к расширениям в одном месте.
  • 42-50: Переменные для работы с директориями и путями организованы логично. Однако, стоит обратить внимание на использование метода getFilePath из FileUtils, который, судя по всему, предназначен для упрощения работы с путями. Убедитесь, что этот метод корректно обрабатывает различные операционные системы, особенно в контексте разделителей путей.
  • 56-58: Методы transformConfiguration и transformExtensions вызываются для трансформации конфигурации и расширений соответственно. Важно, что оба метода учитывают версию EDT, что позволяет гибко настраивать процесс трансформации. Убедитесь, что в документации четко описано, как определяется версия EDT и какие версии поддерживаются.

ivanovEV added 2 commits February 20, 2024 18:53
Добавил значения по умолчанию.
Убрал из ридми инфу по синтакс контролю расширений.
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.

Review Status

Actionable comments generated: 2

Configuration used: CodeRabbit UI

Commits Files that changed from the base of the PR and between ca6a31e and 1140af1.
Files selected for processing (6)
  • README.md (1 hunks)
  • src/ru/pulsar/jenkins/library/configuration/ConfigurationReader.groovy (2 hunks)
  • src/ru/pulsar/jenkins/library/configuration/InitExtentionMethod.groovy (1 hunks)
  • src/ru/pulsar/jenkins/library/configuration/InitInfoBaseOptions.groovy (1 hunks)
  • src/ru/pulsar/jenkins/library/configuration/JobConfiguration.groovy (1 hunks)
  • src/ru/pulsar/jenkins/library/steps/EdtToDesignerFormatTransformation.groovy (4 hunks)
Files skipped from review as they are similar to previous changes (4)
  • README.md
  • src/ru/pulsar/jenkins/library/configuration/ConfigurationReader.groovy
  • src/ru/pulsar/jenkins/library/configuration/InitInfoBaseOptions.groovy
  • src/ru/pulsar/jenkins/library/configuration/JobConfiguration.groovy
Additional comments: 3
src/ru/pulsar/jenkins/library/steps/EdtToDesignerFormatTransformation.groovy (3)
  • 7-7: Добавлен импорт InitMethod, который необходим для работы с методами инициализации расширений. Это улучшает читаемость и поддерживаемость кода, позволяя явно указывать метод инициализации.
  • 20-22: Добавлены константы для работы с директориями и zip-файлами расширений. Это улучшает читаемость кода и облегчает его поддержку, делая пути к файлам и директориям более предсказуемыми.
  • 60-63: Метод transformConfiguration обновлен для обработки проектного рабочего каталога. Это ключевое изменение, позволяющее корректно трансформировать конфигурацию из формата EDT в формат Конфигуратора.

ivanovEV and others added 28 commits March 17, 2024 09:43
Добавил значения по умолчанию.
Убрал из ридми инфу по синтакс контролю расширений.
Co-authored-by: Nikita Fedkin <[email protected]>
Убрал лишний перенос строки.
Добавил функционал для скачивания по локальному пути.
…rmation.groovy

Ребейз из девелопа
# Conflicts:
#	src/ru/pulsar/jenkins/library/steps/EdtToDesignerFormatTransformation.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.

Review Status

Actionable comments generated: 1

Configuration used: CodeRabbit UI

Commits Files that changed from the base of the PR and between aafa4a4 and d13caf5.
Files selected for processing (10)
  • src/ru/pulsar/jenkins/library/IStepExecutor.groovy (4 hunks)
  • src/ru/pulsar/jenkins/library/StepExecutor.groovy (4 hunks)
  • src/ru/pulsar/jenkins/library/steps/Cmd.groovy (1 hunks)
  • src/ru/pulsar/jenkins/library/steps/DesignerToEdtFormatTransformation.groovy (2 hunks)
  • src/ru/pulsar/jenkins/library/steps/EdtToDesignerFormatTransformation.groovy (3 hunks)
  • src/ru/pulsar/jenkins/library/steps/EdtValidate.groovy (2 hunks)
  • src/ru/pulsar/jenkins/library/steps/RingCommand.groovy (1 hunks)
  • test/unit/groovy/ru/pulsar/jenkins/library/steps/CmdTest.java (4 hunks)
  • vars/cmd.groovy (1 hunks)
  • vars/ringCommand.groovy (1 hunks)
Additional comments: 14
vars/ringCommand.groovy (1)
  • 4-8: Изменения в файле vars/ringCommand.groovy выглядят корректно. Не обнаружено проблем с точки зрения синтаксиса, логики или производительности.
vars/cmd.groovy (1)
  • 4-7: Добавление параметра returnStdout в функцию call улучшает гибкость использования. Убедитесь, что все вызовы этой функции в кодовой базе были обновлены с учетом нового параметра.
Verification successful

Изменения в сигнатуре функции cmd, включая добавление параметра returnStdout, корректно отражены в кодовой базе. Вызовы этой функции в проекте соответствуют новой сигнатуре, и новый параметр используется с учетом значений по умолчанию, где это необходимо. Это подтверждает, что изменения были успешно интегрированы в проект.

Scripts Executed

The following scripts were executed for the analysis:


Script:

#!/bin/bash
# Поиск вызовов функции cmd в проекте для проверки обновления параметров
rg --type groovy 'cmd\('

Length of output: 1462

src/ru/pulsar/jenkins/library/steps/RingCommand.groovy (1)
  • 19-28: Обработка ошибок в методе run класса RingCommand может привести к прерыванию выполнения, если сообщение содержит "error". Убедитесь, что это ожидаемое поведение в данном контексте.
src/ru/pulsar/jenkins/library/steps/EdtToDesignerFormatTransformation.groovy (7)
  • 7-7: Добавлен импорт InitExtensionMethod. Это изменение соответствует целям PR по улучшению механизма обработки расширений.
  • 19-21: Добавлены константы для директории расширений, zip-файла и stash. Эти константы улучшают читаемость и поддерживаемость кода, позволяя избежать "магических строк".
  • 41-47: Переменные srcDir, workspaceDir, projectWorkspaceDir, projectDir и configurationRoot объявлены и инициализированы для использования в процессе трансформации. Это изменение упрощает понимание логики работы с файловой системой.
  • 49-49: Добавлена переменная extensionRoot для указания корневой директории расширений. Это улучшение поддерживает новую функциональность по обработке расширений.
  • 52-56: Вызовы методов deleteDir, transformConfiguration и transformExtensions обеспечивают очистку рабочих директорий и трансформацию конфигурации и расширений. Важно убедиться, что обработка ошибок и логирование в этих методах реализованы корректно.
  • 58-65: Метод transformConfiguration отвечает за трансформацию конфигурации из формата EDT в формат Конфигуратора. Важно, чтобы в этом методе была реализована корректная обработка ошибок и детальное логирование для упрощения диагностики и устранения возможных проблем.
  • 71-92: Метод transformExtensions отвечает за трансформацию расширений. Важно проверить, что для каждого расширения, инициализируемого из исходного кода, происходит корректная трансформация и обработка ошибок. Также следует убедиться в наличии детального логирования.
src/ru/pulsar/jenkins/library/StepExecutor.groovy (4)
  • 3-3: Добавлен импорт hudson.FilePath. Это изменение необходимо для работы с файловой системой Jenkins и поддерживает добавление новых методов в класс.
  • 26-32: Изменены сигнатуры методов sh и bat для добавления параметра returnStdout. Это улучшение позволяет получать вывод команды напрямую, что может быть полезно для дальнейшей обработки результатов выполнения команд.
  • 61-67: Добавлен новый метод ringCommand. Это упрощает выполнение команд ring, используемых для работы с 1С:Enterprise Development Tools, и способствует централизации логики выполнения команд.
  • 129-133: Добавлен новый метод deleteDir, принимающий параметр FilePath. Это расширение функциональности позволяет более гибко управлять удалением директорий, используя объекты FilePath, что улучшает интеграцию с Jenkins API.

Comment on lines +24 to +26
if (returnStatus & returnStdout) {
steps.error("returnStatus and returnStdout are not supported at the same time")
}
Copy link
Contributor

Choose a reason for hiding this comment

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

Проверка в методе run, которая не позволяет одновременно использовать returnStatus и returnStdout, может ограничивать некоторые сценарии использования. Рассмотрите возможность пересмотра этой логики.

@nixel2007 nixel2007 merged commit 835873f into firstBitMarksistskaya:develop Mar 17, 2024
1 check passed
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.

4 participants