Skip to content

Commit 87fb84c

Browse files
committed
Converting Jenkinsfile to use a docker-compose file
Switch to images and artifactory. Removing mapped volumes. Using .env for mapping a local volume during development.
1 parent 0e15eab commit 87fb84c

File tree

5 files changed

+79
-52
lines changed

5 files changed

+79
-52
lines changed

.gitignore

-1
Original file line numberDiff line numberDiff line change
@@ -37,5 +37,4 @@ ml-development-tools/src/test/ml-modules
3737
ml-development-tools/src/test/java/com/marklogic/client/test/dbfunction/generated
3838

3939
.vscode
40-
docker-compose.yaml
4140
docker/

CONTRIBUTING.md

+11-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,17 @@ and add the following (you can override additional properties as necessary):
2828
Note that additional properties are defined via `./tests-app/gradle.properties`, though it is not expected that these
2929
properties will need to be changed.
3030

31-
The application is then deployed via the following command:
31+
The tests require a MarkLogic instance with access to several ports (8000,8001,8002,8012,8014,8020). That instance may
32+
be a local instance or it may be running in a Docker container. If you would like to create a Docker container with the
33+
instance, you may create the container with the following commands (starting in the project root directory):
34+
35+
```
36+
cd test-app
37+
docker-compose up -d --build
38+
cd ..
39+
```
40+
41+
Once you have a MarkLogic instance ready, the application is then deployed via the following command:
3242

3343
./gradlew mlDeploy -i
3444

Jenkinsfile

+43-50
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,38 @@
11
@Library('shared-libraries') _
22

33
def getJava(){
4-
if(env.JAVA_VERSION=="JAVA17"){
5-
return "/home/builder/java/jdk-17.0.2"
6-
}else if(env.JAVA_VERSION=="JAVA11"){
7-
return "/home/builder/java/jdk-11.0.2"
8-
}else if(env.JAVA_VERSION=="JAVA21"){
4+
if(env.JAVA_VERSION=="JAVA17"){
5+
return "/home/builder/java/jdk-17.0.2"
6+
}else if(env.JAVA_VERSION=="JAVA11"){
7+
return "/home/builder/java/jdk-11.0.2"
8+
}else if(env.JAVA_VERSION=="JAVA21"){
99
return "/home/builder/java/jdk-21.0.1"
1010
}else{
11-
return "/home/builder/java/openjdk-1.8.0-262"
12-
}
11+
return "/home/builder/java/openjdk-1.8.0-262"
12+
}
1313
}
1414

