Задать вопрос
  • Можно ли динамически формировать перечень jobs?

    amk4
    @amk4 Автор вопроса
    VoidVolker, снова спасибо.
    Попробовал через апи - частично получилось.

    Только перебором через апи у меня формируется не набор задач, а набор отдельных пайплайнов.
    И вместо красивого итога - один пайплайн с N джобов получается: основной пайплайн + N _пайплайнов_

    А есть ли вариант все-таки в рамках _одного_ пайплайна формировать перечень джобов динамически?
    Чтобы их junit репорты в одной кучке были.

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

    PS Сейчас у меня получилось вот так:

    launch_job:
      stage: tests
      variables:
        PROJECT_LIST: project1.xml project.xml2 ... projectN.xml
      script:
        - |
          for PROJECT in $PROJECT_LIST
          do
            curl -X POST --fail -F token=TOKEN -F ref=job-branch variables[PROJECT]=$PROJECT http://...
          done
      only:
         - launch-branch
    
    routine_job:
      stage: tests
      script:
        - testrunner.sh $PROJECT 
      only:
         - job-branch
    Написано
  • Можно ли динамически формировать перечень jobs?

    amk4
    @amk4 Автор вопроса
    Спасибо, только, похоже, не совсем правильно я сформулировал...

    Есть объекты, по количеству которых хочется сформировать однотипные джобы...
    Если три объекта - три джоба, добавили четвертый объект - такой же типичный джоб выполнился и для него.

    Т.е. не подготовить заранее N джобов в одной стадии и запускать их выборочно по событиям, а сделать цикл и повторять _один_ джоб для каждого объекта.
    Написано
  • Как добавить jar с требуемым классом при ошибке ClassNotFoundException?

    amk4
    @amk4 Автор вопроса
    Dmitry Roo, спасибо
    начал с этого - получил
    java.lang.UnsupportedClassVersionError: org/apache/logging/log4j/core/LoggerContext has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 60.0

    но вообще, оказалось, как всегда RTFM...

    а) Important: SoapUI 5.6 or later does not support HermesJMS.
    б) SoapUI Open Source 5.6.0 move to openjdk 12

    В старой SoapUI 5.5.0 (которая сама на 8й джаве) все заработало...
    Спасибо за помощь, буду искать замену JMS коннектору.
    Написано
  • Как добавить jar с требуемым классом при ошибке ClassNotFoundException?

    amk4
    @amk4 Автор вопроса
    Dmitry Roo, можно еще вопрос в продолжение?

    Проблема решилась, но поверхностно. Вопрос - можно ли подружить два разных приложения?

    Получилось-то запустить и настроить _отдельно_ SoapUI (SmartBear) и его (старый и брошенный) тул HermesJMS.

    В запускающий скрипт гермеса hermes.sh прописал путь к 8-й джаве - он нормально стартует, я в нем настроил сессию к JMS-серверу - все ок

    Но когда необходимо обращение к JMS-северу из проекта в SoapUI - дергается же напрямую hermes-1.14.jar, а не подправленный мной стартовый hermes.sh

    И пытается он запуститься, видимо, в окружении версии джавы Soap'а. Соответственно. получаю ошибку:

    2024-07-23 15:13:22,722 ERROR [errorlog] java.lang.NoClassDefFoundError: org/apache/log4j/Logger
    java.lang.NoClassDefFoundError: org/apache/log4j/Logger
    	at hermes.HermesInitialContextFactory.<clinit>(HermesInitialContextFactory.java:40) ~[hermes-1.14.jar:?]
    	at java.lang.Class.forName0(Native Method) ~[?:?]
    	at java.lang.Class.forName(Class.java:468) ~[?:?]
    	at com.sun.naming.internal.VersionHelper.loadClass(VersionHelper.java:123) ~[?:?]
    	at com.sun.naming.internal.VersionHelper.loadClass(VersionHelper.java:96) ~[?:?]
    	at javax.naming.spi.NamingManager.getFactory(NamingManager.java:746) ~[?:?]
    	at javax.naming.spi.NamingManager.lambda$getInitialContext$1(NamingManager.java:711) ~[?:?]
    	at jdk.internal.loader.AbstractClassLoaderValue$Memoizer.get(AbstractClassLoaderValue.java:329) ~[?:?]
    	at jdk.internal.loader.AbstractClassLoaderValue.computeIfAbsent(AbstractClassLoaderValue.java:205) ~[?:?]
    	at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:711) ~[?:?]
    	at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:305) ~[?:?]
    	at javax.naming.InitialContext.init(InitialContext.java:236) ~[?:?]
    	at javax.naming.InitialContext.<init>(InitialContext.java:208) ~[?:?]
    	at com.eviware.soapui.impl.wsdl.submit.transports.jms.util.HermesUtils.getHermes(HermesUtils.java:115) ~[soapui-5.6.1.jar:5.6.1]
    	at com.eviware.soapui.impl.wsdl.submit.transports.jms.util.HermesUtils.hermesContext(HermesUtils.java:84) ~[soapui-5.6.1.jar:5.6.1]
    	at com.eviware.soapui.impl.wsdl.submit.transports.jms.util.HermesUtils.getHermes(HermesUtils.java:225) ~[soapui-5.6.1.jar:5.6.1]
    	at com.eviware.soapui.impl.wsdl.submit.transports.jms.HermesJmsRequestTransport.getHermes(HermesJmsRequestTransport.java:182) ~[soapui-5.6.1.jar:5.6.1]
    	at com.eviware.soapui.impl.wsdl.submit.transports.jms.HermesJmsRequestTransport.init(HermesJmsRequestTransport.java:100) ~[soapui-5.6.1.jar:5.6.1]
    	at com.eviware.soapui.impl.wsdl.submit.transports.jms.HermesJmsRequestSendReceiveTransport.execute(HermesJmsRequestSendReceiveTransport.java:36) [soapui-5.6.1.jar:5.6.1]
    	at com.eviware.soapui.impl.wsdl.submit.transports.jms.HermesJmsRequestTransport.sendRequest(HermesJmsRequestTransport.java:95) [soapui-5.6.1.jar:5.6.1]
    	at com.eviware.soapui.impl.wsdl.WsdlSubmit.run(WsdlSubmit.java:120) [soapui-5.6.1.jar:5.6.1]
    	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) [?:?]
    	at java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]
    	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) [?:?]
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630) [?:?]
    	at java.lang.Thread.run(Thread.java:832) [?:?]
    Caused by: java.lang.ClassNotFoundException: org.apache.log4j.Logger
    	at java.net.URLClassLoader.findClass(URLClassLoader.java:435) ~[?:?]
    	at java.lang.ClassLoader.loadClass(ClassLoader.java:589) ~[?:?]
    	at com.eviware.soapui.impl.wsdl.submit.transports.jms.util.HermesUtils$ReverseOrderClassLoader.innerLoadClass(HermesUtils.java:278) ~[soapui-5.6.1.jar:5.6.1]
    	at com.eviware.soapui.impl.wsdl.submit.transports.jms.util.HermesUtils$ReverseOrderClassLoader.loadClass(HermesUtils.java:263) ~[soapui-5.6.1.jar:5.6.1]
    	at java.lang.ClassLoader.loadClass(ClassLoader.java:522) ~[?:?]
    	... 26 more
    Написано
  • Как добавить jar с требуемым классом при ошибке ClassNotFoundException?

    amk4
    @amk4 Автор вопроса
    Спасибо за совет, заодно немного просветился по этому направлению.

    Впихнуть старую rt.jar в 9-ю джаву методом тыка так и не получилось )))

    Но, соответственно, вопрос решился применение домодульной джавы (8-й), как посоветовали в предыдущих комментариях.
    Написано
  • Как добавить jar с требуемым классом при ошибке ClassNotFoundException?

    amk4
    @amk4 Автор вопроса
    В целом, спасибо за направление.

    Проблема действительно решилась 8-й джавой.
    Насколько я понял из второго ответа по этому вопросу - в 9-й добавили модульность и это стало причиной несовместимости.

    А следующая ошибка, полученная уже на 8-й джаве интуитивно решилась заменой комплектной jar-ки xercesImpl.jar из /lib Гермеса на аналогичную из клиента целевого JMS-сервера (Aurea Sonic).
    Написано
  • Как добавить jar с требуемым классом при ошибке ClassNotFoundException?

    amk4
    @amk4 Автор вопроса
    Почитал, даже что-то понял, но легче пока не стало...
    с 9-й джавы, ее решили разбить на модули и rt.jar из отдельной джарки переехал( ли?) в modules

    Если я вижу ошибку NoClassDefFoundError: sun/reflect/Reflection - значит:
    либо все-таки rt.jar с этим классом не вошел в modules
    либо этот модуль(и) не подключены...

    Пробовал
    soap@amk175:~$ java --module-path /usr/java/jdk/jdk-9/lib/
    Error occurred during initialization of boot layer
    java.lang.LayerInstantiationException: Package jdk.internal.jimage in both module java.base and module jrt.fs

    Видимо, файл модулей конфликтует с остальными библиотеками (зачем тогда их в одной папке разместили?)

    Попробовал файл modules в отдельную папку вынести
    soap@amk175:~$ java --module-path /opt/modules9/
    В ответ вылетает хелп - что-то неверно я в синтаксисе

    Добавил -p с путями к modules в старт приложения - но ожидаемо ничего не изменилось
    Написано
  • Как добавить jar с требуемым классом при ошибке ClassNotFoundException?

    amk4
    @amk4 Автор вопроса
    Поведение изменилось, ошибка уже другая...
    soap@amk175:~$ java -version
    java version "1.8.0_261"
    Java(TM) SE Runtime Environment (build 1.8.0_261-b12)
    Java HotSpot(TM) 64-Bit Server VM (build 25.261-b12, mixed mode)
    
    soap@amk175:~$ /opt/HermesJMS/bin/hermes.sh
    Jul 18, 2024 11:11:58 PM com.sun.xml.internal.bind.v2.util.XmlFactory createParserFactory
    SEVERE: null
    org.xml.sax.SAXNotRecognizedException: Feature 'http://javax.xml.XMLConstants/feature/secure-processing' is not recognized.
            at org.apache.xerces.parsers.AbstractSAXParser.setFeature(Unknown Source)
            at org.apache.xerces.jaxp.SAXParserImpl.setFeatures(Unknown Source)
            at org.apache.xerces.jaxp.SAXParserImpl.<init>(Unknown Source)
            at org.apache.xerces.jaxp.SAXParserFactoryImpl.newSAXParserImpl(Unknown Source)
            at org.apache.xerces.jaxp.SAXParserFactoryImpl.setFeature(Unknown Source)
            at com.sun.xml.internal.bind.v2.util.XmlFactory.createParserFactory(XmlFactory.java:121)
            at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.getXMLReader(UnmarshallerImpl.java:139)
            at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:276)
            at hermes.JAXBHermesLoader.load(JAXBHermesLoader.java:302)
            at hermes.HermesContext.load(HermesContext.java:57)
            at hermes.HermesInitialContextFactory.getInitialContext(HermesInitialContextFactory.java:95)
    ...
    Написано
  • Как запустить gitlab triggered pipeline по референсу tag, а не branch?

    amk4
    @amk4 Автор вопроса
    Ну да, походу так и есть... По тегам не приходилось запускать, ожидалось немного иначе...
    Спасибо.
    Написано
  • Можно ли анализировать логи job самим gitlab-runner'ом?

    amk4
    @amk4 Автор вопроса
    Да, это я чего-то сморозил...
    Можно же только tee оставить, а перенаправление не выполнять ))
    Спасибо.
    Написано
  • Можно ли анализировать логи job самим gitlab-runner'ом?

    amk4
    @amk4 Автор вопроса
    хм, оказалось robocorp уже сам складывает копию stdout тестов в соответствующий файлик.
    Его разбор и сделал.

    Остался вопрос на будущее, можно ли и перенаправить stdout через >/>> и не потерять его вывод в логе джоба?
    Написано
  • Можно ли анализировать логи job самим gitlab-runner'ом?

    amk4
    @amk4 Автор вопроса
    Ну да, я и собирался перенаправлять stdout в файл, если не посоветуют более оптимального варианта.
    Из минусов - в логе джоба информации уже не будет, придется смотреть артефакты.
    Написано
  • Можно ли анализировать логи job самим gitlab-runner'ом?

    amk4
    @amk4 Автор вопроса
    Как раз так корректно, процедура тестирования проходит успешно.
    В ней много тестов и если один/несколько FAILED по прикладным причинам - это не повод прерывать джоб и считать весь джоб failed.
    Написано
  • Можно ли анализировать логи job самим gitlab-runner'ом?

    amk4
    @amk4 Автор вопроса
    А как раннером (который у себя на узле бежит) добавить логи, которые на самом гитлабе лежат?
    Написано
  • Не открывается Word, кроме как от имени администратора, в чем проблема?

    Может в Просмотре событий в разделе безопасность есть какие-то сообщения по поводу запуска.
    Написано
  • Можно ли анализировать логи job самим gitlab-runner'ом?

    amk4
    @amk4 Автор вопроса
    Да.
    Джоб заканчивается успешно.
    А в логе - результаты тестов (robocorp) - VALID или FAILED.
    Написано
  • Как обернуть if для исполнения раннером через powershell?

    amk4
    @amk4 Автор вопроса
    А про построчно - я так и попробовал, но надо было добавить индикатор: |
    в комментарии к предыдущему ответу подсказали.
    Написано
  • Как обернуть if для исполнения раннером через powershell?

    amk4
    @amk4 Автор вопроса
    О, спасибо, надо же, скалярные блоки...
    Как-то не пришло в голову, что это тот же yaml, что и для bash'а...
    Написано
  • Как обернуть if для исполнения раннером через powershell?

    amk4
    @amk4 Автор вопроса
    Проходит и просто:
    script:
        - C:\gitlab-runner\network.ps1


    Shell executor указан в config.toml
    Написано
  • Какой grant необходим для pg_restore?

    amk4
    @amk4 Автор вопроса
    Ну, суперюзером-то проходит успешно.
    Получается - только так?
    Написано