GithubHelp home page GithubHelp logo

firstbitmarksistskaya / jenkins-lib Goto Github PK

View Code? Open in Web Editor NEW
153.0 153.0 64.0 629 KB

Jenkins shared library для 1С:Предприятие 8

License: MIT License

Java 12.02% Groovy 87.98%
hacktoberfest jenkins

jenkins-lib's People

Contributors

666bounty999 avatar dependabot[bot] avatar ivanmolodec avatar kozstlink avatar kuzja086 avatar nguyen26052004 avatar nixel2007 avatar otymko avatar ovcharenko-di avatar segate-ekb avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

jenkins-lib's Issues

Документирование OpenApi

Можно добавить раздел документирования, если все тесты пройдены успешно.
Нужно документировать АПИ если есть, с использованием библиотеки Swagger и сразу публиковать результаты веб сервере.

Долгая конвертация из Формата EDT

Не знаю к какому репозиторию это относится больше, но проблема общая как для репозитория про докер так и для этого.
Конвертация исходников из формата EDT в формат конфигуратора происходит очень долго (от часа и больше), что в итоге приводит к завершению пайпа по таймауту. Агент стартуют в докере.
Есть предположения что:

  1. Для Контейнера установлено какое-то ограничение по памяти. Но я не знаю как это можно проверить?
  2. Нужно заменять значение параметра xmax в файле 1сedt.ini, но тогда это надо делать во время сборки контейнера, т.е. тогда не понятно как управлять этим значением.
  3. Может это только у меня такая проблема?

Добавить поддержку SonarQube без бранч-плагина

На данный момент, если используется SonarQube Community Edition, при шаге проверки сонаром выпадает ошибка

To use the property "sonar.branch.name" and analyze branches, Developer Edition or above is required

Обойти ошибку возможно, но было бы хорошо иметь поддержку Community Edition "из коробки"

Добавить step для проверки внедрения БСП

идея @zeegin
https://t.me/bsl_language_server/48681

Нужно создать внешнюю обработку-прокси для проверки внедрения БСП.
Эта обработка должна будет:

  • создать объект обработки проверки внедрения
  • вызывать метод программного интерфейса ПроверитьВнедрение()
  • обойти ТЧ списка собранных ошибок и создать файл с ошибками
  • в формате, пригодном для SQ, либо отдельным артефактом

Параметры:

  • путь к выгрузке конфигурации (взять из "глобальных" параметров)
  • путь к обработке проверки внедрения БСП
  • исправлять ошибки = Ложь
  • проверяемые\исключаемые подсистемы = (Все|Список)
  • формат отчета = (xlsx|genericIssue)
  • путь к файлу отчета

Ну а в библиотеке должен быть такой шаг

Как работать с расширениями?

Дано:
Конфигурация в формате ЕДТ, лежит в репозитории гитлаба. С основной конфигурацией пайплайн работает, исходники собираются , проверочки работают, всё ок.
Встал вопрос - можно ли как-то реализовать также сборку расширений (расширения лежат в том же репе, рядом, по другому пути только) перед инициализацией базы ?

Добавить возможность использовать имеющуюся ИБ (файловая/серверная) с обновлением из хранилища

На пустой базе не возникнет таких ошибок при обновлении ИБ как то неуникальные записи в регистре сведений, не прошедшие обработчики обновления и так далее. Поэтому иногда имеет смысл подключаться к уже существующей базе и проводить проверки и тесты на ней.

Формат EDT блокирует возможность инициализации ИБ из хранилища

Если SourceFormat указан как EDT, то сборочная линия всегда принудительно собирает базу из исходников. Т.е. у пользователя вообще не остается возможности инициализировать базу из хранилища.

Надо либо предусмотреть такую возможность либо явно документировать ограничение

https://github.com/firstBitSemenovskaya/jenkins-lib/blob/13e04b994fe0fdddd59258b97312c9db29b5aaf7/src/ru/pulsar/jenkins/library/configuration/JobConfiguration.groovy#L81-L83

cmd runner для библиотеки.

Сделать стартовый скрипт (на груви?), с помощью которого можно было бы запустить отдельные шаги библиотеки из командной строки. Вроде:

groovy starter.groovy bdd

Стартер должен зарегистрировать некий дефолтный степ-экзекьютор на чистой джаве/груви (по примеру того, как это сделано в юнит-тестах, только без моков), прочитать jobConfiguration, создать экземпляр класса Bdd и выполнить у него run()

