Mercurial > kallithea
annotate Jenkinsfile @ 8582:35af0bd45bf3
diff: drop per file ignore-whitespace and context - it didn't work and had conceptual issue (Issue #344)
Diffs are currently generated at the low level as one big diff between two vcs
resisions, provided global values for diff context size and flag for ignoring
whitespace. All files use the same flags. There is no way to actually compute
the full diff using these use per file flags, and no simple and efficient way
to add it.
The best option is thus to drop the failed attempt at making it per file, and
just rely on the simple global flags in the URL.
The links for changing whitespace and context is sometimes shown for the whole
"page", and sometimes next to the diff for one file. For now, keep showing the
link in these places, but make sure it navigates back to the FID of the section
where the link was clicked.
The implementation is completely rewritten and moved to a more appropriate
location in helpers.
With a more clean implementation, we also consistently use the simple getters
to extract values from the URL.
author | Mads Kiilerich <mads@kiilerich.com> |
---|---|
date | Sun, 21 Jun 2020 23:20:12 +0200 |
parents | 89e9aef9b983 |
children | 0a9ddb8cd8c1 |
rev | line source |
---|---|
6583
8a60eb2b7603
Jenkinsfile: run each py.test on a separate executor
domruf <dominikruf@gmail.com>
parents:
6552
diff
changeset
|
1 def createvirtualenv = '' |
8a60eb2b7603
Jenkinsfile: run each py.test on a separate executor
domruf <dominikruf@gmail.com>
parents:
6552
diff
changeset
|
2 def activatevirtualenv = '' |
8a60eb2b7603
Jenkinsfile: run each py.test on a separate executor
domruf <dominikruf@gmail.com>
parents:
6552
diff
changeset
|
3 |
6536
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
4 node { |
6925
58713c2ebfff
jenkinsfile: only keep the artifacts (test result xml files) of the last 10 builds
domruf <dominikruf@gmail.com>
parents:
6924
diff
changeset
|
5 properties([[$class: 'BuildDiscarderProperty', |
58713c2ebfff
jenkinsfile: only keep the artifacts (test result xml files) of the last 10 builds
domruf <dominikruf@gmail.com>
parents:
6924
diff
changeset
|
6 strategy: [$class: 'LogRotator', |
58713c2ebfff
jenkinsfile: only keep the artifacts (test result xml files) of the last 10 builds
domruf <dominikruf@gmail.com>
parents:
6924
diff
changeset
|
7 artifactDaysToKeepStr: '', |
58713c2ebfff
jenkinsfile: only keep the artifacts (test result xml files) of the last 10 builds
domruf <dominikruf@gmail.com>
parents:
6924
diff
changeset
|
8 artifactNumToKeepStr: '10', |
58713c2ebfff
jenkinsfile: only keep the artifacts (test result xml files) of the last 10 builds
domruf <dominikruf@gmail.com>
parents:
6924
diff
changeset
|
9 daysToKeepStr: '', |
58713c2ebfff
jenkinsfile: only keep the artifacts (test result xml files) of the last 10 builds
domruf <dominikruf@gmail.com>
parents:
6924
diff
changeset
|
10 numToKeepStr: '']]]); |
6536
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
11 if (isUnix()) { |
8193
89e9aef9b983
py3: use "python3 -m venv" instead of virtualenv package
Mads Kiilerich <mads@kiilerich.com>
parents:
7841
diff
changeset
|
12 createvirtualenv = 'rm -r $JENKINS_HOME/venv/$JOB_NAME || true && python3 -m venv $JENKINS_HOME/venv/$JOB_NAME' |
6550
ad275fcc5a90
jenkinsfile: create venv in special folder instead of jenkins workspace
domruf <dominikruf@gmail.com>
parents:
6549
diff
changeset
|
13 activatevirtualenv = '. $JENKINS_HOME/venv/$JOB_NAME/bin/activate' |
6536
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
14 } else { |
8193
89e9aef9b983
py3: use "python3 -m venv" instead of virtualenv package
Mads Kiilerich <mads@kiilerich.com>
parents:
7841
diff
changeset
|
15 createvirtualenv = 'rmdir /s /q %JENKINS_HOME%\\venv\\%JOB_NAME% || true && python3 -m venv %JENKINS_HOME%\\venv\\%JOB_NAME%' |
6550
ad275fcc5a90
jenkinsfile: create venv in special folder instead of jenkins workspace
domruf <dominikruf@gmail.com>
parents:
6549
diff
changeset
|
16 activatevirtualenv = 'call %JENKINS_HOME%\\venv\\%JOB_NAME%\\Scripts\\activate.bat' |
6536
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
17 } |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
18 |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
19 stage('checkout') { |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
20 checkout scm |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
21 if (isUnix()) { |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
22 sh 'hg --config extensions.purge= purge --all' |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
23 } else { |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
24 bat 'hg --config extensions.purge= purge --all' |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
25 } |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
26 } |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
27 stage('virtual env') { |
6550
ad275fcc5a90
jenkinsfile: create venv in special folder instead of jenkins workspace
domruf <dominikruf@gmail.com>
parents:
6549
diff
changeset
|
28 def virtualenvscript = """$createvirtualenv |
6536
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
29 $activatevirtualenv |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
30 python -m pip install --upgrade pip |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
31 pip install --upgrade setuptools |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
32 pip install --upgrade pylint |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
33 pip install --upgrade pytest-cov |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
34 """ |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
35 if (isUnix()) { |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
36 virtualenvscript += """ |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
37 pip install --upgrade python-ldap |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
38 pip install --upgrade python-pam |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
39 """ |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
40 sh virtualenvscript |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
41 } else { |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
42 bat virtualenvscript |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
43 } |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
44 } |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
45 stage('setup') { |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
46 def virtualenvscript = """$activatevirtualenv |
7841
d9e37f7fd35b
docs: always use dev_requirements.txt together with main version constraints in setup.py
Mads Kiilerich <mads@kiilerich.com>
parents:
6925
diff
changeset
|
47 pip install --upgrade -e . -r dev_requirements.txt |
6536
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
48 python setup.py compile_catalog |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
49 """ |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
50 if (isUnix()) { |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
51 sh virtualenvscript |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
52 } else { |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
53 bat virtualenvscript |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
54 } |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
55 stash name: 'kallithea', useDefaultExcludes: false |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
56 } |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
57 stage('pylint') { |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
58 sh script: """$activatevirtualenv |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
59 pylint -j 0 --disable=C -f parseable kallithea > pylint.out |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
60 """, returnStatus: true |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
61 archiveArtifacts 'pylint.out' |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
62 try { |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
63 step([$class: 'WarningsPublisher', canComputeNew: false, canResolveRelativePaths: false, defaultEncoding: '', excludePattern: '', healthy: '', includePattern: '', messagesPattern: '', parserConfigurations: [[parserName: 'PyLint', pattern: 'pylint.out']], unHealthy: '']) |
6551
bc1b11a5d548
jenkinsfile: catch the correct exception if jenkins plugin is not available
domruf <dominikruf@gmail.com>
parents:
6550
diff
changeset
|
64 } catch (java.lang.IllegalArgumentException exc) { |
6536
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
65 echo "You need to install the 'Warnings Plug-in' to display the pylint report." |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
66 currentBuild.result = 'UNSTABLE' |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
67 echo "Caught: ${exc}" |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
68 } |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
69 } |
6583
8a60eb2b7603
Jenkinsfile: run each py.test on a separate executor
domruf <dominikruf@gmail.com>
parents:
6552
diff
changeset
|
70 } |
8a60eb2b7603
Jenkinsfile: run each py.test on a separate executor
domruf <dominikruf@gmail.com>
parents:
6552
diff
changeset
|
71 |
8a60eb2b7603
Jenkinsfile: run each py.test on a separate executor
domruf <dominikruf@gmail.com>
parents:
6552
diff
changeset
|
72 def pytests = [:] |
8a60eb2b7603
Jenkinsfile: run each py.test on a separate executor
domruf <dominikruf@gmail.com>
parents:
6552
diff
changeset
|
73 pytests['sqlite'] = { |
8a60eb2b7603
Jenkinsfile: run each py.test on a separate executor
domruf <dominikruf@gmail.com>
parents:
6552
diff
changeset
|
74 node { |
6536
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
75 ws { |
6552
15a12f2a47b4
jenkinsfile: delete all old files in the workspace
domruf <dominikruf@gmail.com>
parents:
6551
diff
changeset
|
76 deleteDir() |
6536
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
77 unstash name: 'kallithea' |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
78 if (isUnix()) { |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
79 sh script: """$activatevirtualenv |
6924
0acb46763886
jenkinsfile: combine coverage files from different DB runs
domruf <dominikruf@gmail.com>
parents:
6583
diff
changeset
|
80 py.test -p no:sugar --cov-config .coveragerc --junit-xml=pytest_sqlite.xml --cov=kallithea |
6536
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
81 """, returnStatus: true |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
82 } else { |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
83 bat script: """$activatevirtualenv |
6924
0acb46763886
jenkinsfile: combine coverage files from different DB runs
domruf <dominikruf@gmail.com>
parents:
6583
diff
changeset
|
84 py.test -p no:sugar --cov-config .coveragerc --junit-xml=pytest_sqlite.xml --cov=kallithea |
6536
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
85 """, returnStatus: true |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
86 } |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
87 sh 'sed --in-place "s/\\(classname=[\'\\"]\\)/\\1SQLITE./g" pytest_sqlite.xml' |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
88 archiveArtifacts 'pytest_sqlite.xml' |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
89 junit 'pytest_sqlite.xml' |
6924
0acb46763886
jenkinsfile: combine coverage files from different DB runs
domruf <dominikruf@gmail.com>
parents:
6583
diff
changeset
|
90 writeFile(file: '.coverage.sqlite', text: readFile('.coverage')) |
0acb46763886
jenkinsfile: combine coverage files from different DB runs
domruf <dominikruf@gmail.com>
parents:
6583
diff
changeset
|
91 stash name: 'coverage.sqlite', includes: '.coverage.sqlite' |
6536
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
92 } |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
93 } |
6583
8a60eb2b7603
Jenkinsfile: run each py.test on a separate executor
domruf <dominikruf@gmail.com>
parents:
6552
diff
changeset
|
94 } |
8a60eb2b7603
Jenkinsfile: run each py.test on a separate executor
domruf <dominikruf@gmail.com>
parents:
6552
diff
changeset
|
95 |
8a60eb2b7603
Jenkinsfile: run each py.test on a separate executor
domruf <dominikruf@gmail.com>
parents:
6552
diff
changeset
|
96 pytests['de'] = { |
8a60eb2b7603
Jenkinsfile: run each py.test on a separate executor
domruf <dominikruf@gmail.com>
parents:
6552
diff
changeset
|
97 node { |
8a60eb2b7603
Jenkinsfile: run each py.test on a separate executor
domruf <dominikruf@gmail.com>
parents:
6552
diff
changeset
|
98 if (isUnix()) { |
6536
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
99 ws { |
6552
15a12f2a47b4
jenkinsfile: delete all old files in the workspace
domruf <dominikruf@gmail.com>
parents:
6551
diff
changeset
|
100 deleteDir() |
6536
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
101 unstash name: 'kallithea' |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
102 withEnv(['LANG=de_DE.UTF-8', |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
103 'LANGUAGE=de', |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
104 'LC_ADDRESS=de_DE.UTF-8', |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
105 'LC_IDENTIFICATION=de_DE.UTF-8', |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
106 'LC_MEASUREMENT=de_DE.UTF-8', |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
107 'LC_MONETARY=de_DE.UTF-8', |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
108 'LC_NAME=de_DE.UTF-8', |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
109 'LC_NUMERIC=de_DE.UTF-8', |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
110 'LC_PAPER=de_DE.UTF-8', |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
111 'LC_TELEPHONE=de_DE.UTF-8', |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
112 'LC_TIME=de_DE.UTF-8', |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
113 ]) { |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
114 sh script: """$activatevirtualenv |
6924
0acb46763886
jenkinsfile: combine coverage files from different DB runs
domruf <dominikruf@gmail.com>
parents:
6583
diff
changeset
|
115 py.test -p no:sugar --cov-config .coveragerc --junit-xml=pytest_de.xml --cov=kallithea |
6536
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
116 """, returnStatus: true |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
117 } |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
118 sh 'sed --in-place "s/\\(classname=[\'\\"]\\)/\\1DE./g" pytest_de.xml' |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
119 archiveArtifacts 'pytest_de.xml' |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
120 junit 'pytest_de.xml' |
6924
0acb46763886
jenkinsfile: combine coverage files from different DB runs
domruf <dominikruf@gmail.com>
parents:
6583
diff
changeset
|
121 writeFile(file: '.coverage.de', text: readFile('.coverage')) |
0acb46763886
jenkinsfile: combine coverage files from different DB runs
domruf <dominikruf@gmail.com>
parents:
6583
diff
changeset
|
122 stash name: 'coverage.de', includes: '.coverage.de' |
6536
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
123 } |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
124 } |
6583
8a60eb2b7603
Jenkinsfile: run each py.test on a separate executor
domruf <dominikruf@gmail.com>
parents:
6552
diff
changeset
|
125 } |
8a60eb2b7603
Jenkinsfile: run each py.test on a separate executor
domruf <dominikruf@gmail.com>
parents:
6552
diff
changeset
|
126 } |
8a60eb2b7603
Jenkinsfile: run each py.test on a separate executor
domruf <dominikruf@gmail.com>
parents:
6552
diff
changeset
|
127 pytests['mysql'] = { |
8a60eb2b7603
Jenkinsfile: run each py.test on a separate executor
domruf <dominikruf@gmail.com>
parents:
6552
diff
changeset
|
128 node { |
8a60eb2b7603
Jenkinsfile: run each py.test on a separate executor
domruf <dominikruf@gmail.com>
parents:
6552
diff
changeset
|
129 if (isUnix()) { |
6536
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
130 ws { |
6552
15a12f2a47b4
jenkinsfile: delete all old files in the workspace
domruf <dominikruf@gmail.com>
parents:
6551
diff
changeset
|
131 deleteDir() |
6536
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
132 unstash name: 'kallithea' |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
133 sh """$activatevirtualenv |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
134 pip install --upgrade MySQL-python |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
135 """ |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
136 withEnv(['TEST_DB=mysql://kallithea:kallithea@jenkins_mysql/kallithea_test?charset=utf8']) { |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
137 if (isUnix()) { |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
138 sh script: """$activatevirtualenv |
6924
0acb46763886
jenkinsfile: combine coverage files from different DB runs
domruf <dominikruf@gmail.com>
parents:
6583
diff
changeset
|
139 py.test -p no:sugar --cov-config .coveragerc --junit-xml=pytest_mysql.xml --cov=kallithea |
6536
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
140 """, returnStatus: true |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
141 } else { |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
142 bat script: """$activatevirtualenv |
6924
0acb46763886
jenkinsfile: combine coverage files from different DB runs
domruf <dominikruf@gmail.com>
parents:
6583
diff
changeset
|
143 py.test -p no:sugar --cov-config .coveragerc --junit-xml=pytest_mysql.xml --cov=kallithea |
6536
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
144 """, returnStatus: true |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
145 } |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
146 } |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
147 sh 'sed --in-place "s/\\(classname=[\'\\"]\\)/\\1MYSQL./g" pytest_mysql.xml' |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
148 archiveArtifacts 'pytest_mysql.xml' |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
149 junit 'pytest_mysql.xml' |
6924
0acb46763886
jenkinsfile: combine coverage files from different DB runs
domruf <dominikruf@gmail.com>
parents:
6583
diff
changeset
|
150 writeFile(file: '.coverage.mysql', text: readFile('.coverage')) |
0acb46763886
jenkinsfile: combine coverage files from different DB runs
domruf <dominikruf@gmail.com>
parents:
6583
diff
changeset
|
151 stash name: 'coverage.mysql', includes: '.coverage.mysql' |
6536
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
152 } |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
153 } |
6583
8a60eb2b7603
Jenkinsfile: run each py.test on a separate executor
domruf <dominikruf@gmail.com>
parents:
6552
diff
changeset
|
154 } |
8a60eb2b7603
Jenkinsfile: run each py.test on a separate executor
domruf <dominikruf@gmail.com>
parents:
6552
diff
changeset
|
155 } |
8a60eb2b7603
Jenkinsfile: run each py.test on a separate executor
domruf <dominikruf@gmail.com>
parents:
6552
diff
changeset
|
156 pytests['postgresql'] = { |
8a60eb2b7603
Jenkinsfile: run each py.test on a separate executor
domruf <dominikruf@gmail.com>
parents:
6552
diff
changeset
|
157 node { |
8a60eb2b7603
Jenkinsfile: run each py.test on a separate executor
domruf <dominikruf@gmail.com>
parents:
6552
diff
changeset
|
158 if (isUnix()) { |
6536
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
159 ws { |
6552
15a12f2a47b4
jenkinsfile: delete all old files in the workspace
domruf <dominikruf@gmail.com>
parents:
6551
diff
changeset
|
160 deleteDir() |
6536
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
161 unstash name: 'kallithea' |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
162 sh """$activatevirtualenv |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
163 pip install --upgrade psycopg2 |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
164 """ |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
165 withEnv(['TEST_DB=postgresql://kallithea:kallithea@jenkins_postgresql/kallithea_test']) { |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
166 if (isUnix()) { |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
167 sh script: """$activatevirtualenv |
6924
0acb46763886
jenkinsfile: combine coverage files from different DB runs
domruf <dominikruf@gmail.com>
parents:
6583
diff
changeset
|
168 py.test -p no:sugar --cov-config .coveragerc --junit-xml=pytest_postgresql.xml --cov=kallithea |
6536
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
169 """, returnStatus: true |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
170 } else { |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
171 bat script: """$activatevirtualenv |
6924
0acb46763886
jenkinsfile: combine coverage files from different DB runs
domruf <dominikruf@gmail.com>
parents:
6583
diff
changeset
|
172 py.test -p no:sugar --cov-config .coveragerc --junit-xml=pytest_postgresql.xml --cov=kallithea |
6536
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
173 """, returnStatus: true |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
174 } |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
175 } |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
176 sh 'sed --in-place "s/\\(classname=[\'\\"]\\)/\\1POSTGRES./g" pytest_postgresql.xml' |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
177 archiveArtifacts 'pytest_postgresql.xml' |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
178 junit 'pytest_postgresql.xml' |
6924
0acb46763886
jenkinsfile: combine coverage files from different DB runs
domruf <dominikruf@gmail.com>
parents:
6583
diff
changeset
|
179 writeFile(file: '.coverage.postgresql', text: readFile('.coverage')) |
0acb46763886
jenkinsfile: combine coverage files from different DB runs
domruf <dominikruf@gmail.com>
parents:
6583
diff
changeset
|
180 stash name: 'coverage.postgresql', includes: '.coverage.postgresql' |
6536
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
181 } |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
182 } |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
183 } |
8d788789b38a
tests: add Jenkinsfile for automatic creation of Jenkins projects for testing Kallithea itself
domruf <dominikruf@gmail.com>
parents:
diff
changeset
|
184 } |
6583
8a60eb2b7603
Jenkinsfile: run each py.test on a separate executor
domruf <dominikruf@gmail.com>
parents:
6552
diff
changeset
|
185 stage('Tests') { |
8a60eb2b7603
Jenkinsfile: run each py.test on a separate executor
domruf <dominikruf@gmail.com>
parents:
6552
diff
changeset
|
186 parallel pytests |
6924
0acb46763886
jenkinsfile: combine coverage files from different DB runs
domruf <dominikruf@gmail.com>
parents:
6583
diff
changeset
|
187 node { |
0acb46763886
jenkinsfile: combine coverage files from different DB runs
domruf <dominikruf@gmail.com>
parents:
6583
diff
changeset
|
188 unstash 'coverage.sqlite' |
0acb46763886
jenkinsfile: combine coverage files from different DB runs
domruf <dominikruf@gmail.com>
parents:
6583
diff
changeset
|
189 unstash 'coverage.de' |
0acb46763886
jenkinsfile: combine coverage files from different DB runs
domruf <dominikruf@gmail.com>
parents:
6583
diff
changeset
|
190 unstash 'coverage.mysql' |
0acb46763886
jenkinsfile: combine coverage files from different DB runs
domruf <dominikruf@gmail.com>
parents:
6583
diff
changeset
|
191 unstash 'coverage.postgresql' |
0acb46763886
jenkinsfile: combine coverage files from different DB runs
domruf <dominikruf@gmail.com>
parents:
6583
diff
changeset
|
192 if (isUnix()) { |
0acb46763886
jenkinsfile: combine coverage files from different DB runs
domruf <dominikruf@gmail.com>
parents:
6583
diff
changeset
|
193 sh script: """$activatevirtualenv |
0acb46763886
jenkinsfile: combine coverage files from different DB runs
domruf <dominikruf@gmail.com>
parents:
6583
diff
changeset
|
194 coverage combine .coverage.sqlite .coverage.de .coverage.mysql .coverage.postgresql |
0acb46763886
jenkinsfile: combine coverage files from different DB runs
domruf <dominikruf@gmail.com>
parents:
6583
diff
changeset
|
195 coverage xml |
0acb46763886
jenkinsfile: combine coverage files from different DB runs
domruf <dominikruf@gmail.com>
parents:
6583
diff
changeset
|
196 """, returnStatus: true |
0acb46763886
jenkinsfile: combine coverage files from different DB runs
domruf <dominikruf@gmail.com>
parents:
6583
diff
changeset
|
197 } else { |
0acb46763886
jenkinsfile: combine coverage files from different DB runs
domruf <dominikruf@gmail.com>
parents:
6583
diff
changeset
|
198 bat script: """$activatevirtualenv |
0acb46763886
jenkinsfile: combine coverage files from different DB runs
domruf <dominikruf@gmail.com>
parents:
6583
diff
changeset
|
199 coverage combine .coverage.sqlite .coverage.de .coverage.mysql .coverage.postgresql |
0acb46763886
jenkinsfile: combine coverage files from different DB runs
domruf <dominikruf@gmail.com>
parents:
6583
diff
changeset
|
200 coverage xml |
0acb46763886
jenkinsfile: combine coverage files from different DB runs
domruf <dominikruf@gmail.com>
parents:
6583
diff
changeset
|
201 """, returnStatus: true |
0acb46763886
jenkinsfile: combine coverage files from different DB runs
domruf <dominikruf@gmail.com>
parents:
6583
diff
changeset
|
202 } |
0acb46763886
jenkinsfile: combine coverage files from different DB runs
domruf <dominikruf@gmail.com>
parents:
6583
diff
changeset
|
203 try { |
0acb46763886
jenkinsfile: combine coverage files from different DB runs
domruf <dominikruf@gmail.com>
parents:
6583
diff
changeset
|
204 step([$class: 'CoberturaPublisher', autoUpdateHealth: false, autoUpdateStability: false, coberturaReportFile: 'coverage.xml', failNoReports: false, failUnhealthy: false, failUnstable: false, maxNumberOfBuilds: 0, onlyStable: false, zoomCoverageChart: false]) |
0acb46763886
jenkinsfile: combine coverage files from different DB runs
domruf <dominikruf@gmail.com>
parents:
6583
diff
changeset
|
205 } catch (java.lang.IllegalArgumentException exc) { |
0acb46763886
jenkinsfile: combine coverage files from different DB runs
domruf <dominikruf@gmail.com>
parents:
6583
diff
changeset
|
206 echo "You need to install the pipeline compatible 'CoberturaPublisher Plug-in' to display the coverage report." |
0acb46763886
jenkinsfile: combine coverage files from different DB runs
domruf <dominikruf@gmail.com>
parents:
6583
diff
changeset
|
207 currentBuild.result = 'UNSTABLE' |
0acb46763886
jenkinsfile: combine coverage files from different DB runs
domruf <dominikruf@gmail.com>
parents:
6583
diff
changeset
|
208 echo "Caught: ${exc}" |
0acb46763886
jenkinsfile: combine coverage files from different DB runs
domruf <dominikruf@gmail.com>
parents:
6583
diff
changeset
|
209 } |
0acb46763886
jenkinsfile: combine coverage files from different DB runs
domruf <dominikruf@gmail.com>
parents:
6583
diff
changeset
|
210 } |
6583
8a60eb2b7603
Jenkinsfile: run each py.test on a separate executor
domruf <dominikruf@gmail.com>
parents:
6552
diff
changeset
|
211 } |