##// END OF EJS Templates
jenkinsfile: catch the correct exception if jenkins plugin is not available
domruf -
r6506:bc1b11a5 default
parent child Browse files
Show More
@@ -1,162 +1,162 b''
1 1 node {
2 2 def createvirtualenv = ''
3 3 def activatevirtualenv = ''
4 4 if (isUnix()) {
5 5 createvirtualenv = 'rm -r $JENKINS_HOME/venv/$JOB_NAME || true && virtualenv $JENKINS_HOME/venv/$JOB_NAME'
6 6 activatevirtualenv = '. $JENKINS_HOME/venv/$JOB_NAME/bin/activate'
7 7 } else {
8 8 createvirtualenv = 'rmdir /s /q %JENKINS_HOME%\\venv\\%JOB_NAME% || true && virtualenv %JENKINS_HOME%\\venv\\%JOB_NAME%'
9 9 activatevirtualenv = 'call %JENKINS_HOME%\\venv\\%JOB_NAME%\\Scripts\\activate.bat'
10 10 }
11 11
12 12 stage('checkout') {
13 13 checkout scm
14 14 if (isUnix()) {
15 15 sh 'hg --config extensions.purge= purge --all'
16 16 } else {
17 17 bat 'hg --config extensions.purge= purge --all'
18 18 }
19 19 }
20 20 stage('virtual env') {
21 21 def virtualenvscript = """$createvirtualenv
22 22 $activatevirtualenv
23 23 python -m pip install --upgrade pip
24 24 pip install --upgrade setuptools
25 25 pip install --upgrade pylint
26 26 pip install --upgrade pytest-cov
27 27 """
28 28 if (isUnix()) {
29 29 virtualenvscript += """
30 30 pip install --upgrade python-ldap
31 31 pip install --upgrade python-pam
32 32 """
33 33 sh virtualenvscript
34 34 } else {
35 35 bat virtualenvscript
36 36 }
37 37 }
38 38 stage('setup') {
39 39 def virtualenvscript = """$activatevirtualenv
40 40 pip install --upgrade -e .
41 41 pip install -r dev_requirements.txt
42 42 python setup.py compile_catalog
43 43 """
44 44 if (isUnix()) {
45 45 sh virtualenvscript
46 46 } else {
47 47 bat virtualenvscript
48 48 }
49 49 stash name: 'kallithea', useDefaultExcludes: false
50 50 }
51 51 stage('pylint') {
52 52 sh script: """$activatevirtualenv
53 53 pylint -j 0 --disable=C -f parseable kallithea > pylint.out
54 54 """, returnStatus: true
55 55 archiveArtifacts 'pylint.out'
56 56 try {
57 57 step([$class: 'WarningsPublisher', canComputeNew: false, canResolveRelativePaths: false, defaultEncoding: '', excludePattern: '', healthy: '', includePattern: '', messagesPattern: '', parserConfigurations: [[parserName: 'PyLint', pattern: 'pylint.out']], unHealthy: ''])
58 } catch (UnsupportedOperationException exc) {
58 } catch (java.lang.IllegalArgumentException exc) {
59 59 echo "You need to install the 'Warnings Plug-in' to display the pylint report."
60 60 currentBuild.result = 'UNSTABLE'
61 61 echo "Caught: ${exc}"
62 62 }
63 63 }
64 64 def pytests = [:]
65 65 pytests['sqlite'] = {
66 66 ws {
67 67 unstash name: 'kallithea'
68 68 if (isUnix()) {
69 69 sh script: """$activatevirtualenv
70 70 py.test -p no:sugar --cov-config .coveragerc --junit-xml=pytest_sqlite.xml --cov=kallithea --cov-report xml
71 71 """, returnStatus: true
72 72 } else {
73 73 bat script: """$activatevirtualenv
74 74 py.test -p no:sugar --cov-config .coveragerc --junit-xml=pytest_sqlite.xml --cov=kallithea --cov-report xml
75 75 """, returnStatus: true
76 76 }
77 77 sh 'sed --in-place "s/\\(classname=[\'\\"]\\)/\\1SQLITE./g" pytest_sqlite.xml'
78 78 archiveArtifacts 'pytest_sqlite.xml'
79 79 junit 'pytest_sqlite.xml'
80 80 try {
81 81 step([$class: 'CoberturaPublisher', autoUpdateHealth: false, autoUpdateStability: false, coberturaReportFile: 'coverage.xml', failNoReports: false, failUnhealthy: false, failUnstable: false, maxNumberOfBuilds: 0, onlyStable: false, zoomCoverageChart: false])
82 } catch (UnsupportedOperationException exc) {
82 } catch (java.lang.IllegalArgumentException exc) {
83 83 echo "You need to install the pipeline compatible 'CoberturaPublisher Plug-in' to display the coverage report."
84 84 currentBuild.result = 'UNSTABLE'
85 85 echo "Caught: ${exc}"
86 86 }
87 87 }
88 88 }
89 89 if (isUnix()) {
90 90 pytests['de'] = {
91 91 ws {
92 92 unstash name: 'kallithea'
93 93 withEnv(['LANG=de_DE.UTF-8',
94 94 'LANGUAGE=de',
95 95 'LC_ADDRESS=de_DE.UTF-8',
96 96 'LC_IDENTIFICATION=de_DE.UTF-8',
97 97 'LC_MEASUREMENT=de_DE.UTF-8',
98 98 'LC_MONETARY=de_DE.UTF-8',
99 99 'LC_NAME=de_DE.UTF-8',
100 100 'LC_NUMERIC=de_DE.UTF-8',
101 101 'LC_PAPER=de_DE.UTF-8',
102 102 'LC_TELEPHONE=de_DE.UTF-8',
103 103 'LC_TIME=de_DE.UTF-8',
104 104 ]) {
105 105 sh script: """$activatevirtualenv
106 106 py.test -p no:sugar --cov-config .coveragerc --junit-xml=pytest_de.xml --cov=kallithea --cov-report xml
107 107 """, returnStatus: true
108 108 }
109 109 sh 'sed --in-place "s/\\(classname=[\'\\"]\\)/\\1DE./g" pytest_de.xml'
110 110 archiveArtifacts 'pytest_de.xml'
111 111 junit 'pytest_de.xml'
112 112 }
113 113 }
114 114 pytests['mysql'] = {
115 115 ws {
116 116 unstash name: 'kallithea'
117 117 sh """$activatevirtualenv
118 118 pip install --upgrade MySQL-python
119 119 """
120 120 withEnv(['TEST_DB=mysql://kallithea:kallithea@jenkins_mysql/kallithea_test?charset=utf8']) {
121 121 if (isUnix()) {
122 122 sh script: """$activatevirtualenv
123 123 py.test -p no:sugar --cov-config .coveragerc --junit-xml=pytest_mysql.xml --cov=kallithea --cov-report xml
124 124 """, returnStatus: true
125 125 } else {
126 126 bat script: """$activatevirtualenv
127 127 py.test -p no:sugar --cov-config .coveragerc --junit-xml=pytest_mysql.xml --cov=kallithea --cov-report xml
128 128 """, returnStatus: true
129 129 }
130 130 }
131 131 sh 'sed --in-place "s/\\(classname=[\'\\"]\\)/\\1MYSQL./g" pytest_mysql.xml'
132 132 archiveArtifacts 'pytest_mysql.xml'
133 133 junit 'pytest_mysql.xml'
134 134 }
135 135 }
136 136 pytests['postgresql'] = {
137 137 ws {
138 138 unstash name: 'kallithea'
139 139 sh """$activatevirtualenv
140 140 pip install --upgrade psycopg2
141 141 """
142 142 withEnv(['TEST_DB=postgresql://kallithea:kallithea@jenkins_postgresql/kallithea_test']) {
143 143 if (isUnix()) {
144 144 sh script: """$activatevirtualenv
145 145 py.test -p no:sugar --cov-config .coveragerc --junit-xml=pytest_postgresql.xml --cov=kallithea --cov-report xml
146 146 """, returnStatus: true
147 147 } else {
148 148 bat script: """$activatevirtualenv
149 149 py.test -p no:sugar --cov-config .coveragerc --junit-xml=pytest_postgresql.xml --cov=kallithea --cov-report xml
150 150 """, returnStatus: true
151 151 }
152 152 }
153 153 sh 'sed --in-place "s/\\(classname=[\'\\"]\\)/\\1POSTGRES./g" pytest_postgresql.xml'
154 154 archiveArtifacts 'pytest_postgresql.xml'
155 155 junit 'pytest_postgresql.xml'
156 156 }
157 157 }
158 158 }
159 159 stage('Tests') {
160 160 parallel pytests
161 161 }
162 162 }
General Comments 0
You need to be logged in to leave comments. Login now