diff --git a/Jenkinsfile b/Jenkinsfile index 7a969204..ba3cee20 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,8 +1,6 @@ @Library('shared-libraries') _ -def runTests(String type,String version){ - copyRPM type,version - setUpML '$WORKSPACE/xdmp/src/Mark*.rpm' +def runTests(){ sh ''' export JAVA_HOME=$JAVA_HOME_DIR export GRADLE_USER_HOME=$WORKSPACE/$GRADLE_DIR @@ -11,8 +9,11 @@ def runTests(String type,String version){ node --version npm --version npm ci + cd test-app - ./gradlew -i mlDeploy -g $PWD + ./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 @@ -21,6 +22,29 @@ def runTests(String type,String version){ ''' } + +def runDockerCompose(String markLogicDockerImage) { + cleanupDocker() + sh label:'mlsetup', 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 + sleep 60s; + ''' +} + +def teardownAfterTests() { + updateWorkspacePermissions() + sh label:'mlcleanup', script: '''#!/bin/bash + cd node-client-api/test-app + docker-compose down -v || true + ''' + cleanupDocker() +} + def runAuditReport(){ sh ''' export PATH=${NODE_HOME_DIR}/bin:$PATH @@ -31,9 +55,7 @@ def runAuditReport(){ ''' } -def runE2ETests(String type,String version){ - copyRPM type,version - setUpML '$WORKSPACE/xdmp/src/Mark*.rpm' +def runE2ETests(){ sh ''' export PATH=${NODE_HOME_DIR}/bin:$PATH cd node-client-api @@ -69,20 +91,24 @@ def runE2ETests(String type,String version){ ../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') @@ -95,8 +121,14 @@ pipeline{ agent {label 'nodeclientpool'} steps{ runAuditReport() - runTests('Release','11.3.1') - runE2ETests('Release','11.3.1') + runDockerCompose('progressofficial/marklogic-db:latest-11.3') + runTests() + runE2ETests() + } + post{ + always{ + teardownAfterTests() + } } } stage('regressions'){ @@ -110,8 +142,14 @@ pipeline{ } agent {label 'nodeclientpool'} steps{ - runTests('Latest','11') - runE2ETests('Latest','11') + 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'){ @@ -123,8 +161,14 @@ pipeline{ } agent {label 'nodeclientpool'} steps{ - runTests('Latest','12.0') - runE2ETests('Latest','12.0') + 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'){ @@ -136,21 +180,14 @@ pipeline{ } agent {label 'nodeclientpool'} steps{ - runTests('Latest','10.0') - runE2ETests('Latest','10.0') + runDockerCompose('ml-docker-db-dev-tierpoint.bed-artifactory.bedford.progress.com/marklogic/marklogic-server-ubi:latest-10') + runTests() + runE2ETests() } - } - stage('runtests-10.0-10.2'){ - when{ - allOf{ - branch 'develop' - expression {return params.regressions} - } + post{ + always{ + teardownAfterTests() } - agent {label 'nodeclientpool'} - steps{ - runTests('Release','10.0-10.2') - runE2ETests('Release','10.0-10.2') } } } diff --git a/package-lock.json b/package-lock.json index f6f95925..fbf8afc7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5615,9 +5615,9 @@ } }, "node_modules/tar-fs": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.3.tgz", - "integrity": "sha512-090nwYJDmlhwFwEW3QQl+vaNnxsO2yVsd45eTKRBzSzu+hlb1w2K9inVq5b0ngXuLVqQ4ApvsUHHnu/zQNkWAg==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.4.tgz", + "integrity": "sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ==", "license": "MIT", "optional": true, "dependencies": { diff --git a/package.json b/package.json index 0348f8a3..91a5a469 100644 --- a/package.json +++ b/package.json @@ -99,7 +99,7 @@ "serialize-javascript": "6.0.2", "supports-color": "7.2.0", "strip-ansi": "6.0.0", - "tar-fs": "2.1.3", + "tar-fs": "2.1.4", "tmp": "0.2.4", "wrap-ansi": "6.2.0" } diff --git a/test-app/docker-compose-nightlies.yaml b/test-app/docker-compose-nightlies.yaml deleted file mode 100644 index 161a0fde..00000000 --- a/test-app/docker-compose-nightlies.yaml +++ /dev/null @@ -1,27 +0,0 @@ -version: '3.8' -# name: node-client-10-nightly -# name: node-client-10_0-10 -name: node-client-11-1-jenkins -#name: node-client-11-nightly-jenkins -# name: node-client-12-nightly - -services: - - marklogic: - #image: "ml-docker-db-dev-tierpoint.bed-artifactory.bedford.progress.com/marklogic/marklogic-server-centos:10.0-nightly-centos-1.1.1" - #image: "marklogicdb/marklogic-db:latest-10.0-10" - image: "marklogicdb/marklogic-db:11.1.0-centos-1.1.0" - # image: "ml-docker-db-dev-tierpoint.bed-artifactory.bedford.progress.com/marklogic/marklogic-server-centos:11.2.nightly-centos-1.1.2" - #image: "ml-docker-db-dev-tierpoint.bed-artifactory.bedford.progress.com/marklogic/marklogic-server-centos:12.0.nightly-centos-1.1.1" - platform: linux/amd64 - environment: - - INSTALL_CONVERTERS=true - - MARKLOGIC_INIT=true - - MARKLOGIC_ADMIN_USERNAME=admin - - MARKLOGIC_ADMIN_PASSWORD=admin - volumes: - - ./containerLogs:/var/opt/MarkLogic/Logs - ports: - - 8000-8017:8000-8017 - - 8024-8029:8024-8029 - - 8079:8079 diff --git a/test-app/docker-compose.yaml b/test-app/docker-compose.yaml index 1aa79bbc..8d0f2352 100644 --- a/test-app/docker-compose.yaml +++ b/test-app/docker-compose.yaml @@ -1,4 +1,4 @@ -name: node-client +name: docker-tests-node-client services: @@ -13,5 +13,6 @@ services: volumes: - ${MARKLOGIC_LOGS_VOLUME}:/var/opt/MarkLogic/Logs ports: - - 8000-8002:8000-8002 - - 8015-8017:8015-8017 + - 8000-8017:8000-8017 + - 8024-8029:8024-8029 + - 8079:8079