groovy.lang.MissingPropertyException: No such property: GIT_PASSWORD for class: groovy.lang.Binding - groovy

I have checked all the topics on the same mistake, tried everything, and yet I was unable to find anything to help me solving my issue.
my code builds a docker container, starts a flask application and run a python script, run tests and then should merge Master. The code is the following :
pipeline {
agent any
stages {
stage('Master merging'){
steps{
script{
passwordVariable = 'password'
usernameVariable = 'unsername'
// Variables for input
if(env.BRANCH_NAME == 'features'||env.BRANCH_NAME == 'main'){
sh 'git checkout origin/features'
sh 'git pull'
sh 'git remote update'
sh 'git fetch'
sh 'git checkout origin/main'
sh 'git merge origin/features'
withCredentials([usernamePassword(credentialsId : 'GitHub', passwordVariable:'GIT_PASSWORD', usernameVariable:'GIT_USERNAME')]){
sh "git push http://${GIT_USERNAME}:${GIT_PASSWORD}#github.com/Username/Repo.git"
}
}}
}
}
}
}
when I arrive to stage('master merging'), I have the following mistake
Masking supported pattern matches of $GIT_PASSWORD
[Pipeline] {
[Pipeline] }
[Pipeline] // withCredentials
[Pipeline] }
[Pipeline] // script
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (container shutdown)
Stage "container shutdown" skipped due to earlier failure(s)
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // withEnv
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
groovy.lang.MissingPropertyException: No such property: GIT_PASSWORD for class: groovy.lang.Binding
at groovy.lang.Binding.getVariable(Binding.java:63)
Thanks a lot in advance for your help :)

I have an answer :)
Prerequisites : create a credential on Manage jenkins -> Manage credentials -> jenkins -> Global credentials (unrestricted) -> username with password. Inquire github username as username and Personal access token as password. ID is up to you.
Code :
stage('Master merging'){
steps{
script{
// Variables for input
if(env.BRANCH_NAME == 'features'||env.BRANCH_NAME == 'main'){
sh 'git checkout features'
sh 'git pull'
sh 'git remote update'
sh 'git fetch'
sh 'git checkout origin/main'
sh 'git merge features'
sh "git config user.email \"GITHUB EMAIL\""
sh "git config user.name \"GITHUB USERNAME\""
withCredentials([gitUsernamePassword(credentialsId:'ID you inquired in credentials')]) {
sh 'git push https://github.com/Username/Repo.git'
}
}
}
}
}

Related

How to hide parameters such as APIKey from Jenkins pipeline console output