15-
def runAllTests(String type, String version, Boolean useReverseProxy){
16-
copyRPM type, version
17-
sh 'sudo /usr/local/sbin/mladmin removeforest /space/Forests'
18-
setUpML '$WORKSPACE/xdmp/src/Mark*.rpm'
19-
copyConvertersRPM type,version
20-
setUpMLConverters '$WORKSPACE/xdmp/src/Mark*Converters*.rpm'
15+
def setupDockerMarkLogic(String image){
16+
sh label:'mlsetup', script: '''#!/bin/bash
17+
echo "Removing any running MarkLogic server and clean up MarkLogic data directory"
18+
sudo /usr/local/sbin/mladmin remove
19+
sudo /usr/local/sbin/mladmin cleandata
20+
cd java-client-api/test-app
21+
docker compose down -v || true
22+
echo "Using image: "'''+image+'''
23+
MARKLOGIC_IMAGE='''+image+''' MARKLOGIC_LOGS_VOLUME=marklogicLogs docker compose up -d --build
24+
echo "mlPassword=admin" > gradle-local.properties
25+
echo "Waiting for MarkLogic server to initialize."
26+
sleep 30s
27+
cd ..
28+
export GRADLE_USER_HOME=$WORKSPACE/$GRADLE_DIR
29+
export PATH=$GRADLE_USER_HOME:$JAVA_HOME/bin:$PATH
30+
./gradlew -i mlDeploy mlReloadSchemas
31+
'''
32+
}
2133

22-
sh label:'deploy test app', script: '''#!/bin/bash
23-
export JAVA_HOME=$JAVA_HOME_DIR
24-
export GRADLE_USER_HOME=$WORKSPACE/$GRADLE_DIR
25-
export PATH=$GRADLE_USER_HOME:$JAVA_HOME/bin:$PATH
26-
cd java-client-api
27-
./gradlew -i mlDeploy mlReloadSchemas -PmlForestDataDirectory=/space
28-
'''
34+
def runAllTests(Boolean useReverseProxy, String image){
35+
setupDockerMarkLogic(image)
2936

3037
if (useReverseProxy) {
3138
sh label:'run marklogic-client-api tests with reverse proxy', script: '''#!/bin/bash
@@ -155,18 +162,9 @@ pipeline{
155162
}
156163
}
157164
steps {
158-
copyRPM 'Latest','11'
159-
sh 'sudo /usr/local/sbin/mladmin removeforest /space/Forests'
160-
setUpML '$WORKSPACE/xdmp/src/Mark*.rpm'
161-
copyConvertersRPM 'Latest','11'
162-
setUpMLConverters '$WORKSPACE/xdmp/src/Mark*Converters*.rpm'
163-
sh label:'deploy test app', script: '''#!/bin/bash
164-
export JAVA_HOME=$JAVA_HOME_DIR
165-
export GRADLE_USER_HOME=$WORKSPACE/$GRADLE_DIR
166-
export PATH=$GRADLE_USER_HOME:$JAVA_HOME/bin:$PATH
167-
cd java-client-api
168-
./gradlew -i mlDeploy mlReloadSchemas -PmlForestDataDirectory=/space
169-
'''
165+
setupDockerMarkLogic("ml-docker-db-dev-tierpoint.bed-artifactory.bedford.progress.com/marklogic/marklogic-server-ubi:latest-11")
166+
167+
170168
sh label:'run marklogic-client-api tests', script: '''#!/bin/bash
171169
export JAVA_HOME=$JAVA_HOME_DIR
172170
export GRADLE_USER_HOME=$WORKSPACE/$GRADLE_DIR
@@ -177,6 +175,14 @@ pipeline{
177175
'''
178176
junit '**/build/**/TEST*.xml'
179177
}
178+
post{
179+
always{
180+
sh label:'dockerCleanup', script: '''#!/bin/bash
181+
cd java-client-api/test-app
182+
docker compose down -v || true
183+
'''
184+
}
185+
}
180186
}
181187
stage('publish'){
182188
when {
@@ -205,7 +211,7 @@ pipeline{
205211
}
206212
}
207213
steps {
208-
runAllTests('Release', '11.2.0', false)
214+
runAllTests(false, "ml-docker-db-dev-tierpoint.bed-artifactory.bedford.progress.com/marklogic/marklogic-server-ubi:11.2.0-ubi")
209215
junit '**/build/**/TEST*.xml'
210216
}
211217
}
@@ -218,7 +224,7 @@ pipeline{
218224
}
219225
}
220226
steps {
221-
runAllTests('Latest', '11', false)
227+
runAllTests(false, "ml-docker-db-dev-tierpoint.bed-artifactory.bedford.progress.com/marklogic/marklogic-server-ubi:latest-11")
222228
junit '**/build/**/TEST*.xml'
223229
}
224230
}
@@ -231,7 +237,7 @@ pipeline{
231237
}
232238
}
233239
steps {
234-
runAllTests('Latest', '11', true)
240+
runAllTests(true, "ml-docker-db-dev-tierpoint.bed-artifactory.bedford.progress.com/marklogic/marklogic-server-ubi:latest-11")
235241
junit '**/build/**/TEST*.xml'
236242
}
237243
}
@@ -244,7 +250,7 @@ pipeline{
244250
}
245251
}
246252
steps {
247-
runAllTests('Latest', '12', false)
253+
runAllTests(false, "ml-docker-db-dev-tierpoint.bed-artifactory.bedford.progress.com/marklogic/marklogic-server-ubi:latest-12")
248254
junit '**/build/**/TEST*.xml'
249255
}
250256
}
@@ -257,20 +263,7 @@ pipeline{
257263
}
258264
}
259265
steps {
260-
runAllTests('Latest', '10.0', false)
261-
junit '**/build/**/TEST*.xml'
262-
}
263-
}
264-
265-
stage('regressions-10.0-10.2') {
266-
when {
267-
allOf {
268-
branch 'develop'
269-
expression {return params.regressions}
270-
}
271-
}
272-
steps {
273-
runAllTests('Release', '10.0-10.2', false)
266+
runAllTests(false, "ml-docker-db-dev-tierpoint.bed-artifactory.bedford.progress.com/marklogic/marklogic-server-ubi:latest-10")
274267
junit '**/build/**/TEST*.xml'
275268
}
276269
}

test-app/.env

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
# Defines environment variables for docker-compose.
2+
# Can be overridden via e.g. `MARKLOGIC_TAG=latest-10.0 docker-compose up -d --build`.
3+
MARKLOGIC_IMAGE=progressofficial/marklogic-db:latest
4+
MARKLOGIC_LOGS_VOLUME=./docker/marklogic/logs

test-app/docker-compose.yaml

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
name: marklogic-javaclient-test-app
2+
3+
services:
4+
5+
marklogic:
6+
image: "${MARKLOGIC_IMAGE}"
7+
platform: linux/amd64
8+
environment:
9+
- MARKLOGIC_INIT=true
10+
- MARKLOGIC_ADMIN_USERNAME=admin
11+
- MARKLOGIC_ADMIN_PASSWORD=admin
12+
volumes:
13+
- ${MARKLOGIC_LOGS_VOLUME}:/var/opt/MarkLogic/Logs
14+
ports:
15+
- "8000-8002:8000-8002"
16+
- "8012:8012"
17+
- "8014:8014"
18+
- "8020:8020"
19+
20+
volumes:
21+
marklogicLogs:

0 commit comments

Comments
 (0)