Skip to content

Commit bfc5cff

Browse files
authored
Merge pull request #1 from HistoryAtState/feat/enhance-build-for-replication
Enhance build file: Add ant tasks for creating 2 xars in dev and prod and for handling the replication triggers
2 parents 17de838 + ef21f3c commit bfc5cff

File tree

7 files changed

+193
-34
lines changed

7 files changed

+193
-34
lines changed

README.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,20 @@ A collection of utilities for preparing releases:
99
## Dependencies
1010

1111
- Assumes [HistoryAtState/hsg-project](https://github.com/HistoryAtState/hsg-project) is installed
12+
13+
## Build
14+
15+
1. Single `xar` file: The `collection.xconf` will only contain the index, not any triggers!
16+
```shell
17+
ant
18+
```
19+
20+
2. DEV environment: The replication triggers for the producer server are enabled in `collection.xconf` and point to the dev server's replication service IP.
21+
```shell
22+
ant xar-dev
23+
```
24+
25+
3. PROD environment: Same as in 2. but for PROD destination
26+
```shell
27+
ant xar-prod
28+
```

build.properties.xml

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<root>
3+
<app>
4+
<name>release</name>
5+
<url>http://history.state.gov/ns/apps/release</url>
6+
<title>Release</title>
7+
<version>0.4</version>
8+
</app>
9+
<trigger>
10+
<provider-url>
11+
<dev>failover:tcp://10.0.1.114:61616</dev>
12+
<prod>failover:tcp://10.0.1.131:61616</prod>
13+
</provider-url>
14+
<destination>
15+
<dev>dynamicTopics/hsg-replication</dev>
16+
<prod>dynamicTopics/hsg-replication</prod>
17+
</destination>
18+
</trigger>
19+
</root>

build.xml

Lines changed: 128 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,136 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<project default="xar" name="people">
3-
<xmlproperty file="expath-pkg.xml"/>
4-
<property name="project.version" value="${package(version)}"/>
5-
<property name="project.app" value="${package(abbrev)}"/>
3+
<xmlproperty file="build.properties.xml" semanticAttributes="true" keepRoot="false"/>
64
<property name="build.dir" value="build"/>
7-
<target name="xar">
5+
6+
<target name="clean">
7+
<echo message="Deleting xar files..."/>
8+
<delete dir="${build.dir}"/>
9+
</target>
10+
11+
<target name="prepare">
12+
<echo message="Creating build folder..."/>
813
<mkdir dir="${build.dir}"/>
9-
<zip basedir="." destfile="${build.dir}/${project.app}-${project.version}.xar">
10-
<exclude name="${build.dir}/*"/>
11-
<exclude name=".existdb.json"/>
12-
</zip>
1314
</target>
14-
<target name="clean">
15-
<delete quiet="true">
16-
<fileset dir="${build.dir}">
17-
<include name="*.xar"/>
15+
16+
<target name="copy">
17+
<echo message="Copying the files to the build folder..."/>
18+
<copy todir="${build.dir}/${app.name}-${app.version}">
19+
<fileset dir="${basedir}">
20+
<exclude name="${build.dir}/**"/>
1821
</fileset>
19-
</delete>
22+
</copy>
23+
</target>
24+
25+
<target name="apply-filters-to-expath-pkg">
26+
<echo message="Apply values to expath-pkg.xml..."/>
27+
<copy todir="${build.dir}/${app.name}-${app.version}" overwrite="true" verbose="true">
28+
<fileset file="expath-pkg.xml.tmpl"/>
29+
<filterset>
30+
<filter token="name" value="${app.name}"/>
31+
<filter token="version" value="${app.version}"/>
32+
<filter token="url" value="${app.url}"/>
33+
<filter token="title" value="${app.title}"/>
34+
</filterset>
35+
<globmapper from="*.tmpl" to="*"/>
36+
</copy>
37+
</target>
38+
39+
<target name="apply-filters-to-producer-dev">
40+
<echo message="Apply DEV values to collection.xconf..."/>
41+
<copy todir="${build.dir}/${app.name}-${app.version}" overwrite="true" verbose="true">
42+
<fileset file="collection.xconf.tmpl"/>
43+
<fileset file="expath-pkg.xml.tmpl"/>
44+
<filterset>
45+
<filter token="provider-url" value="${trigger.provider-url.dev}"/>
46+
<filter token="destination" value="${trigger.destination.dev}"/>
47+
<filter token="name" value="${app.name}"/>
48+
<filter token="version" value="${app.version}"/>
49+
<filter token="url" value="${app.url}"/>
50+
<filter token="title" value="${app.title}"/>
51+
</filterset>
52+
<globmapper from="*.tmpl" to="*"/>
53+
</copy>
54+
</target>
55+
56+
<target name="apply-filters-to-producer-prod">
57+
<echo message="Apply PROD values to collection.xconf..."/>
58+
<copy todir="${build.dir}/${app.name}-${app.version}" overwrite="true" verbose="true">
59+
<fileset file="collection.xconf.tmpl"/>
60+
<fileset file="expath-pkg.xml.tmpl"/>
61+
<filterset>
62+
<filter token="provider-url" value="${trigger.provider-url.prod}"/>
63+
<filter token="destination" value="${trigger.destination.prod}"/>
64+
<filter token="name" value="${app.name}"/>
65+
<filter token="version" value="${app.version}"/>
66+
<filter token="url" value="${app.url}"/>
67+
<filter token="title" value="${app.title}"/>
68+
</filterset>
69+
<globmapper from="*.tmpl" to="*"/>
70+
</copy>
71+
</target>
72+
73+
<target name="xar-dev" depends="clean,prepare" description="create xar files for DEV environment">
74+
<antcall target="copy"/>
75+
<antcall target="apply-filters-to-expath-pkg"/>
76+
<echo message="------------------------------------------------------------"/>
77+
<echo message="Creating DEV 'consumer' xar file..."/>
78+
<echo message="------------------------------------------------------------"/>
79+
80+
<zip basedir="${build.dir}/${app.name}-${app.version}" destfile="${build.dir}/${app.name}-${app.version}-consumer-dev.xar">
81+
<exclude name="${build.dir}/**"/>
82+
<exclude name="**/*.tmpl"/>
83+
</zip>
84+
85+
<antcall target="apply-filters-to-producer-dev"/>
86+
87+
<echo message="------------------------------------------------------------"/>
88+
<echo message="Creating DEV 'producer' xar file containing triggers..."/>
89+
<echo message="------------------------------------------------------------"/>
90+
91+
<zip basedir="${build.dir}/${app.name}-${app.version}" destfile="${build.dir}/${app.name}-${app.version}-producer-dev.xar">
92+
<exclude name="**/*.tmpl"/>
93+
</zip>
94+
<delete dir="${build.dir}/${app.name}-${app.version}"/>
95+
</target>
96+
97+
<target name="xar-prod" depends="clean,prepare" description="create xar files for PROD environment">
98+
<antcall target="copy"/>
99+
<antcall target="apply-filters-to-expath-pkg"/>
100+
101+
<echo message="------------------------------------------------------------"/>
102+
<echo message="Creating PROD 'consumer' xar file..."/>
103+
<echo message="------------------------------------------------------------"/>
104+
105+
<zip basedir="${build.dir}/${app.name}-${app.version}" destfile="${build.dir}/${app.name}-${app.version}-consumer.xar">
106+
<exclude name="${build.dir}/**"/>
107+
<exclude name="**/*.tmpl"/>
108+
</zip>
109+
110+
<antcall target="apply-filters-to-producer-prod"/>
111+
112+
<echo message="------------------------------------------------------------"/>
113+
<echo message="Creating PROD 'producer' xar file containing triggers..."/>
114+
<echo message="------------------------------------------------------------"/>
115+
116+
<zip basedir="${build.dir}/${app.name}-${app.version}" destfile="${build.dir}/${app.name}-${app.version}-producer.xar">
117+
<exclude name="${build.dir}/**"/>
118+
<exclude name="**/*.tmpl"/>
119+
</zip>
120+
<delete dir="${build.dir}/${app.name}-${app.version}"/>
121+
</target>
122+
123+
<target name="xar" depends="clean,prepare" description="create xar file">
124+
<antcall target="copy"/>
125+
<antcall target="apply-filters-to-expath-pkg"/>
126+
<echo message="------------------------------------------------------------"/>
127+
<echo message="Creating xar file..."/>
128+
<echo message="------------------------------------------------------------"/>
129+
130+
<zip basedir="${build.dir}/${app.name}-${app.version}" destfile="${build.dir}/${app.name}-${app.version}.xar">
131+
<exclude name="${build.dir}/**"/>
132+
<exclude name="**/*.tmpl"/>
133+
</zip>
134+
<delete dir="${build.dir}/${app.name}-${app.version}"/>
20135
</target>
21136
</project>

collection.xconf

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -11,19 +11,4 @@
1111
<create qname="name" type="xs:string"/>
1212
</range>
1313
</index>
14-
<!-- Replication -->
15-
<!--
16-
<triggers>
17-
<trigger class="org.exist.jms.replication.publish.ReplicationTrigger">
18-
19-
<parameter name="java.naming.factory.initial" value="org.apache.activemq.jndi.ActiveMQInitialContextFactory"/>
20-
21-
<parameter name="java.naming.provider.url" value="failover:(tcp://10.0.1.131:61616,tcp://10.0.2.236:61616)"/>
22-
23-
<parameter name="connection-factory" value="ConnectionFactory"/>
24-
25-
<parameter name="destination" value="dynamicTopics/hsg-replication"/>
26-
</trigger>
27-
</triggers>
28-
-->
29-
</collection>
14+
</collection>

collection.xconf.tmpl

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<collection xmlns="http://exist-db.org/collection-config/1.0">
3+
<index xmlns:xs="http://www.w3.org/2001/XMLSchema">
4+
<lucene>
5+
<!-- The standard analyzer will ignore stopwords like 'the', 'and' -->
6+
<analyzer class="org.apache.lucene.analysis.standard.StandardAnalyzer"/>
7+
<analyzer id="ws" class="org.apache.lucene.analysis.core.WhitespaceAnalyzer"/>
8+
<text qname="name"/>
9+
</lucene>
10+
<range>
11+
<create qname="name" type="xs:string"/>
12+
</range>
13+
</index>
14+
15+
<!-- Replication -->
16+
<triggers>
17+
<trigger class="org.exist.jms.replication.publish.ReplicationTrigger">
18+
<parameter name="java.naming.factory.initial" value="org.apache.activemq.jndi.ActiveMQInitialContextFactory"/>
19+
<parameter name="java.naming.provider.url" value="@provider-url@"/>
20+
<parameter name="connection-factory" value="ConnectionFactory"/>
21+
<parameter name="destination" value="@destination@"/>
22+
</trigger>
23+
</triggers>
24+
</collection>

expath-pkg.xml

Lines changed: 0 additions & 5 deletions
This file was deleted.

expath-pkg.xml.tmpl

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<package xmlns="http://expath.org/ns/pkg" name="@url@" abbrev="@name@" version="@version@" spec="1.0">
3+
<title>@title@</title>
4+
</package>

0 commit comments

Comments
 (0)