Jenkins pipeline - Export env variable to be used as test url
The current setup:
DevRepo1
gets built in Jenkins atPR
(C# server side, Angular for Front-End)- One of the stages is to trigger another Jenkins job that will run the automation integration and UI tests from
AutoRepo1
(NodeJS for both integration/API tests, Protractor for UI ones) - If everything passes, PR can be merged into the
DevRepo1/staging
branch - QA Manual team can start validating their test cases
This worked as a charm so far, until now when we have added a new environment, integration
, where we want to run the integration/API tests as well so that the devs have a safety net and commit new changes more often.
This adds the need to determine on what environment I need to run my tests, depending on the Upstream job that triggers automation tests.
What I tried:
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
"""
}
}
}
}
Because the upstream job that triggers the automated tests is DevRepo1/staging
or DevRepo1/integration
the BRANCH_ENV
variable will have the value staging
or integration
.
Now, I want to export this as an environment variable that I will later on read it in my NodeJS tests and construct the API endpoints depending on the environment.
However the printenv
shell step is not showing me TEST_ENVIRONMENT
set in the environment {}
step.
Can someone point me to what I'm missing here and how I can achieve this?
jenkins jenkins-pipeline build-automation
add a comment |
The current setup:
DevRepo1
gets built in Jenkins atPR
(C# server side, Angular for Front-End)- One of the stages is to trigger another Jenkins job that will run the automation integration and UI tests from
AutoRepo1
(NodeJS for both integration/API tests, Protractor for UI ones) - If everything passes, PR can be merged into the
DevRepo1/staging
branch - QA Manual team can start validating their test cases
This worked as a charm so far, until now when we have added a new environment, integration
, where we want to run the integration/API tests as well so that the devs have a safety net and commit new changes more often.
This adds the need to determine on what environment I need to run my tests, depending on the Upstream job that triggers automation tests.
What I tried:
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
"""
}
}
}
}
Because the upstream job that triggers the automated tests is DevRepo1/staging
or DevRepo1/integration
the BRANCH_ENV
variable will have the value staging
or integration
.
Now, I want to export this as an environment variable that I will later on read it in my NodeJS tests and construct the API endpoints depending on the environment.
However the printenv
shell step is not showing me TEST_ENVIRONMENT
set in the environment {}
step.
Can someone point me to what I'm missing here and how I can achieve this?
jenkins jenkins-pipeline build-automation
add a comment |
The current setup:
DevRepo1
gets built in Jenkins atPR
(C# server side, Angular for Front-End)- One of the stages is to trigger another Jenkins job that will run the automation integration and UI tests from
AutoRepo1
(NodeJS for both integration/API tests, Protractor for UI ones) - If everything passes, PR can be merged into the
DevRepo1/staging
branch - QA Manual team can start validating their test cases
This worked as a charm so far, until now when we have added a new environment, integration
, where we want to run the integration/API tests as well so that the devs have a safety net and commit new changes more often.
This adds the need to determine on what environment I need to run my tests, depending on the Upstream job that triggers automation tests.
What I tried:
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
"""
}
}
}
}
Because the upstream job that triggers the automated tests is DevRepo1/staging
or DevRepo1/integration
the BRANCH_ENV
variable will have the value staging
or integration
.
Now, I want to export this as an environment variable that I will later on read it in my NodeJS tests and construct the API endpoints depending on the environment.
However the printenv
shell step is not showing me TEST_ENVIRONMENT
set in the environment {}
step.
Can someone point me to what I'm missing here and how I can achieve this?
jenkins jenkins-pipeline build-automation
The current setup:
DevRepo1
gets built in Jenkins atPR
(C# server side, Angular for Front-End)- One of the stages is to trigger another Jenkins job that will run the automation integration and UI tests from
AutoRepo1
(NodeJS for both integration/API tests, Protractor for UI ones) - If everything passes, PR can be merged into the
DevRepo1/staging
branch - QA Manual team can start validating their test cases
This worked as a charm so far, until now when we have added a new environment, integration
, where we want to run the integration/API tests as well so that the devs have a safety net and commit new changes more often.
This adds the need to determine on what environment I need to run my tests, depending on the Upstream job that triggers automation tests.
What I tried:
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
"""
}
}
}
}
Because the upstream job that triggers the automated tests is DevRepo1/staging
or DevRepo1/integration
the BRANCH_ENV
variable will have the value staging
or integration
.
Now, I want to export this as an environment variable that I will later on read it in my NodeJS tests and construct the API endpoints depending on the environment.
However the printenv
shell step is not showing me TEST_ENVIRONMENT
set in the environment {}
step.
Can someone point me to what I'm missing here and how I can achieve this?
jenkins jenkins-pipeline build-automation
jenkins jenkins-pipeline build-automation
asked Nov 15 '18 at 9:59
CosminCosmin
1,21911227
1,21911227
add a comment |
add a comment |
0
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53316791%2fjenkins-pipeline-export-env-variable-to-be-used-as-test-url%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53316791%2fjenkins-pipeline-export-env-variable-to-be-used-as-test-url%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown