Текущая настройка:
DevRepo1
создается в Jenkins на PR
(сторона сервера C #, Angular для Front-End) - Один из этапов заключается ввызвать другое задание Jenkins, которое будет запускать интеграцию автоматизации и тесты пользовательского интерфейса из
AutoRepo1
(NodeJS для обоих тестов интеграции / API, Protractor для тестов пользовательского интерфейса) - Если все пройдет, PR можно объединить в
DevRepo1/staging
branch - Команда QA Manual может начать проверку своих тестовых случаев
До сих пор это работало как прелесть, до тех пор, пока мы не добавили новую среду, integration
, где мы хотима также запускать тесты интеграции / API, чтобы разработчики имели сеть безопасности и чаще вносили новые изменения.
Это добавляет необходимость определять, в какой среде мне нужно выполнять свои тесты, в зависимости от апстрима.задание, которое запускает тесты автоматизации.
То, что я пробовал:
stage ('Get env') {
steps {
script {
PARENT_UPSTREAM_CAUSE = currentBuild.rawBuild.getCause(hudson.model.Cause$UpstreamCause)?.properties?.upstreamProject
if(PARENT_UPSTREAM_CAUSE != null) {
BRANCH_ENV = PARENT_UPSTREAM_CAUSE.substring(PARENT_UPSTREAM_CAUSE.indexOf('/') + 1);
println "Branch environment: ${BRANCH_ENV}"
environment {
TEST_ENVIRONMENT = BRANCH_ENV
}
sh """#!/bin/bash
set -e
printenv
"""
}
}
}
}
Поскольку вышестоящее задание, запускающее автоматические тесты, - DevRepo1/staging
или DevRepo1/integration
, переменная BRANCH_ENV
будет иметьзначениеstaging
или integration
.
Теперь я хочу экспортировать это как переменную среды, которую позже прочту в моих тестах NodeJS и построю конечные точки API в зависимости от среды.
Однако шаг оболочки printenv
не показывает мне значение TEST_ENVIRONMENT
, установленное на шаге environment {}
.
Может кто-нибудь указать мне на то, что мне здесь не хватает и как мне этого добиться?