How can I hide certain parameters or **** them when I execute scripts inside stage.
The command that is producing the output which I want to hide is:
sh "./wsagent_execute.sh -s -apiKey ${WHITESOURCE_API_KEY} -projectToken ${WHITESOURCE_PROJECT_TOKEN} -C ${configPath} -d ${directoryPath} -logLevel info"
The parameters I want to hide are -apiKey and -projectToken. How can I do it?
If you get your credentials from a vault, you can use Mask Passwords plugin. It does not state that it supports Pipelines but actually it does.
pipeline {
agent any
stages {
stage('doing something') {
steps {
script {
def current_nano = "1616407597607795668"
sh label: "Now you see it", script: "echo ${current_nano}"
maskPasswords(varPasswordPairs: [[password: current_nano, var: 'IGNORE']]) {
sh label: "Now you don't", script: "echo ${current_nano}"
}
}
}
}
}
}
Output:
[Pipeline] Start of Pipeline
[Pipeline] node
Running on Jenkins in /var/jenkins_home/workspace/
[Pipeline] {
[Pipeline] stage
[Pipeline] { (doing something)
[Pipeline] script
[Pipeline] {
[Pipeline] sh (Now you see it)
+ echo 1616407597607795668
1616407597607795668
[Pipeline] maskPasswords
[Pipeline] {
[Pipeline] sh (Now you don't)
+ echo ********
********
[Pipeline] }
[Pipeline] // maskPasswords
[Pipeline] }
[Pipeline] // script
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS
Are these keys calculated in the pipeline or are they statics?
You can try to use it like credentials in Jenkins and you don't see their values in the log.
If you use a secret define in Jenkins credential, Jenkins will automatically mask that for you and in the log, it will show as ****
let's say you have defined your apiKey in jenkins credential with Id: apikey. Than you can use that on your pipeline like below example.
more details can be found here
node() {
withCredentials([string(credentialsId: 'apikey', variable: 'TOKEN')]) {
sh "./wsagent_execute.sh -s -apiKey $TOKEN -projectToken ${WHITESOURCE_PROJECT_TOKEN} -C ${configPath} -d ${directoryPath} -logLevel info"
}
}
If you are not happy with that use mask password or something similar plugins

Clone of 'git#******/common-ui-layout.git' into submodule path 'common-ui-layout' failed

Looking help on Jenkins, i have written jenkinsfile where in one stage i am running sh git submodule update --init --recursive command my job is getting failed with Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password) error. but i can see on log common-ui-layout directory is present with full access, as per my analysis i found that while hitting the submodule command its not getting authenticated or its not finding the common-ui-layout folder. Im posting my jenkinsfile here, Please provide the fix of this issue.
pipeline {
agent {
label 'agent.com'
}
stages {stage("submodule clone"){
steps
{
checkout(
[
$class: 'GitSCM',
branches: [
[
name: 'master'
]
],
doGenerateSubmoduleConfigurations: false,
extensions: [
[
$class: 'SubmoduleOption',
disableSubmodules: false,
parentCredentials: true,
recursiveSubmodules: true,
reference: '',
trackingSubmodules: false
]
],
submoduleCfg: [],
userRemoteConfigs: [
[
credentialsId: '<***ID****>',
url: 'https://*****gitlab.com/****/common-ui-layout.git'
]
]
]
)
}
}
stage("fetch data"){
steps {
git branch: 'patch-1',
credentialsId: '<***ID****>',
url: 'https://****.gitlab.com/*****/****.git'
sh "pwd"
sh "ls -lat"
}
}
stage ("Installing pre-req"){
steps{
sh '''
yarn install;
yarn global add #angular/cli
'''
}
}
stage('Build app') {
steps {
sh "yarn install";
sh "pwd";
sh 'git submodule update --init --recursive';
//sh "git submodule update --recursive –remote";
sh "yarn run ng build";
println "BUILD NUMBER = $BUILD_NUMBER"
println "Build Success.."
}
}
}
}
Please refer the error snipt here
The above error got fixed after adding the rsa key. after that i got another error when i hit the git submodule update --init --recursive command in pipeline and return the with below error-
Cloning into 'common-ui-layout'...
fatal: could not read Username for 'https://xxx.xxx.com': No such device or address
please refer the snippet here
Please suggest me where i am missing?

Getting permission denied when trying to run a shell script on jenkins pipeline

I'm trying to set a Jenkins pipeline to build an Ionic app inside a Linux server (ec2 instance on amazon services) My first stage inside the jenkinsfile is to run npm install, but it returns permission denied.
I've tried setting permissions to the folder using:
chmod 777 /home/ec2-user/.nvm/versions/node/v10.16.0/bin
I've also tried adding the Jenkins user to the group that also has permissions. none of these seemed to work.
This is my Jenkinsfile
pipeline {
agent any
environment {
PATH='/usr/local/bin:/usr/bin:/bin'
}
stages {
stage('NPM Setup') {
steps { sh '/home/ec2-user/.nvm/versions/node/v10.16.0/bin/npm install' }
}
stage('Android Build') {
steps {
sh 'ionic cordova build android --release'
}
}
stage('APK Sign') {
steps {
echo "Sign Android APK Action"
}
}
stage('Zip APK') {
steps {
echo "Zip the APK Action"
}
}
}
}
I get this output
[Pipeline] // stage
[Pipeline] withEnv
[Pipeline] {
[Pipeline] withEnv
[Pipeline] {
[Pipeline] stage
[Pipeline] { (NPM Setup)
[Pipeline] sh
+ /home/ec2-user/.nvm/versions/node/v10.16.0/bin/npm install
/var/lib/jenkins/workspace/p-ionic4_borderapp_ionic4_master#tmp/durable-9b0ecc49/script.sh: line 1: /home/ec2-user/.nvm/versions/node/v10.16.0/bin/npm: Permission denied

Jenkins Pipeline - Access environment variable in nodejs builds

i need some help with my Jenkins pipeline.
What i want to do is trigger some builds in a specific order to login to a platform, deploy apps and logout again.
The builds are implemented as nodejs scripts and store data and access data from previous builds by using environment variables.
My problem is that when i'm trying to access environment variables from within my nodejs scripts i always receive undefined. For example: In the 'LoginToPlatform' build i'm using process.env.username to receive the username but even though i set the environment variable in the environment block of my pipeline i receive undefined.
So my question is how can i access the environment variables from within my builds (nodejs scripts)?
Here is the build order:
1. 'LoginToPlatform'
Uses process.env.username and process.env.password
Sets process.env.session
2. 'DeployOnPlatform'
Uses process.env.session
3. 'LogoutFromPlatform'
Uses process.env.session
My Jenkins Pipeline:
pipeline {
agent any
environment {
username = 'abc'
password = 'asdf'
}
stages {
stage ('Login') {
steps {
echo 'Login.'
build job: 'LoginToPlatform'
}
}
stage ('Deployment') {
steps {
echo 'Deployment.'
build job: 'DeployOnPlatform'
}
}
stage ('Logout') {
steps {
echo 'Logout.'
build job: 'LogoutFromPlatform'
}
}
}
}
Here is one of the ways to access env variables.
Jenkinsfile
pipeline {
agent {
docker {
image 'node:6-alpine'
}
}
environment {
VARIABLE_1="10"
VARIABLE_2="7"
}
stages {
stage('Build') {
steps {
sh 'node main.js'
}
}
}
}
main.js
const envOne = process.env.VARIABLE_1;
const envTwo = process.env.VARIABLE_2;
console.log("envOne: " + envOne);
console.log("envTwo: " + envTwo);
Output:
Jenkins seems to be running inside container 646633d29eac6e0e5b56e4aef28055075b5a2274e26b159387a7a34f35919fe3
$ docker run -t -d -u 0:0 -p 3000:3000 -w /var/jenkins_home/workspace/fff_master-RUQD36MGKNUXMF26H5CQBCDE6AKFWFLUOG7MTQ6WMTXNXKQHCNMA --volumes-from 646633d29eac6e0e5b56e4aef28055075b5a2274e26b159387a7a34f35919fe3 -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** node:6-alpine cat
$ docker top 3fe3059a78e890dc2cadd722c25b97d5a023da059cc807cef3acb29237f0261f -eo pid,comm
[Pipeline] {
[Pipeline] withEnv
[Pipeline] {
[Pipeline] stage
[Pipeline] { (Build)
[Pipeline] sh
[fff_master-RUQD36MGKNUXMF26H5CQBCDE6AKFWFLUOG7MTQ6WMTXNXKQHCNMA] Running shell script
+ node main.js
envOne: 10
envTwo: 7
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // withEnv
[Pipeline] }
$ docker stop --time=1 3fe3059a78e890dc2cadd722c25b97d5a023da059cc807cef3acb29237f0261f
$ docker rm -f 3fe3059a78e890dc2cadd722c25b97d5a023da059cc807cef3acb29237f0261f
[Pipeline] // withDockerContainer
[Pipeline] }
[Pipeline] // withEnv
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline

Jenkins: Cannot build nodejs project in different versions of nodejs in single build

Lately, I'm trying to build a nodejs project using nodejs 6, 7 and 8 via Jenkins.
I have installed Pipeline NPM Integration Plugin. In Jenkins > Global Tool Configuration, I have added the different versions of nodejs.
But when I build the project, it gets only build in nodejs version 6. This is the content of my Jenkinsfile.
#!/usr/bin/env groovy
pipeline {
agent any
stages {
stage('Build') {
steps {
nodejs('Chill') {
sh 'node --version'
sh 'npm --version'
sh 'yarn --version'
sh 'yarn'
sh 'yarn build'
}
}
}
stage('Test') {
steps {
nodejs('Chill') {
sh 'yarn test'
}
}
}
stage('Deploy') {
steps {
nodejs('Chill') {
}
}
}
}
}
This the log file of the build.
Started by user Sumit Rai
Obtained Jenkinsfile from git https://github.com/srekcahrai/chill.git
[Pipeline] node
Running on 10.10.0.143 in /home/jenkins-client/jenkins/workspace/Chill SCM
[Pipeline] {
[Pipeline] stage
[Pipeline] { (Declarative: Checkout SCM)
[Pipeline] checkout
> git rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
> git config remote.origin.url https://github.com/srekcahrai/chill.git # timeout=10
Fetching upstream changes from https://github.com/srekcahrai/chill.git
> git --version # timeout=10
> git fetch --tags --progress https://github.com/srekcahrai/chill.git +refs/heads/*:refs/remotes/origin/*
> git rev-parse refs/remotes/origin/master^{commit} # timeout=10
> git rev-parse refs/remotes/origin/origin/master^{commit} # timeout=10
Checking out Revision 52fb0d17de1a3a2f25292443ee6038d10e22953e (refs/remotes/origin/master)
Commit message: "Added Deploy stage"
> git config core.sparsecheckout # timeout=10
> git checkout -f 52fb0d17de1a3a2f25292443ee6038d10e22953e
> git rev-list 52fb0d17de1a3a2f25292443ee6038d10e22953e # timeout=10
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (Build)
[Pipeline] nodejs
[Pipeline] {
[Pipeline] sh
[Chill SCM] Running shell script
+ node --version
v6.11.2
[Pipeline] sh
[Chill SCM] Running shell script
+ npm --version
3.10.10
[Pipeline] sh
[Chill SCM] Running shell script
+ yarn --version
0.27.5
[Pipeline] sh
[Chill SCM] Running shell script
+ yarn
yarn install v0.27.5
[1/4] Resolving packages...
success Already up-to-date.
$ npm run build
> chill-cli#1.0.0-alpha.2 build /home/jenkins-client/jenkins/workspace/Chill SCM
> run-s lint clean babel
> chill-cli#1.0.0-alpha.2 lint /home/jenkins-client/jenkins/workspace/Chill SCM
> eslint src test
> chill-cli#1.0.0-alpha.2 clean /home/jenkins-client/jenkins/workspace/Chill SCM
> rimraf dist/
> chill-cli#1.0.0-alpha.2 babel /home/jenkins-client/jenkins/workspace/Chill SCM
> babel src/ -d dist/
src/cli/index.js -> dist/cli/index.js
src/common/messages.js -> dist/common/messages.js
src/config/config.js -> dist/config/config.js
src/config/default.config.js -> dist/config/default.config.js
src/index.js -> dist/index.js
src/migrations/20170515111050_create_status_logs_table.js -> dist/migrations/20170515111050_create_status_logs_table.js
src/models/StatusLog.js -> dist/models/StatusLog.js
src/monitoring/Monitor.js -> dist/monitoring/Monitor.js
src/monitoring/eventListener.js -> dist/monitoring/eventListener.js
src/monitoring/init.js -> dist/monitoring/init.js
src/services/email.js -> dist/services/email.js
src/services/events.js -> dist/services/events.js
src/services/hipchat.js -> dist/services/hipchat.js
src/services/notifier.js -> dist/services/notifier.js
src/services/persistence.js -> dist/services/persistence.js
src/services/slack.js -> dist/services/slack.js
src/services/status.js -> dist/services/status.js
src/services/twilio.js -> dist/services/twilio.js
src/services/websocket.js -> dist/services/websocket.js
src/utils/db.js -> dist/utils/db.js
src/utils/emailRenderer.js -> dist/utils/emailRenderer.js
src/utils/http.js -> dist/utils/http.js
src/utils/logger.js -> dist/utils/logger.js
src/utils/string.js -> dist/utils/string.js
src/utils/websocketServer.js -> dist/utils/websocketServer.js
Done in 11.21s.
[Pipeline] sh
[Chill SCM] Running shell script
+ yarn build
yarn build v0.27.5
$ run-s lint clean babel
> chill-cli#1.0.0-alpha.2 lint /home/jenkins-client/jenkins/workspace/Chill SCM
> eslint src test
> chill-cli#1.0.0-alpha.2 clean /home/jenkins-client/jenkins/workspace/Chill SCM
> rimraf dist/
> chill-cli#1.0.0-alpha.2 babel /home/jenkins-client/jenkins/workspace/Chill SCM
> babel src/ -d dist/
src/cli/index.js -> dist/cli/index.js
src/common/messages.js -> dist/common/messages.js
src/config/config.js -> dist/config/config.js
src/config/default.config.js -> dist/config/default.config.js
src/index.js -> dist/index.js
src/migrations/20170515111050_create_status_logs_table.js -> dist/migrations/20170515111050_create_status_logs_table.js
src/models/StatusLog.js -> dist/models/StatusLog.js
src/monitoring/Monitor.js -> dist/monitoring/Monitor.js
src/monitoring/eventListener.js -> dist/monitoring/eventListener.js
src/monitoring/init.js -> dist/monitoring/init.js
src/services/email.js -> dist/services/email.js
src/services/events.js -> dist/services/events.js
src/services/hipchat.js -> dist/services/hipchat.js
src/services/notifier.js -> dist/services/notifier.js
src/services/persistence.js -> dist/services/persistence.js
src/services/slack.js -> dist/services/slack.js
src/services/status.js -> dist/services/status.js
src/services/twilio.js -> dist/services/twilio.js
src/services/websocket.js -> dist/services/websocket.js
src/utils/db.js -> dist/utils/db.js
src/utils/emailRenderer.js -> dist/utils/emailRenderer.js
src/utils/http.js -> dist/utils/http.js
src/utils/logger.js -> dist/utils/logger.js
src/utils/string.js -> dist/utils/string.js
src/utils/websocketServer.js -> dist/utils/websocketServer.js
Done in 9.35s.
[Pipeline] }
[Pipeline] // nodejs
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (Test)
[Pipeline] nodejs
[Pipeline] {
[Pipeline] sh
[Chill SCM] Running shell script
+ yarn test
yarn test v0.27.5
$ NODE_ENV=test mocha
Chill 1.0.0-alpha.2 - Test SuiteLoading config file: chill.test.yml
cli
--version
chill 1.0.0-alpha.2
✓ should print the chill cli version (1477ms)
--help
Usage: chill [options]
Options:
-h, --help Show help [boolean]
-c, --config Configuration file path.
-V, --version Show version number [boolean]
✓ should print the chill usage help string (1468ms)
config.get
✓ should return the previously resolved config from the cache.
config.resolve
Loading config file: function () { [native code] }
✓ should return default configuration even if the config file is empty.
Loading config file: function () { [native code] }
✓ should merge and return both the config loaded from file and the default ones.
Loading config file: function () { [native code] }
✓ should return the resolved config that overrides the default values if same keys are found.
Loading config file: Glens
✓ should put the resolved config in the cache.
Monitor.handleStatusChange
✓ should trigger the EVENT_STATUS_CHANGED event.
Monitor.isStatusDifferent
✓ should return true if status is different.
✓ should return false if status is same.
Monitor.start
✓ should trigger the EVENT_MONITORING_STARTED event.
email.isEnabled
✓ should return true if email notification is enabled.
✓ should return false if email notification is not enabled.
Unhandled rejection AssertionError: expected 'Investment Account' to equal 'digital'
at EventEmitter.<anonymous> (/home/jenkins-client/jenkins/workspace/Chill SCM/test/monitoring/Monitor.handleStatusChange.test.js:24:14)
at Object.invoke (/home/jenkins-client/jenkins/workspace/Chill SCM/node_modules/sinon/lib/sinon/behavior.js:140:32)
at EventEmitter.functionStub (/home/jenkins-client/jenkins/workspace/Chill SCM/node_modules/sinon/lib/sinon/stub.js:83:53)
at Function.invoke (/home/jenkins-client/jenkins/workspace/Chill SCM/node_modules/sinon/lib/sinon/spy.js:194:51)
at EventEmitter.proxy (/home/jenkins-client/jenkins/workspace/Chill SCM/node_modules/sinon/lib/sinon/spy.js:97:22)
at emitOne (events.js:96:13)
at EventEmitter.emit (events.js:188:7)
at Object.trigger (/home/jenkins-client/jenkins/workspace/Chill SCM/src/services/events.js:16:11)
at Monitor.handleStatusChange (/home/jenkins-client/jenkins/workspace/Chill SCM/src/monitoring/Monitor.js:69:12)
at Monitor._callee2$ (/home/jenkins-client/jenkins/workspace/Chill SCM/src/monitoring/Monitor.js:47:12)
at tryCatch (/home/jenkins-client/jenkins/workspace/Chill SCM/node_modules/regenerator-runtime/runtime.js:65:40)
at GeneratorFunctionPrototype.invoke [as _invoke] (/home/jenkins-client/jenkins/workspace/Chill SCM/node_modules/regenerator-runtime/runtime.js:303:22)
at GeneratorFunctionPrototype.prototype.(anonymous function) [as next] (/home/jenkins-client/jenkins/workspace/Chill SCM/node_modules/regenerator-runtime/runtime.js:117:21)
at step (/home/jenkins-client/jenkins/workspace/Chill SCM/src/monitoring/Monitor.js:31:191)
at /home/jenkins-client/jenkins/workspace/Chill SCM/src/monitoring/Monitor.js:31:361
at tryCatcher (/home/jenkins-client/jenkins/workspace/Chill SCM/node_modules/bluebird/js/release/util.js:16:23)
at Promise._settlePromiseFromHandler (/home/jenkins-client/jenkins/workspace/Chill SCM/node_modules/bluebird/js/release/promise.js:512:31)
at Promise._settlePromise (/home/jenkins-client/jenkins/workspace/Chill SCM/node_modules/bluebird/js/release/promise.js:569:18)
at Promise._settlePromise0 (/home/jenkins-client/jenkins/workspace/Chill SCM/node_modules/bluebird/js/release/promise.js:614:10)
at Promise._settlePromises (/home/jenkins-client/jenkins/workspace/Chill SCM/node_modules/bluebird/js/release/promise.js:693:18)
at Async._drainQueue (/home/jenkins-client/jenkins/workspace/Chill SCM/node_modules/bluebird/js/release/async.js:133:16)
at Async._drainQueues (/home/jenkins-client/jenkins/workspace/Chill SCM/node_modules/bluebird/js/release/async.js:143:10)
at Immediate.Async.drainQueues (/home/jenkins-client/jenkins/workspace/Chill SCM/node_modules/bluebird/js/release/async.js:17:14)
at runCallback (timers.js:672:20)
at tryOnImmediate (timers.js:645:5)
at processImmediate [as _immediateCallback] (timers.js:617:5)
email.getClient
✓ should create a nodemailer transport with provided configurations
email.notify
✓ should send email notification with correct parameters.
hipchat.isEnabled
✓ should return true if hipchat notification is enabled.
✓ should return false if hipchat notification is not enabled.
hipchat.notify
✓ should send the notification payload to the hipchat API endpoint.
✓ should log error if it fails to send notification to hipchat.
notifier.notify
✓ should notify if slack is enabled
✓ should not notify if slack is not enabled
persistence.persist
✓ should persist status log to database.
✓ should log an error if it cannot persist to database.
persistence.getLastStatus
✓ should get last status of service from database.
✓ should return null if it cannot get last status of service from database.
✓ should log an error if it cannot fetch from database.
slack.isEnabled
✓ should return true if slack notification is enabled.
✓ should return false if slack notification is not enabled.
slack.notify
✓ should send the notification payload to the slack API endpoint.
✓ should log error if it fails to send notification to slack.
status.getCheckInterval
✓ should return maximum interval if status is up.
✓ should return minimum interval if status is down.
center
✓ would return the text centered with left-padding slightly less than the right-padding if width is even and text length is odd.
✓ would return the text centered with left-padding slightly less than the right-padding if width is odd and text length is even.
✓ should return the text centered with equal padding on both sides if the width and text length are both odd numbers.
✓ should return the text centered with equal padding on both sides if the width and text length are both even numbers.
✓ should return the same text if the width is less than or equal to the text length.
✓ should return the centered text with custom fillchar too.
twilio.isEnabled
✓ should return true if twilio notification is enabled.
✓ should return false if twilio notification is not enabled
twilio.notify
✓ should send notification from twilio with correct params
✓ should log error when twilio fails to send the message
websocket.isEnabled
✓ should return true if websocket notification is enabled.
✓ should return false if websocket notification is not enabled.
websocket.init
✓ should initialize websocket server if websocket is enabled.
✓ should not initialize websocket server if websocket is disabled.
websocket.notify
✓ should broadcast to all clients.
47 passing (3s)
Done in 6.85s.
[Pipeline] }
[Pipeline] // nodejs
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (Deploy)
[Pipeline] nodejs
[Pipeline] {
[Pipeline] }
[Pipeline] // nodejs
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS
In travis, the same process is done by
language: node_js
node_js:
- "8"
- "7"
- "6"
before_script:
- yarn build
script:
- yarn test
I am confused whether it is a bug in the plugin because the plugin allows to multiple version of nodejs, or should I mention them manually in Jenkinsfile.
I think that the tools section is missing. here is an example with mvn.
pipeline {
agent { label 'your-label' }
options {
timestamps()
timeout(time: 15, unit: 'MINUTES')
}
tools {
maven 'Maven-3.3.9'
}
stages { ......

Resources