Skip to content
Merged
Show file tree
Hide file tree
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
70 changes: 47 additions & 23 deletions Jenkinsfile
Original file line number Diff line number Diff line change
@@ -1,39 +1,63 @@
@Library('shared-libraries') _

pipeline{

agent none;

environment{
JAVA_HOME_DIR="/home/builder/java/jdk-11.0.2"
JAVA_HOME_DIR="/home/builder/java/jdk-17.0.2"
GRADLE_DIR =".gradle"
}

options {
checkoutToSubdirectory 'marklogic-python-client'
buildDiscarder logRotator(artifactDaysToKeepStr: '7', artifactNumToKeepStr: '', daysToKeepStr: '30', numToKeepStr: '')
buildDiscarder logRotator(artifactDaysToKeepStr: '7', artifactNumToKeepStr: '', daysToKeepStr: '30', numToKeepStr: '5')
}

stages{
stage('tests'){
agent {label 'devExpLinuxPool'}
steps{
script{
copyRPM 'Latest','11'
setUpML '$WORKSPACE/xdmp/src/Mark*.rpm'
sh label:'deploy project', script: '''#!/bin/bash
export JAVA_HOME=$JAVA_HOME_DIR
export GRADLE_USER_HOME=$WORKSPACE/$GRADLE_DIR
export PATH=$GRADLE_USER_HOME:$JAVA_HOME/bin:$PATH
cd marklogic-python-client/test-app
./gradlew -i mlDeploy -PmlPassword=admin
'''
sh label:'Run tests', script: '''#!/bin/bash
cd marklogic-python-client
python -m venv .venv;
source .venv/bin/activate;
pip install poetry;
poetry install;
pytest --junitxml=TestReport.xml || true
'''
junit 'marklogic-python-client/TestReport.xml'
}
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 marklogic-python-client/test-app
MARKLOGIC_LOGS_VOLUME=/tmp docker-compose up -d --build
Copy link
Preview

Copilot AI Aug 6, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Using /tmp for logs volume may cause issues as /tmp can be cleaned up by the system. Consider using a more persistent directory or creating a dedicated temporary directory for this build.

Suggested change
MARKLOGIC_LOGS_VOLUME=/tmp docker-compose up -d --build
mkdir -p "$WORKSPACE/marklogic-logs"
MARKLOGIC_LOGS_VOLUME="$WORKSPACE/marklogic-logs" docker-compose up -d --build

Copilot uses AI. Check for mistakes.

Copy link
Preview

Copilot AI Aug 6, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The environment variable MARKLOGIC_IMAGE is not set in this command, which means it will fall back to the default in .env. Consider explicitly setting MARKLOGIC_IMAGE here to ensure the intended image version is used.

Suggested change
MARKLOGIC_LOGS_VOLUME=/tmp docker-compose up -d --build
MARKLOGIC_IMAGE=marklogicdb/marklogic-server:latest MARKLOGIC_LOGS_VOLUME=/tmp docker-compose up -d --build

Copilot uses AI. Check for mistakes.

'''
sh label:'deploy project', script: '''#!/bin/bash
export JAVA_HOME=$JAVA_HOME_DIR
export GRADLE_USER_HOME=$WORKSPACE/$GRADLE_DIR
export PATH=$GRADLE_USER_HOME:$JAVA_HOME/bin:$PATH
cd marklogic-python-client/test-app
echo "Waiting for MarkLogic server to initialize."
sleep 60s
./gradlew -i mlDeploy -PmlPassword=admin
'''
// 'set -e' causes the script to fail if any command fails.
sh label:'Run tests', script: '''#!/bin/bash
set -e
cd marklogic-python-client
python -m venv .venv;
source .venv/bin/activate;
pip install poetry;
poetry install;
pytest --junitxml=TestReport.xml || true
'''
junit 'marklogic-python-client/TestReport.xml'
}
post{
always{
updateWorkspacePermissions()
sh label:'mlcleanup', script: '''#!/bin/bash
cd marklogic-python-client/test-app
docker-compose down -v || true
'''
cleanupDocker()
}
}
}
}
}
}
6 changes: 6 additions & 0 deletions test-app/.env
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# Defines environment variables for docker-compose.
# Can be overridden via e.g. `MARKLOGIC_IMAGE=latest-10.0 docker-compose up -d --build`.
MARKLOGIC_IMAGE=ml-docker-db-dev-tierpoint.bed-artifactory.bedford.progress.com/marklogic/marklogic-server-ubi:latest-12

# Defaults to a useful value for local development.
MARKLOGIC_LOGS_VOLUME=./docker/marklogic/logs
4 changes: 2 additions & 2 deletions test-app/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,15 @@ name: docker-tests-marklogic_python
services:

marklogic:
image: "ml-docker-db-dev-tierpoint.bed-artifactory.bedford.progress.com/marklogic/marklogic-server-ubi-rootless:latest-12"
image: "${MARKLOGIC_IMAGE}"
platform: linux/amd64
environment:
- INSTALL_CONVERTERS=true
- MARKLOGIC_INIT=true
- MARKLOGIC_ADMIN_USERNAME=admin
- MARKLOGIC_ADMIN_PASSWORD=admin
volumes:
- ./docker/marklogic/logs:/var/opt/MarkLogic/Logs
- ${MARKLOGIC_LOGS_VOLUME}:/var/opt/MarkLogic/Logs
ports:
- "8000-8002:8000-8002"
- "8030-8031:8030-8031"