Конвейер Jenkins - экспорт переменной env для использования в качестве тестового URL - PullRequest
0 голосов
/ 15 ноября 2018

Текущая настройка:

  1. DevRepo1 создается в Jenkins на PR (сторона сервера C #, Angular для Front-End)
  2. Один из этапов заключается ввызвать другое задание Jenkins, которое будет запускать интеграцию автоматизации и тесты пользовательского интерфейса из AutoRepo1 (NodeJS для обоих тестов интеграции / API, Protractor для тестов пользовательского интерфейса)
  3. Если все пройдет, PR можно объединить в DevRepo1/stagingbranch
  4. Команда 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 {}.

Может кто-нибудь указать мне на то, что мне здесь не хватает и как мне этого добиться?

...