Для того, чтобы проверить вашу теорию, Jenkins совсем не нужен. IntelliJ, которую вы используете, позволяет просетить переменные окружения в run / debug configuration. Что мешает вам запустить maven профайл из идеи с нужной переменной DOMAIN, и посмотреть результат?
Jenkins ничего нового - в плане переменных окружения - не делает.
P.S. А вообще, подсказочки можно найти и путем поиска по форуму. Уже были темы и о maven профайлах, и о переменных окружения и о параметризации различных конфигураций.
можно наверное, я еще до конца не вник и нет понимания как это взаимосвязано работает. Поэтому и начал задавать вопросы тут. Буду благодарен за объяснение / примеры!
При загрузке страницы для любого теста происходит обращение через экземпляр класса environment и получение базового домена, к которому потом добавляются endPoints урлов страниц сайта.
Запускаю через IDE run иконку.
при дебаге вижу что там null.
если запускаю вот так:
mvn clean test -Dsurefire.suiteXmlFiles=testng.xml -DDOMAIN=http://
то домен видит и подтягивает доменное имя, записывает и урлы формируются корректно.
Может кто-то подсказать, что неправильно сделал, почему только через указание параметра в консоли работает ??
Потому что в properties pom файла задаются параметры для этого pom, если не задано иное в плагине. От того что вы из env параметра запишете в pom переменную, то она не появится в System.getProperties(). Параметры env можно вычитывать через System.getenv(name);
Так же можно передавать не через env, указав в параметрах запуска ключ -D”имя параметра”=“значение параметра”, тогда в System.getProperty(name); можно вычитать этот параметр. В обоих случаях задавать профиль и properties в pom-файле нет необходимости.
Запускаю через команду:
mvn clean test -Dsurefire.suiteXmlFiles=testng.xml -P test
если я все правильно понял, то, при запуске указывая профиль -P test / prod / stage / qa (для моего случая) соответствующее значение site.url из профиля в pom должно быть записано в global.properties вместо ${site.url}, а в классе Environment достается значение из .properties.
Проблема в том, что при дебаге у меня в джава код приезжает ${site.url} именно в таком виде, а не значение в виде урла. Не понимаю, что я делаю не так =((
В видео же всё сказано. И то что настройки в профиле параметров используются внутри самого мавена, а не в коде. Как я выше уже указывал. Для запуска в IDE Алексей создал отдельный файл, который применяется по-умолчанию, если не задан запуск из мавена и в нём настройки заданы явно, а не через подстановку переменной в строку.
Профили мощная штука, но по мне так излишняя для вашей задачи. Всё тоже самое можно сделать и без них. Они нужны для того, чтобы собирать по разному проекты. В буквальном смысле можно собирать разные приложения и много что ещё делать. А для запуска на разных контурах/браузерах можно применить и обычные параметры через консоль и комплекты в TestNG/JUnit
Вот поэтому и советовал вам не браться за профили, если до конца не понимаете их принцип. В приведённом выше ответе @sergueik показал как через плагин можно передать переменные окружения в системные переменные. О чем я так же выше уже упоминал. Файл вам не потребовался скорее всего из-за того, что вы его не используете или используются не только он и что-то перебивает его данные. Очень странный подход к написанию кода без понимания что и откуда куда подаётся и как вычитывается.
Этот вариант, задавая параметр в строке запуска через -D, - я проверил самым первым. Он сразу отработал у меня, но я хотел разобраться во взаимодействии через pom и properties
В конечном итоге придется отложить оба вышеперечисленных варианта.
Пообщался с ребятами из devops. Они сказали, что будут делать одну джобу в дженкинсе с выбором параметров где и как запускать. Я на своей стороне должен принимать те значения, которые передает Jenkins. На сколько я понял, то в этом случае мне нужен вариант который предложил товарищ ArtOfLife:
Привет. Подскажите пожалуйста, есть на проекте файл config.properties, где есть настройки, например url=http://… , name = test, email= email@test.com
Пробовал запустить через дженкинс вот так: -D url=http:// -D name=test -D email=email@test.com , не работает.
-Durl - надо слитно
Вам надо смотреть в код кто и как обрабатывает config.properties, и туда добавлять такое:
Если системная переменная <имя_переменной> пустая, то читаю её из файла.
-D - это и есть задание системной переменной.
Вы хотите сказать, мне нужно на проекте удалить значения из файла config.properties и прописать их в дженкинс через -D?
В коде у меня, вот так Configuration.baseUrl=сonfig().getProperty(“url”);
1586945821.252][SEVERE]: Timed out receiving mess[age from renderer: 0.100
1586945821.253][SEVERE]: Timed out receiving message from renderer: 0.100
[1586945821.352][SEVERE]: Timed out receiving message from renderer: 0.100
[[15869451821.355][586945821.354][SEVERE]: Timed out receiving message from rendererSEV: 0.100
ERE]: Timed out receiving message from renderer: 0.100
[1586945821.453][SEVERE]: Timed out receiving message from renderer: 0.100
[1586945821.455][SEVERE]: Timed out receiving message from[ rendere1586945821.45r: 0.1006][SEVE
RE]: Timed out receiving message from renderer: 0.100
[1586945821.556][SEVERE]: Timed out receiving message from renderer: 0.100
[1586945821.557][SEVERE]: Timed out receiv[in1586945821.558][SEVERE]: Timed out receiving message from renderer: 0.100
g message from renderer: 0.100
[1586945821.657][SEVERE]: Timed out receiving message from renderer: 0.100
[1586945821.658][SEVERE]: Timed out receiving message from renderer: 0.100
[1586945821.660][SEVERE]: Timed out receiving message from renderer: 0.100
[1586945821.758][SEVERE]: Timed out receiving message from renderer: 0.100
[[1586945821586945821.761][SEVER1.760][SEVERE]: Timed out reE]: Timed out receiving message from renderer: 0.100
ceiving message from renderer: 0.100
[1586945821.860][SEVERE]: Timed out receiving message from renderer: 0.100
[1586[945821.863][SEVERE]: Timed out receiving 1586945821.862][SEVERE]: Timed out rmeceivingessage from rendere message from renderer: 0.100
r: 0.100