поддержать все step-классы (генератор или ручное добавление в какой-нибудь свитч в стартере)

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

Сигнализировать об ошибках на шаге initSteps

Сейчас запуск шагов инициалиации завернут в catchError. Если инициализация упала, то об этом никак не узнать (кроме как посмотреть в аллюр, ну или зарушится вся остальная сборка).

Надо предусмотреть мягкую траекторию падения сборки, когда и независимые шаги бы выполнялись (например, синтакс-чеку или сонару не важна инициализация), и сборка бы была красная.

Учесть при запуске `vrunner` параметр `nocacheuse`

Как сейчас:
Параметр nocacheuse не используется при запуске vrunner. Могу возникать ошибки из-за кеша платформы (в контейнерах такой проблемы нет).

Как будет:
В строку вызова команд с использованием vrunner будет добавлен параметр nocacheuse. Это позволит избежать проблем с кешем платформы.

На шаге pre-stage не получается получить LFS файлы

Проблема в следующем - сборка валится на шаге pre-stage, судя по всему - не получается получить LFS файлы (с репозиториями без LFS - pre-stage проходит без проблем).
Правильно я понимаю, что это ошибка агента а не либы?

конец лога вот (после там идут пропуски шагов уже по ошибке):

 > git rev-parse --resolve-git-dir /var/jenkins_home/caches/git-636940b106640d6d40b6c927263db2cd/.git # timeout=10
Setting origin to http://10.11.1.190:7080/root/AUN3.git
 > git config remote.origin.url http://10.11.1.190:7080/root/AUN3.git # timeout=10
Fetching origin...
Fetching upstream changes from origin
 > git --version # timeout=10
 > git --version # 'git version 2.30.2'
 > git config --get remote.origin.url # timeout=10
