-
Notifications
You must be signed in to change notification settings - Fork 219
/
build.gradle
129 lines (123 loc) · 6.04 KB
/
build.gradle
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
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
/*
* See the NOTICE file distributed with this work for additional
* information regarding copyright ownership.
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
import org.apache.tools.ant.filters.ReplaceTokens
// Run this Gradle build with 'gradle' to generate the various versions and variants from the template directory.
// Whenever a new version of XWiki is out, update this file to update the token values, run gradle and commit the
// result.
//
// Note: As a consequence only update the template files and never the generated files!
defaultTasks 'generate'
def variants = ['mysql-tomcat', 'mariadb-tomcat', 'postgres-tomcat']
// Notes:
// - To compute the XWiki sha256, download the XWiki WAR from
// http://nexus.xwiki.org/nexus/content/groups/public/org/xwiki/platform/xwiki-platform-distribution-war, and issue:
// - Unix: sha256sum <binary name>
// - Mac: shasum --algorithm 256 <binary name>
// - To compute the mysql JDBC sha256, get the JAR at https://search.maven.org/artifact/com.mysql/mysql-connector-j and
// do the same as for the XWiki sha256.
// - To compute the MariaDB JDBC sha256, get the JAR at
// https://search.maven.org/artifact/org.mariadb.jdbc/mariadb-java-client and do the same as for the XWiki sha256.
// - To compute the Postgres JDBC sha256, get the JAR at
// https://search.maven.org/artifact/org.postgresql/postgresql and do the same as for the XWiki sha256.
// - Use the JDBC driver versions found in the XWiki POM for the specified versions:
// - mysql: https://github.com/xwiki/xwiki-platform/blob/master/pom.xml#L110 (link for master)
// - mariadb: https://github.com/xwiki/xwiki-platform/blob/master/pom.xml#L113 (link for master)
// - postgresql: https://github.com/xwiki/xwiki-platform/blob/master/pom.xml#L119 (link for master)
def tokens = [
'16': [
xwikiVersion: '16.9.0',
xwikiSha256: '9a66ce45c49863c0e8cbdae0fb5e5dfab317a1c0c3a45e7c33fb61b09b39fe23',
mysqlJDBCVersion: '9.1.0',
mysqlJDBCSha256: '8776e2ebc46072c9a47ea59d98298c4273bd9f16a7b26b5dfa4744535aa26c62',
mariadbJDBCVersion: '3.5.0',
mariadbJDBCSha256: '10b777716f1597aed6612abf1985987089fa5446c3bdea2fa4f48a326929f3f5',
postgresJDBCVersion: '42.7.4',
postgresJDBCSha256: '188976721ead8e8627eb6d8389d500dccc0c9bebd885268a3047180274a6031e'
],
'16.4': [
xwikiVersion: '16.4.5',
xwikiSha256: '363ef72ced7e9867079b38420a72e45d176c9a01208021838de202360cea58fe',
mysqlJDBCVersion: '8.4.0',
mysqlJDBCSha256: 'd77962877d010777cff997015da90ee689f0f4bb76848340e1488f2b83332af5',
mariadbJDBCVersion: '3.5.0',
mariadbJDBCSha256: '10b777716f1597aed6612abf1985987089fa5446c3bdea2fa4f48a326929f3f5',
postgresJDBCVersion: '42.7.4',
postgresJDBCSha256: '188976721ead8e8627eb6d8389d500dccc0c9bebd885268a3047180274a6031e'
],
'15': [
xwikiVersion: '15.10.13',
xwikiSha256: 'bb84c62fbe5d6e1ab4b4f3fae25665f98d0e36186f626222a578c608c9401f70',
mysqlJDBCVersion: '8.4.0',
mysqlJDBCSha256: 'd77962877d010777cff997015da90ee689f0f4bb76848340e1488f2b83332af5',
mariadbJDBCVersion: '3.5.0',
mariadbJDBCSha256: '10b777716f1597aed6612abf1985987089fa5446c3bdea2fa4f48a326929f3f5',
postgresJDBCVersion: '42.7.4',
postgresJDBCSha256: '188976721ead8e8627eb6d8389d500dccc0c9bebd885268a3047180274a6031e'
],
'14': [
xwikiVersion: '14.10.21',
xwikiSha256: '72a634e2aeb085878dce2629a3e5e6136887d0c22712dcee5a284be8143135ea',
mysqlJDBCVersion: '8.4.0',
mysqlJDBCSha256: 'd77962877d010777cff997015da90ee689f0f4bb76848340e1488f2b83332af5',
mariadbJDBCVersion: '3.4.1',
mariadbJDBCSha256: 'f60e4b282f1f4bdb74f0a26436ba7078a5e480b6f6702f6a7b45d9ba5e604a24',
postgresJDBCVersion: '42.7.4',
postgresJDBCSha256: '188976721ead8e8627eb6d8389d500dccc0c9bebd885268a3047180274a6031e'
]
]
task generate() {
doLast {
// Copy the template for all versions and variants
tokens.keySet().each() { version ->
variants.each() { variant ->
// Extract the db type and add it as a token
def (db, servlet) = variant.tokenize('-')
tokens[version].'db' = db
// Copy common template files, evaluating groovy in them
copy {
from 'template'
into "${version}/${variant}"
include '.env'
include 'Dockerfile'
include 'docker-compose.yml'
include 'xwiki/*'
expand(tokens[version])
filteringCharset = 'UTF-8'
}
// Copy DB-specific template files, evaluating groovy in them
copy {
from 'template'
into "${version}/${variant}"
include "${db}/*"
expand(tokens[version])
filteringCharset = 'UTF-8'
}
// Copy Servlet-specific template files, evaluating groovy in them
copy {
from 'template'
into "${version}/${variant}"
include "${servlet}/*"
expand(tokens[version])
filteringCharset = 'UTF-8'
}
}
}
}
}