Size: a a a

2021 February 05

M

MAdMAx in jenkins_ru
начал ковырять CaSC и такой вопрос возник
получается тут идеология такая, что мы для определённых пайплайнов (одной или нескольких, возможно) поднимаем свой "временный" инстанс jenkins, без агентов?

или всё-таки лучше хранить весь каталог jenkins, и использовать сам инстанс как "постоянный"?

есть что-то прочитать про это?
источник

D

Dmitrич in jenkins_ru
MAdMAx
начал ковырять CaSC и такой вопрос возник
получается тут идеология такая, что мы для определённых пайплайнов (одной или нескольких, возможно) поднимаем свой "временный" инстанс jenkins, без агентов?

или всё-таки лучше хранить весь каталог jenkins, и использовать сам инстанс как "постоянный"?

есть что-то прочитать про это?
а вы про Configuration as Code ?
источник

M

MAdMAx in jenkins_ru
Да
источник

D

Dmitrич in jenkins_ru
Идеалогия jcasc это описание конфигурации jenkins декларативно и\или кодом, а что вы подразумеваете под временными инстансами и инстанс без агентов я не очень понял. можете перефразировать?
источник

M

MAdMAx in jenkins_ru
Недочитал доку, сорри(
источник

KT

Kseniya Taktasheva in jenkins_ru
ребята, кто-то использует SQLPlus Script Runner? Не понимаю, почему он не может найти файл с тнс
источник

KT

Kseniya Taktasheva in jenkins_ru
Using ORACLE_HOME =/usr/lib/oracle/19.10/client64
--------------------------------------------------------------------------
Getting SQLPlus version
[DEBUG] ORACLE_HOME = /usr/lib/oracle/19.10/client64
[DEBUG] LD_LIBRARY_PATH  = /usr/lib/oracle/19.10/client64/lib
SQL*Plus exec file  = sqlplus
--------------------------------------------------------------------------
Statement:
/usr/lib/oracle/19.10/client64/bin/sqlplus -v  
--------------------------------------------------------------------------
[test] $ /usr/lib/oracle/19.10/client64/bin/sqlplus -v

SQL*Plus: Release 19.0.0.0.0 - Production
Version 19.10.0.0.0

Process exited with status 0
--------------------------------------------------------------------------
detected host  = ***d.ru
--------------------------------------------------------------------------
Using ORACLE_HOME =/usr/lib/oracle/19.10/client64
--------------------------------------------------------------------------
Running defined script on ASSERVER_KAFKA_2/********@FSB_DEV_11
Temp script: file:/tmp/temp-script-16125174375292451330030014435322.sql
--------------------------------------------------------------------------
[DEBUG] ORACLE_HOME = /usr/lib/oracle/19.10/client64
[DEBUG] LD_LIBRARY_PATH  = /usr/lib/oracle/19.10/client64/lib:/usr/lib/oracle/19.10/client64
java.lang.RuntimeException: TNSNAMES.ORA missing!
источник

VD

Vladimir Deribin in jenkins_ru
Dmitrич
вот плюсую. а еще в ней же можно код тестами покрывать и отладкой активно пользоваться. Со своими допущениями, конечно
Да это хорошая вещь, но мне вот понадобилось сейчас конкретно под задачу сделать выборку с парсингом для active choice, и когда мне ещё раз такая штука понадобится - неизвестно. Опять же, это надо садиться и целенаправленно изучать груви - и тогда юзать IDEA, но мне сам груви нужен только в рамках дженкинса - есть ли книги или видеокурсы применительно к дженкинсу именно? Ну по типу как есть же питон для сетевых инженеров от Наты )
источник

VD

Vladimir Deribin in jenkins_ru
Никитяо
list1 = ['/path1/123','/path2/345','/pathZ/767','/path./989']
list2 = []
list1.each {
   if(output = (it =~ '/path\\d/')) {
       list2 << output[0]
   }
}
println(list2)
Спасибо огромное ещё раз, оно заработало и даже мне понятно, как именно. Меня с толку сбило ещё, что везде в регулярках в примерах слеши ставят, и я в процессе экспериментов тоже их поставил, и сломал свою регулярку, и не было матчей, а были только ошибки об отсутствии совпадений. НО в итоге разобрался, спасибо :)
источник

E

Elenhil in jenkins_ru
Vladimir Deribin
Да это хорошая вещь, но мне вот понадобилось сейчас конкретно под задачу сделать выборку с парсингом для active choice, и когда мне ещё раз такая штука понадобится - неизвестно. Опять же, это надо садиться и целенаправленно изучать груви - и тогда юзать IDEA, но мне сам груви нужен только в рамках дженкинса - есть ли книги или видеокурсы применительно к дженкинсу именно? Ну по типу как есть же питон для сетевых инженеров от Наты )
груви - та же жаба, но с прибабахом
источник

E

Elenhil in jenkins_ru
знаете жабу - знаете груви. Прочитать доку основную и хватит
источник

E

Elenhil in jenkins_ru
источник

DS

Dmitry Sergeev in jenkins_ru
А никто не сталкивался со странной фигней. Если в методе из shared lib использовать метод Jenkins.instance.getItemByFullName. То далее если использовать вызовы sh в этом методе, то pipeline падает со странной ошибкой.
pipeline простой (scripted синтаксис)


   node {
       stage('test') {
           sh 'echo "sh from pipe"'
           test('anotherJobName') // вызов метода из shared lib
       }
   }


test.groovy из shared lib:

```
def call(jobName) {
   def builds = Jenkins.instance.getItemByFullName(
jobName).getBuilds()
   println builds.getClass()
   println '### print ###'
   sh 'echo "sh from shared lib"'
}

```

В итоге на вызове sh  ( echo "sh from shared lib") из shared, pipeline падает с очень странной ошибкой https://pastebin.com/2EduyBbK - видно как отработали  println builds.getClass() и println '### print ###'. А затем pipeline упал с ужасно непонятным трейсом. При этом я вижу как из pipeline, sh 'echo "sh from pipe"' отработал норм.


Причем странно, если в shared lib методе, sh вызывать до Jenkins.instance.getItemByFullName, то все норм отрабатывает и никаких ошибок. То есть в таком варианте ошибок нет

```
def call(jobName) {
        sh 'echo "sh from shared lib"'
   def builds = Jenkins.instance.getItemByFullName(jobName).getBuilds()
   println builds.getClass()
   println '### print ###'
}

```

Что вообще происходит непонятно. Мб Jenkins.instance.getItemByFullName - странный какой-то метод, и надо его избегать. И есть по лучше способ вытащить билды из указанной джобы?
источник

E

Elenhil in jenkins_ru
Dmitry Sergeev
А никто не сталкивался со странной фигней. Если в методе из shared lib использовать метод Jenkins.instance.getItemByFullName. То далее если использовать вызовы sh в этом методе, то pipeline падает со странной ошибкой.
pipeline простой (scripted синтаксис)


   node {
       stage('test') {
           sh 'echo "sh from pipe"'
           test('anotherJobName') // вызов метода из shared lib
       }
   }


test.groovy из shared lib:

```
def call(jobName) {
   def builds = Jenkins.instance.getItemByFullName(
jobName).getBuilds()
   println builds.getClass()
   println '### print ###'
   sh 'echo "sh from shared lib"'
}

```

В итоге на вызове sh  ( echo "sh from shared lib") из shared, pipeline падает с очень странной ошибкой https://pastebin.com/2EduyBbK - видно как отработали  println builds.getClass() и println '### print ###'. А затем pipeline упал с ужасно непонятным трейсом. При этом я вижу как из pipeline, sh 'echo "sh from pipe"' отработал норм.


Причем странно, если в shared lib методе, sh вызывать до Jenkins.instance.getItemByFullName, то все норм отрабатывает и никаких ошибок. То есть в таком варианте ошибок нет

```
def call(jobName) {
        sh 'echo "sh from shared lib"'
   def builds = Jenkins.instance.getItemByFullName(jobName).getBuilds()
   println builds.getClass()
   println '### print ###'
}

```

Что вообще происходит непонятно. Мб Jenkins.instance.getItemByFullName - странный какой-то метод, и надо его избегать. И есть по лучше способ вытащить билды из указанной джобы?
NonCPS мб нужен?
источник

E

Elenhil in jenkins_ru
вижу там что-то с сериализацией
источник

DS

Dmitry Sergeev in jenkins_ru
выглядит как дичь
источник

DS

Dmitry Sergeev in jenkins_ru
Elenhil
NonCPS мб нужен?
а напомни что делает NonCPS?
источник

JR

Jürgen Romins in jenkins_ru
😂 вырубить и пусть начнется анархия
источник

E

Elenhil in jenkins_ru
Dmitry Sergeev
а напомни что делает NonCPS?
вырубает обязательную сериализацию каждого шага
источник

JR

Jürgen Romins in jenkins_ru
Не стоит использовать NonCPS  вот очень не стоит этого делать
источник