using GIT_ASKPASS to set credentials jenkins доступ к корпоративному GitLAB
 > git fetch --tags --force --progress -- origin +refs/heads/*:refs/remotes/origin/* # timeout=10
Seen branch in repository origin/feature/pp_dev
Seen branch in repository origin/master
Seen branch in repository origin/om_master
Seen branch in repository origin/pp_master
Seen branch in repository origin/release/aun_type
Seen branch in repository origin/release/pp_dev
Seen 6 remote branches
Obtained Jenkinsfile from 063c78d7bf4235df633c16a520d9bb10f7e9ddca
Loading library [email protected]
Attempting to resolve v0.4.1 from remote references...
 > git --version # timeout=10
 > git --version # 'git version 2.30.2'
using GIT_ASKPASS to set credentials токен доступа на GitHUB
 > git ls-remote -h -- https://github.com/firstBitSemenovskaya/jenkins-lib.git # timeout=10
Could not find v0.4.1 in remote references. Pulling heads to local for deep search...
 > git rev-parse --resolve-git-dir /var/jenkins_home/caches/git-9c03cf723b33cd6c727c7c9287fd0300/.git # timeout=10
Setting origin to https://github.com/firstBitSemenovskaya/jenkins-lib.git
 > git config remote.origin.url https://github.com/firstBitSemenovskaya/jenkins-lib.git # timeout=10
Fetching origin...
Fetching upstream changes from origin
 > git --version # timeout=10
 > git --version # 'git version 2.30.2'
 > git config --get remote.origin.url # timeout=10
using GIT_ASKPASS to set credentials токен доступа на GitHUB
 > git fetch --tags --force --progress -- origin +refs/heads/*:refs/remotes/origin/* # timeout=10
 > git rev-parse v0.4.1^{commit} # timeout=10
 > git branch -a -v --no-abbrev --contains c046dc92f73a2fe0d5032e0c8955844a12c377eb # timeout=10
Selected match: develop revision c046dc92f73a2fe0d5032e0c8955844a12c377eb
Selected Git installation does not exist. Using Default
The recommended git tool is: NONE
using credential jencins_github_token
 > git rev-parse --resolve-git-dir /var/jenkins_home/workspace/AUN_feature_pp_dev@libs/jenkins-lib/.git # timeout=10
Fetching changes from the remote Git repository
 > git config remote.origin.url https://github.com/firstBitSemenovskaya/jenkins-lib.git # timeout=10
Fetching without tags
Fetching upstream changes from https://github.com/firstBitSemenovskaya/jenkins-lib.git
 > git --version # timeout=10
 > git --version # 'git version 2.30.2'
using GIT_ASKPASS to set credentials токен доступа на GitHUB
 > git fetch --no-tags --force --progress -- https://github.com/firstBitSemenovskaya/jenkins-lib.git +refs/heads/*:refs/remotes/origin/* # timeout=10
Checking out Revision c046dc92f73a2fe0d5032e0c8955844a12c377eb (develop)
 > git config core.sparsecheckout # timeout=10
 > git checkout -f c046dc92f73a2fe0d5032e0c8955844a12c377eb # timeout=10
Commit message: "Merge branch 'develop'"
 > git rev-list --no-walk c046dc92f73a2fe0d5032e0c8955844a12c377eb # timeout=10
[Pipeline] Start of Pipeline
[Pipeline] timeout
Timeout set to expire in 2 hr 0 min
[Pipeline] {
[Pipeline] timestamps
[Pipeline] {
[Pipeline] stage
[Pipeline] { (pre-stage)
[Pipeline] node
18:31:02  Still waiting to schedule task
18:31:02  ‘agt-ature_pp_dev_10-12’ is offline
18:31:06  Running on agt-ature_pp_dev_10-12 in /home/jenkins/workspace/AUN_feature_pp_dev
[Pipeline] {
[Pipeline] checkout
18:31:07  The recommended git tool is: NONE
18:31:19  using credential jencins_gitlab_pass
18:31:19  Cloning the remote Git repository
18:31:19  Cloning with configured refspecs honoured and without tags
18:31:19  Cloning repository http://10.11.1.190:7080/root/AUN3.git
18:31:19   > git init /home/jenkins/workspace/AUN_feature_pp_dev # timeout=10
18:31:19  Fetching upstream changes from http://10.11.1.190:7080/root/AUN3.git
18:31:19   > git --version # timeout=10
18:31:19   > git --version # 'git version 2.30.2'
18:31:19  using GIT_ASKPASS to set credentials jenkins доступ к корпоративному GitLAB
18:31:19   > git fetch --no-tags --force --progress -- http://10.11.1.190:7080/root/AUN3.git +refs/heads/*:refs/remotes/origin/* # timeout=10
18:33:50  Avoid second fetch
18:33:50  Checking out Revision 063c78d7bf4235df633c16a520d9bb10f7e9ddca (feature/pp_dev)
18:33:50   > git config remote.origin.url http://10.11.1.190:7080/root/AUN3.git # timeout=10
18:33:50   > git config --add remote.origin.fetch +refs/heads/*:refs/remotes/origin/* # timeout=10
18:33:50   > git config core.sparsecheckout # timeout=10
18:33:50   > git checkout -f 063c78d7bf4235df633c16a520d9bb10f7e9ddca # timeout=10

на шаге в логе вот это

hudson.plugins.git.GitException: Command "git checkout -f 063c78d7bf4235df633c16a520d9bb10f7e9ddca" returned status code 128:
stdout: 
stderr: Downloading AUN/src/CommonTemplates/Драйвер1СПринтерЧеков/Template.addin (10 MB)
Error downloading object: AUN/src/CommonTemplates/Драйвер1СПринтерЧеков/Template.addin (fda6167): Smudge error: Error downloading AUN/src/CommonTemplates/Драйвер1СПринтерЧеков/Template.addin (fda6167ec4c0a551a22019239567eac70eb7ca12fc6e1bb49dc8edcbc213907b): batch response: Fatal error: Server error: http://10.11.1.190:7080/root/AUN3.git/info/lfs/objects/batch

Errors logged to /home/jenkins/workspace/AUN_feature_pp_dev/.git/lfs/logs/20211121T153714.970606425.log
Use `git lfs logs last` to view the log.
error: external filter 'git-lfs filter-process' failed
fatal: AUN/src/CommonTemplates/Драйвер1СПринтерЧеков/Template.addin: smudge filter lfs failed

	at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:2681)
	at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.access$1100(CliGitAPIImpl.java:86)
	at org.jenkinsci.plugins.gitclient.CliGitAPIImpl$9.execute(CliGitAPIImpl.java:2999)
Also:   hudson.remoting.Channel$CallSiteStackTrace: Remote call to JNLP4-connect connection from 10.0.0.2/10.0.0.2:46082
		at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1797)
		at hudson.remoting.UserRequest$ExceptionResponse.retrieve(UserRequest.java:356)
		at hudson.remoting.Channel.call(Channel.java:1001)
		at org.jenkinsci.plugins.gitclient.RemoteGitImpl$CommandInvocationHandler.execute(RemoteGitImpl.java:145)
		at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
		at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
		at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
		at java.base/java.lang.reflect.Method.invoke(Method.java:566)
		at org.jenkinsci.plugins.gitclient.RemoteGitImpl$CommandInvocationHandler.invoke(RemoteGitImpl.java:131)
		at com.sun.proxy.$Proxy112.execute(Unknown Source)
		at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1352)
		at org.jenkinsci.plugins.workflow.steps.scm.SCMStep.checkout(SCMStep.java:129)
		at org.jenkinsci.plugins.workflow.steps.scm.SCMStep$StepExecutionImpl.run(SCMStep.java:97)
		at org.jenkinsci.plugins.workflow.steps.scm.SCMStep$StepExecutionImpl.run(SCMStep.java:84)
		at org.jenkinsci.plugins.workflow.steps.SynchronousNonBlockingStepExecution.lambda$start$0(SynchronousNonBlockingStepExecution.java:47)
		at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
		at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
		at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
		at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
		at java.base/java.lang.Thread.run(Thread.java:829)
Caused: hudson.plugins.git.GitException: Could not checkout 063c78d7bf4235df633c16a520d9bb10f7e9ddca
	at org.jenkinsci.plugins.gitclient.CliGitAPIImpl$9.execute(CliGitAPIImpl.java:3023)
	at org.jenkinsci.plugins.gitclient.RemoteGitImpl$CommandInvocationHandler$GitCommandMasterToSlaveCallable.call(RemoteGitImpl.java:160)
	at org.jenkinsci.plugins.gitclient.RemoteGitImpl$CommandInvocationHandler$GitCommandMasterToSlaveCallable.call(RemoteGitImpl.java:153)
	at hudson.remoting.UserRequest.perform(UserRequest.java:211)
	at hudson.remoting.UserRequest.perform(UserRequest.java:54)
	at hudson.remoting.Request$2.run(Request.java:376)
	at hudson.remoting.InterceptingExecutorService.lambda$wrap$0(InterceptingExecutorService.java:78)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
	at hudson.remoting.Engine$1.lambda$newThread$0(Engine.java:122)
	at java.base/java.lang.Thread.run(Thread.java:832)
Finished: FAILURE

в .gitattributes присутствует
*.addin filter=lfs diff=lfs merge=lfs -text
и как я понимаю в логе этот шаблон - первый файл попавший по фильтру (пробовал их менять)
соответственно вопрос -
подскажите как работать с лфс правильно? агента собирал из соседнего тут репозитория (onec-docker)

Добавить шаг выгрузки из формата EDT

Если разработка ведётся без хранилища, неплохо было бы добавить возможность сперва запускать шаги валидации ЕДТ и выгружзки ring'ом из исходников в формат EDT, а затем уже запускать шаги подготовки иб из файлов.

Дать возможность использовать vrunner из глобального каталога библиотек, а не oscript_modules

  1. installLocalDependencies нужно вызывать только в том случае, если в корне проекта есть файл packagedef
  2. при вызове vrunner надо проверять, что в существует каталог oscript_modules/vanessa-runner. Если он есть, вызывать vrunner из oscript_modules/bin/vrunner, если нет, то глобальный vrunner

вероятно для пункта 2 нужно сделать небольшую абстракцию для получения пути к vrunner

Использование docker образов в сборочной линии

@nixel2007 у меня тут https://git.oskk.1solution.ru/docker-images куча готовых образов, Можеть прикрутить их к сборке? Исходники я в ближайшее время начну публиковать в открытый доступ. Единственный момент по образам с 1С, публично не могу, но у меня есть приватный docker-registry

Определение Версии

Сохранил сообщение из какого-то чата в Telegram от Артура Аюханова.

Пример для общего модуля.
Для MODULE_PATH нужно указать свой путь к модулю обновления ИБ
SET MODULE_PATH=./src/cf/CommonModules/ОбновлениеИнформационнойБазыКАИнфостарт/Ext/Module.bsl
(grep -Pom1 "(?<=ТекущаяВерсия = "")[^""]+" %MODULE_PATH% > BSL_VERSION.txt) && (set /P BSL_VERSION=< BSL_VERSION.txt) && SET BSL_VERSION

Далее передача в качестве параметра для запуска проверки SonarQube
sonar-scanner -Dsonar.host.url=%SONAR_SERVER% -Dsonar.login=%SONAR_TOKEN% -Dsonar.projectVersion=%BSL_VERSION%

вариант запуска для Windows

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

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.