firstbitmarksistskaya / jenkins-lib Goto Github PK
View Code? Open in Web Editor NEWJenkins shared library для 1С:Предприятие 8
License: MIT License
Jenkins shared library для 1С:Предприятие 8
License: MIT License
@nixel2007 у меня тут https://git.oskk.1solution.ru/docker-images куча готовых образов, Можеть прикрутить их к сборке? Исходники я в ближайшее время начну публиковать в открытый доступ. Единственный момент по образам с 1С, публично не могу, но у меня есть приватный docker-registry
В теории это должно дать ускорение работы шага edt validate, так как едт не надо будет повторно строить проектный контекст
Если SourceFormat указан как EDT, то сборочная линия всегда принудительно собирает базу из исходников. Т.е. у пользователя вообще не остается возможности инициализировать базу из хранилища.
Надо либо предусмотреть такую возможность либо явно документировать ограничение
идея @zeegin
https://t.me/bsl_language_server/48681
Нужно создать внешнюю обработку-прокси для проверки внедрения БСП.
Эта обработка должна будет:
ПроверитьВнедрение()
Параметры:
Ну а в библиотеке должен быть такой шаг
Связано с #4
Как минимум к BDD
Что-то вроде preloadDTPath: "https://blablabla.dt"
Например, на оскрипте с либой gui
или на ос.вебе с публикацией в гх-пэйджес
Для документирования конфигурации можно добавить шаг с использованием библиотеки Автодокументирования
На пустой базе не возникнет таких ошибок при обновлении ИБ как то неуникальные записи в регистре сведений, не прошедшие обработчики обновления и так далее. Поэтому иногда имеет смысл подключаться к уже существующей базе и проводить проверки и тесты на ней.
Как сейчас:
Параметр nocacheuse
не используется при запуске vrunner
. Могу возникать ошибки из-за кеша платформы (в контейнерах такой проблемы нет).
Как будет:
В строку вызова команд с использованием vrunner
будет добавлен параметр nocacheuse
. Это позволит избежать проблем с кешем платформы.
Сейчас запуск шагов инициалиации завернут в catchError. Если инициализация упала, то об этом никак не узнать (кроме как посмотреть в аллюр, ну или зарушится вся остальная сборка).
Надо предусмотреть мягкую траекторию падения сборки, когда и независимые шаги бы выполнялись (например, синтакс-чеку или сонару не важна инициализация), и сборка бы была красная.
На данный момент, если используется SonarQube Community Edition, при шаге проверки сонаром выпадает ошибка
To use the property "sonar.branch.name" and analyze branches, Developer Edition or above is required
Обойти ошибку возможно, но было бы хорошо иметь поддержку Community Edition "из коробки"
Не знаю к какому репозиторию это относится больше, но проблема общая как для репозитория про докер так и для этого.
Конвертация исходников из формата EDT в формат конфигуратора происходит очень долго (от часа и больше), что в итоге приводит к завершению пайпа по таймауту. Агент стартуют в докере.
Есть предположения что:
Рассмотреть возможность +- синтаксиса для добавления/удаления режимов проверки из дефолтного списка/списка в конфиге vrunner
Чтобы была возможность переопределить globalConfiguration.json без необходимости форка репозитория
Если разработка ведётся без хранилища, неплохо было бы добавить возможность сперва запускать шаги валидации ЕДТ и выгружзки ring'ом из исходников в формат EDT, а затем уже запускать шаги подготовки иб из файлов.
Сохранил сообщение из какого-то чата в 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
Если мы ведем доработку типовой конфигурации, встраиваем доработки через свою подсистему согласно Документации, то для сонара можно вытягивать версию оттуда. т.к. версия типовой остается без изменения
В случае его отсутствия забирать последнюю версию из хранилища
Можно добавить раздел документирования, если все тесты пройдены успешно.
Нужно документировать АПИ если есть, с использованием библиотеки Swagger и сразу публиковать результаты веб сервере.
Динамический расчет блока enviroment? Общий враппер для всех классов? Враппер для шага cmd?
вероятно для пункта 2 нужно сделать небольшую абстракцию для получения пути к vrunner
Например, подготовительный запуск VA для инициализации параметров базы
Проблема в следующем - сборка валится на шаге 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)
Сделать стартовый скрипт (на груви?), с помощью которого можно было бы запустить отдельные шаги библиотеки из командной строки. Вроде:
groovy starter.groovy bdd
Стартер должен зарегистрировать некий дефолтный степ-экзекьютор на чистой джаве/груви (по примеру того, как это сделано в юнит-тестах, только без моков), прочитать jobConfiguration
, создать экземпляр класса Bdd
и выполнить у него run()
поддержать все step-классы (генератор или ручное добавление в какой-нибудь свитч в стартере)
Это должно с одной стороны упростить отладку и тестирование, а с другой предоставить возможность выполнять куски пайплайна точно с теми же настройками, как он будет выполняться на CI.
Дано:
Конфигурация в формате ЕДТ, лежит в репозитории гитлаба. С основной конфигурацией пайплайн работает, исходники собираются , проверочки работают, всё ок.
Встал вопрос - можно ли как-то реализовать также сборку расширений (расширения лежат в том же репе, рядом, по другому пути только) перед инициализацией базы ?
Изучил статью на инфостарте про тестирование в Postman
Статья оказалось очень актуальной, думаю не только для меня, почитал документацию, в ней есть инструкция по интеграции с Jenkins.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.