Skip to content

Commit abccef4

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 abccef4

File tree

5 files changed

+81
-52
lines changed

5 files changed

+81
-52
lines changed

.gitignore

Lines changed: 0 additions & 1 deletion
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

Lines changed: 11 additions & 1 deletion
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

Lines changed: 45 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,39 @@
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+
// mkdir -p docker/marklogic/logs
22+
docker compose down -v || true
23+
echo "Using image: "'''+image+'''
24+
MARKLOGIC_IMAGE='''+image+''' MARKLOGIC_LOGS_VOLUME=marklogicLogs docker compose up -d --build
25+
echo "mlPassword=admin" > gradle-local.properties
26+
echo "Waiting for MarkLogic server to initialize."
27+
sleep 30s
28+
cd ..
29+
export GRADLE_USER_HOME=$WORKSPACE/$GRADLE_DIR
30+
export PATH=$GRADLE_USER_HOME:$JAVA_HOME/bin:$PATH
31+
./gradlew -i mlDeploy mlReloadSchemas
32+
'''
33+
}
2134

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-
'''
35+
def runAllTests(Boolean useReverseProxy, String image){
36+
setupDockerMarkLogic(image)
2937

3038
if (useReverseProxy) {
3139
sh label:'run marklogic-client-api tests with reverse proxy', script: '''#!/bin/bash
@@ -155,18 +163,9 @@ pipeline{
155163
}
156164
}
157165
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-
'''
166+
setupDockerMarkLogic("ml-docker-db-dev-tierpoint.bed-artifactory.bedford.progress.com/marklogic/marklogic-server-ubi:latest-11")
167+
168+
170169
sh label:'run marklogic-client-api tests', script: '''#!/bin/bash
171170
export JAVA_HOME=$JAVA_HOME_DIR
172171
export GRADLE_USER_HOME=$WORKSPACE/$GRADLE_DIR
@@ -177,6 +176,15 @@ pipeline{
177176
'''
178177
junit '**/build/**/TEST*.xml'
179178
}
179+
post{
180+
always{
181+
sh label:'dockerCleanup', script: '''#!/bin/bash
182+
cd java-client-api/test-app
183+
docker compose down -v || true
184+
// sudo /usr/local/sbin/mladmin delete $WORKSPACE/java-client-api/test-app/docker/
185+
'''
186+
}
187+
}
180188
}
181189
stage('publish'){
182190
when {
@@ -205,7 +213,7 @@ pipeline{
205213
}
206214
}
207215
steps {
208-
runAllTests('Release', '11.2.0', false)
216+
runAllTests(false, "ml-docker-db-dev-tierpoint.bed-artifactory.bedford.progress.com/marklogic/marklogic-server-ubi:11.2.0-ubi")
209217
junit '**/build/**/TEST*.xml'
210218
}
211219
}
@@ -218,7 +226,7 @@ pipeline{
218226
}
219227
}
220228
steps {
221-
runAllTests('Latest', '11', false)
229+
runAllTests(false, "ml-docker-db-dev-tierpoint.bed-artifactory.bedford.progress.com/marklogic/marklogic-server-ubi:latest-11")
222230
junit '**/build/**/TEST*.xml'
223231
}
224232
}
@@ -231,7 +239,7 @@ pipeline{
231239
}
232240
}
233241
steps {
234-
runAllTests('Latest', '11', true)
242+
runAllTests(true, "ml-docker-db-dev-tierpoint.bed-artifactory.bedford.progress.com/marklogic/marklogic-server-ubi:latest-11")
235243
junit '**/build/**/TEST*.xml'
236244
}
237245
}
@@ -244,7 +252,7 @@ pipeline{
244252
}
245253
}
246254
steps {
247-
runAllTests('Latest', '12', false)
255+
runAllTests(false, "ml-docker-db-dev-tierpoint.bed-artifactory.bedford.progress.com/marklogic/marklogic-server-ubi:latest-12")
248256
junit '**/build/**/TEST*.xml'
249257
}
250258
}
@@ -257,20 +265,7 @@ pipeline{
257265
}
258266
}
259267
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)
268+
runAllTests(false, "ml-docker-db-dev-tierpoint.bed-artifactory.bedford.progress.com/marklogic/marklogic-server-ubi:latest-10")
274269
junit '**/build/**/TEST*.xml'
275270
}
276271
}

test-app/.env

Lines changed: 4 additions & 0 deletions
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

Lines changed: 21 additions & 0 deletions
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)