Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
349 changes: 177 additions & 172 deletions Jenkinsfile
Original file line number Diff line number Diff line change
@@ -1,196 +1,201 @@
@Library('shared-libraries') _

def runTests(){
sh '''
export JAVA_HOME=$JAVA_HOME_DIR
export GRADLE_USER_HOME=$WORKSPACE/$GRADLE_DIR
export PATH=$JAVA_HOME/bin:$GRADLE_USER_HOME:${NODE_HOME_DIR}/bin:$PATH
cd node-client-api
node --version
npm --version
npm ci

cd test-app
./gradlew -i mlTestConnections
./gradlew -i mlDeploy

cd ..
rm -rf $WORKSPACE/*.xml || true
./node_modules/.bin/mocha --timeout 10000 -R xunit test-basic/ --reporter mocha-junit-reporter --reporter-options mochaFile=$WORKSPACE/test-basic-reports.xml -g \'logging|archivePath\' --invert || true
./node_modules/.bin/gulp setupProxyTests || true
./node_modules/.bin/mocha --timeout 10000 -R xunit test-basic-proxy/lib/**/*.js --reporter mocha-junit-reporter --reporter-options mochaFile=$WORKSPACE/test-basic-proxy-reports.xml -g \'logging|archivePath\' --invert || true
'''
def runTests() {
sh label: 'deploy-test-app-and-run-tests', script: '''
export JAVA_HOME=$JAVA_HOME_DIR
export GRADLE_USER_HOME=$WORKSPACE/$GRADLE_DIR
export PATH=$JAVA_HOME/bin:$GRADLE_USER_HOME:${NODE_HOME_DIR}/bin:$PATH
cd node-client-api
node --version
npm --version
npm ci

cd test-app
./gradlew -i mlTestConnections
./gradlew -i mlDeploy

cd ..
rm -rf $WORKSPACE/*.xml || true
./node_modules/.bin/mocha --timeout 10000 -R xunit test-basic/ --reporter mocha-junit-reporter --reporter-options mochaFile=$WORKSPACE/test-basic-reports.xml -g \'logging|archivePath\' --invert || true
./node_modules/.bin/gulp setupProxyTests || true
./node_modules/.bin/mocha --timeout 10000 -R xunit test-basic-proxy/lib/**/*.js --reporter mocha-junit-reporter --reporter-options mochaFile=$WORKSPACE/test-basic-proxy-reports.xml -g \'logging|archivePath\' --invert || true
'''
}

def runDockerCompose(String markLogicDockerImage) {
cleanupDocker()
sh label:'mlsetup', script: '''#!/bin/bash
cleanupDocker()
sh label: 'run-docker-compose', script: '''#!/bin/bash
echo "Removing any running MarkLogic server and clean up MarkLogic data directory"
sudo /usr/local/sbin/mladmin remove
docker-compose down -v || true
sudo /usr/local/sbin/mladmin cleandata
cd node-client-api/test-app
MARKLOGIC_LOGS_VOLUME=/tmp MARKLOGIC_IMAGE='''+markLogicDockerImage+''' docker-compose up -d --build
MARKLOGIC_LOGS_VOLUME=/tmp MARKLOGIC_IMAGE=''' + markLogicDockerImage + ''' docker-compose up -d --build
sleep 60s;
'''
'''
}

def teardownAfterTests() {
updateWorkspacePermissions()
sh label:'mlcleanup', script: '''#!/bin/bash
updateWorkspacePermissions()
sh label: 'teardown-docker', script: '''#!/bin/bash
cd node-client-api/test-app
docker-compose down -v || true
'''
cleanupDocker()
cleanupDocker()
}

def runAuditReport(){
sh '''
export PATH=${NODE_HOME_DIR}/bin:$PATH
cd node-client-api
npm ci
rm -rf $WORKSPACE/npm-audit-report.json || true
npm audit -json || true > $WORKSPACE/npm-audit-report.json
'''
def runAuditReport() {
sh label: 'run-audit-report', script: '''
export PATH=${NODE_HOME_DIR}/bin:$PATH
cd node-client-api
npm ci
rm -rf $WORKSPACE/npm-audit-report.json || true
npm audit -json || true > $WORKSPACE/npm-audit-report.json
'''
}

def runE2ETests(){
sh '''
export PATH=${NODE_HOME_DIR}/bin:$PATH
cd node-client-api
node --version
npm --version
npm ci
node etc/test-setup-qa.js
# Adding sleep for the setups to complete before running test-complete
sleep 10
node etc/test-setup-dmsdk-qa.js
sleep 10
node config-optic/setupqa.js
sleep 30
cd test-complete-app
./gradlew -i mlDeploy -g $PWD
cd ..
./node_modules/.bin/mocha --no-parallel -R xunit --timeout 60000 test-complete/ --reporter mocha-junit-reporter --reporter-options mochaFile=$WORKSPACE/test-complete-results.xml || true
cd test-complete-proxy
npm install gulp-cli
gulp loadToModulesDB
gulp generateFnClasses
gulp copyFnClasses
# Adding sleep for the gulp commands to complete.
sleep 30
cp *.js ../test-complete/
cp -R ml-modules/ ../test-complete
cd ../test-complete
../node_modules/.bin/mocha -R xunit --timeout 60000 nodejs-ds-setup-docs.js
../node_modules/.bin/mocha -R xunit --timeout 60000 "nodejs-ds-required-params.js" --reporter mocha-junit-reporter --reporter-options mochaFile=$WORKSPACE/ds-required-params-results.xml || true
../node_modules/.bin/mocha -R xunit --timeout 60000 "nodejs-ds-error-map.js" --reporter mocha-junit-reporter --reporter-options mochaFile=$WORKSPACE/ds-multipleWorker-results.xml || true
../node_modules/.bin/mocha -R xunit --timeout 60000 -R xunit "nodejs-ds-multipleWorker.js" --reporter mocha-junit-reporter --reporter-options mochaFile=$WORKSPACE/ds-multipleWorker-results.xml || true
../node_modules/.bin/mocha -R xunit --timeout 60000 -R xunit "nodejs-ds-transactions.js" --reporter mocha-junit-reporter --reporter-options mochaFile=$WORKSPACE/ds-transactions-results.js.xml || true
../node_modules/.bin/mocha -R xunit --timeout 60000 -R xunit "nodejs-ds-dynamic.js" --reporter mocha-junit-reporter --reporter-options mochaFile=$WORKSPACE/ds-dynamic-results.xml || true
'''
junit '**/*.xml'
def runE2ETests() {
sh label: 'run-e2e-tests', script: '''
export PATH=${NODE_HOME_DIR}/bin:$PATH
cd node-client-api
node --version
npm --version
npm ci
node etc/test-setup-qa.js
# Adding sleep for the setups to complete before running test-complete
sleep 10
node etc/test-setup-dmsdk-qa.js
sleep 10
node config-optic/setupqa.js
sleep 30
cd test-complete-app
./gradlew -i mlDeploy -g $PWD
cd ..
./node_modules/.bin/mocha --no-parallel -R xunit --timeout 60000 test-complete/ --reporter mocha-junit-reporter --reporter-options mochaFile=$WORKSPACE/test-complete-results.xml || true
cd test-complete-proxy
npm install gulp-cli
gulp loadToModulesDB
gulp generateFnClasses
gulp copyFnClasses
# Adding sleep for the gulp commands to complete.
sleep 30
cp *.js ../test-complete/
cp -R ml-modules/ ../test-complete
cd ../test-complete
../node_modules/.bin/mocha -R xunit --timeout 60000 nodejs-ds-setup-docs.js
../node_modules/.bin/mocha -R xunit --timeout 60000 "nodejs-ds-required-params.js" --reporter mocha-junit-reporter --reporter-options mochaFile=$WORKSPACE/ds-required-params-results.xml || true
../node_modules/.bin/mocha -R xunit --timeout 60000 "nodejs-ds-error-map.js" --reporter mocha-junit-reporter --reporter-options mochaFile=$WORKSPACE/ds-multipleWorker-results.xml || true
../node_modules/.bin/mocha -R xunit --timeout 60000 -R xunit "nodejs-ds-multipleWorker.js" --reporter mocha-junit-reporter --reporter-options mochaFile=$WORKSPACE/ds-multipleWorker-results.xml || true
../node_modules/.bin/mocha -R xunit --timeout 60000 -R xunit "nodejs-ds-transactions.js" --reporter mocha-junit-reporter --reporter-options mochaFile=$WORKSPACE/ds-transactions-results.js.xml || true
../node_modules/.bin/mocha -R xunit --timeout 60000 -R xunit "nodejs-ds-dynamic.js" --reporter mocha-junit-reporter --reporter-options mochaFile=$WORKSPACE/ds-dynamic-results.xml || true
'''
junit '**/*.xml'
}

pipeline{
agent none

triggers{
parameterizedCron(env.BRANCH_NAME == "develop" ? "00 02 * * * % regressions=true" : "")
}

parameters{
booleanParam(name: 'regressions', defaultValue: false, description: 'indicator if build is for regressions')
}

options {
checkoutToSubdirectory 'node-client-api'
buildDiscarder logRotator(artifactDaysToKeepStr: '7', artifactNumToKeepStr: '', daysToKeepStr: '7', numToKeepStr: '10')
}

environment{
NODE_HOME_DIR= "/users/ml/builder/nodeJs/node-v22.20.0-linux-x64"
DMC_USER = credentials('MLBUILD_USER')
DMC_PASSWORD = credentials('MLBUILD_PASSWORD')
GRADLE_DIR=".gradle"
JAVA_HOME_DIR="/home/builder/java/jdk-17.0.2"
}
stages{
stage('runtests-11.3.1'){
agent {label 'nodeclientpool'}
steps{
runAuditReport()
runDockerCompose('progressofficial/marklogic-db:latest-11.3')
runTests()
runE2ETests()
}
post{
always{
teardownAfterTests()
}
}
}
stage('regressions'){
parallel{
stage('runtests-11-nightly'){
when{
allOf{
branch 'develop'
expression {return params.regressions}
}
}
agent {label 'nodeclientpool'}
steps{
runDockerCompose('ml-docker-db-dev-tierpoint.bed-artifactory.bedford.progress.com/marklogic/marklogic-server-ubi:latest-11')
runTests()
runE2ETests()
}
post{
always{
teardownAfterTests()
}
}
}
stage('runtests-12-nightly'){
when{
allOf{
branch 'develop'
expression {return params.regressions}
}
}
agent {label 'nodeclientpool'}
steps{
runDockerCompose('ml-docker-db-dev-tierpoint.bed-artifactory.bedford.progress.com/marklogic/marklogic-server-ubi:latest-12')
runTests()
runE2ETests()
}
post{
always{
teardownAfterTests()
}
}
}
stage('runtests-10-nightly'){
when{
allOf{
branch 'develop'
expression {return params.regressions}
}
}
agent {label 'nodeclientpool'}
steps{
runDockerCompose('ml-docker-db-dev-tierpoint.bed-artifactory.bedford.progress.com/marklogic/marklogic-server-ubi:latest-10')
runTests()
runE2ETests()
}
post{
always{
teardownAfterTests()
}
}
}
}
}
}
}
pipeline {
agent none

triggers {
parameterizedCron(env.BRANCH_NAME == "develop" ? "00 02 * * * % regressions=true" : "")
}

parameters {
booleanParam(name: 'regressions', defaultValue: false, description: 'indicator if build is for regressions')
}

options {
checkoutToSubdirectory 'node-client-api'
buildDiscarder logRotator(artifactDaysToKeepStr: '7', artifactNumToKeepStr: '', daysToKeepStr: '7', numToKeepStr: '10')
}

environment {
NODE_HOME_DIR = "/users/ml/builder/nodeJs/node-v22.20.0-linux-x64"
DMC_USER = credentials('MLBUILD_USER')
DMC_PASSWORD = credentials('MLBUILD_PASSWORD')
GRADLE_DIR = ".gradle"
JAVA_HOME_DIR = "/home/builder/java/jdk-17.0.2"
}

stages {

stage('runtests-11.3.1') {
agent { label 'nodeclientpool' }
steps {
runAuditReport()
runDockerCompose('progressofficial/marklogic-db:latest-11.3')
runTests()
runE2ETests()
}
post {
always {
teardownAfterTests()
}
}
}

stage('regressions') {
parallel {

stage('runtests-11-nightly') {
when {
allOf {
branch 'develop'
expression { return params.regressions }
}
}
agent { label 'nodeclientpool' }
steps {
runDockerCompose('ml-docker-db-dev-tierpoint.bed-artifactory.bedford.progress.com/marklogic/marklogic-server-ubi:latest-11')
runTests()
runE2ETests()
}
post {
always {
teardownAfterTests()
}
}
}

stage('runtests-12-nightly') {
when {
allOf {
branch 'develop'
expression { return params.regressions }
}
}
agent { label 'nodeclientpool' }
steps {
runDockerCompose('ml-docker-db-dev-tierpoint.bed-artifactory.bedford.progress.com/marklogic/marklogic-server-ubi:latest-12')
runTests()
runE2ETests()
}
post {
always {
teardownAfterTests()
}
}
}

stage('runtests-10-nightly') {
when {
allOf {
branch 'develop'
expression { return params.regressions }
}
}
agent { label 'nodeclientpool' }
steps {
runDockerCompose('ml-docker-db-dev-tierpoint.bed-artifactory.bedford.progress.com/marklogic/marklogic-server-ubi:latest-10')
runTests()
runE2ETests()
}
post {
always {
teardownAfterTests()
}
}
}
}
}
}
}