forked from amkozlov/raxml-ng
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Jenkinsfile-large-test
110 lines (107 loc) · 3.84 KB
/
Jenkinsfile-large-test
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
#!groovy
pipeline {
agent {
label 'cme-eastwatch'
}
stages {
stage('Checkout') {
steps {
// Get some code from a GitHub repository
// git branch: 'ci',
// url: 'https://github.com/BerndDoser/raxml-ng.git'
sh '''
git submodule update --init --recursive
git submodule add https://github.com/amkozlov/ngtest.git
'''
}
}
stage('Build') {
agent {
dockerfile {
reuseNode true
filename 'dockerfile-gcc-11'
dir 'ci'
}
}
steps {
sh '''
rm -fr build && mkdir -p build && cd build
cmake -DCMAKE_BUILD_TYPE=Release -DUSE_MPI=ON .. 2>&1 |tee cmake.out
make 2>&1 |tee make.out
'''
}
}
stage('Benchmark matrix') {
matrix {
axes {
axis {
name 'COMMAND'
values 'all',
'start'
}
axis {
name 'INPUT'
values 'dna8.fa,GTR+G',
'prot21.fa,LG+G'
}
axis {
name 'PARALLEL'
values '-np 1 build/bin/raxml-ng-mpi --threads 1',
'-np 1 build/bin/raxml-ng-mpi --threads 6',
'-np 3 build/bin/raxml-ng-mpi --threads 2 --workers 1',
'-np 3 build/bin/raxml-ng-mpi --threads 2 --workers 3'
}
}
stages {
stage('Benchmark') {
agent {
dockerfile {
reuseNode true
filename 'dockerfile-gcc-11'
dir 'ci'
}
}
options {
lock('synchronous-matrix')
}
environment {
PARSTR = sh (returnStdout: true, script: "ci/get_parallel_prefix.sh $PARALLEL").trim()
MSA = sh (returnStdout: true, script: "echo $INPUT | cut -f1 -d ','").trim()
MODEL = sh (returnStdout: true, script: "echo $INPUT | cut -f2 -d ','").trim()
LOCATION = "${COMMAND}___${MSA}___$PARSTR"
}
steps {
sh """
mkdir -p out/${LOCATION}
mpirun ${PARALLEL} --${COMMAND} --msa ngtest/data/${MSA} --model ${MODEL} --brlen linked \
--prefix out/${LOCATION}/test --redo --seed 1
"""
}
}
}
}
}
stage('Publish benchmarks') {
steps {
sh "cd ci && ./generate_html.py ../out"
}
post {
always {
publishHTML(target : [
allowMissing: false,
alwaysLinkToLastBuild: true,
keepAll: true,
reportDir: 'ci',
reportFiles: 'benchmark.html',
reportName: 'Benchmark',
reportTitles: 'Benchmark'])
}
}
}
}
post {
failure {
mail to: '[email protected]', subject: "FAILURE: ${currentBuild.fullDisplayName}", body: "Failed."
}
}
}