You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by bt...@apache.org on 2018/01/04 08:13:35 UTC
[20/21] james-project git commit: JAMES-2274 Script helper for
per-commit packages generation
JAMES-2274 Script helper for per-commit packages generation
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/fe9c6256
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/fe9c6256
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/fe9c6256
Branch: refs/heads/master
Commit: fe9c62560d3eea74edce46228b38bbd4cba1e7fb
Parents: 0e6e17d
Author: benwa <bt...@linagora.com>
Authored: Thu Dec 28 13:52:00 2017 +0700
Committer: benwa <bt...@linagora.com>
Committed: Thu Jan 4 15:12:47 2018 +0700
----------------------------------------------------------------------
README.adoc | 5 ++
.../packaging/guice/cassandra/Dockerfile | 4 +-
.../packaging/guice/cassandra/james.postinst | 6 --
.../guice/cassandra/james.rpm.postinst | 8 ---
.../guice/cassandra/james.rpm.postremove | 7 --
.../guice/cassandra/james.rpm.postupgrade | 5 --
.../packaging/guice/cassandra/james.service | 34 ----------
.../packaging/guice/cassandra/package.sh | 68 +++++++-------------
.../guice/cassandra/scripts/james.postinst | 6 ++
.../guice/cassandra/scripts/james.rpm.postinst | 8 +++
.../cassandra/scripts/james.rpm.postremove | 7 ++
.../cassandra/scripts/james.rpm.postupgrade | 5 ++
.../guice/cassandra/scripts/james.service | 34 ++++++++++
.../guice/cassandra/scripts/james.service.rhel | 34 ++++++++++
.../guice/cassandra/scripts/package.sh | 61 ++++++++++++++++++
dockerfiles/packaging/james.service.rhel | 34 ----------
16 files changed, 186 insertions(+), 140 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/fe9c6256/README.adoc
----------------------------------------------------------------------
diff --git a/README.adoc b/README.adoc
index 7e3acc9..7245fb2 100644
--- a/README.adoc
+++ b/README.adoc
@@ -375,3 +375,8 @@ Then, you have to run the container:
Where:
- $PWD/result is the folder where the deb and the RPM packages will be copied
+
+Note: A helper script is provided for the generation of packages for a specific git commit. For instance:
+
+ $ sh dockerfiles/packaging/guice/cassandra/package.sh 3.0.1 1 c298195e84 $PWD/result
+
http://git-wip-us.apache.org/repos/asf/james-project/blob/fe9c6256/dockerfiles/packaging/guice/cassandra/Dockerfile
----------------------------------------------------------------------
diff --git a/dockerfiles/packaging/guice/cassandra/Dockerfile b/dockerfiles/packaging/guice/cassandra/Dockerfile
index 21b99c6..632a40d 100644
--- a/dockerfiles/packaging/guice/cassandra/Dockerfile
+++ b/dockerfiles/packaging/guice/cassandra/Dockerfile
@@ -8,9 +8,9 @@ RUN apt-get install -y ruby-dev ruby build-essential
RUN gem install fpm
RUN apt-get install -y rpm
-ADD . /packages
+ADD scripts/ /packages
-COPY james.service /packages/package/usr/share/james/
+COPY scripts/james.service /packages/package/usr/share/james/
COPY --from=source /root/*.jar /packages/package/usr/share/james/
COPY --from=source /root/james-server-cassandra-guice.lib/ /packages/package/usr/share/james/james-server-cassandra-guice.lib/
COPY --from=source /root/james-server-cli.lib/ /packages/package/usr/share/james/james-server-cli.lib/
http://git-wip-us.apache.org/repos/asf/james-project/blob/fe9c6256/dockerfiles/packaging/guice/cassandra/james.postinst
----------------------------------------------------------------------
diff --git a/dockerfiles/packaging/guice/cassandra/james.postinst b/dockerfiles/packaging/guice/cassandra/james.postinst
deleted file mode 100644
index 82306a7..0000000
--- a/dockerfiles/packaging/guice/cassandra/james.postinst
+++ /dev/null
@@ -1,6 +0,0 @@
-#! /bin/sh -e
-
-ln -s /etc/james /var/lib/james/conf
-
-systemctl enable james
-
http://git-wip-us.apache.org/repos/asf/james-project/blob/fe9c6256/dockerfiles/packaging/guice/cassandra/james.rpm.postinst
----------------------------------------------------------------------
diff --git a/dockerfiles/packaging/guice/cassandra/james.rpm.postinst b/dockerfiles/packaging/guice/cassandra/james.rpm.postinst
deleted file mode 100644
index 447b4c1..0000000
--- a/dockerfiles/packaging/guice/cassandra/james.rpm.postinst
+++ /dev/null
@@ -1,8 +0,0 @@
-#! /bin/sh -e
-
-ln -s /etc/james /var/lib/james/conf
-
-#Workaround waiting for https://github.com/jordansissel/fpm/issues/1163 to be released
-cp /usr/share/james/james.service /etc/systemd/system/
-systemctl enable james
-
http://git-wip-us.apache.org/repos/asf/james-project/blob/fe9c6256/dockerfiles/packaging/guice/cassandra/james.rpm.postremove
----------------------------------------------------------------------
diff --git a/dockerfiles/packaging/guice/cassandra/james.rpm.postremove b/dockerfiles/packaging/guice/cassandra/james.rpm.postremove
deleted file mode 100644
index d70a3ed..0000000
--- a/dockerfiles/packaging/guice/cassandra/james.rpm.postremove
+++ /dev/null
@@ -1,7 +0,0 @@
-#! /bin/sh -e
-
-#Workaround waiting for https://github.com/jordansissel/fpm/issues/1163 to be released
-systemctl stop james
-systemctl disable james
-rm /etc/systemd/system/james.service
-
http://git-wip-us.apache.org/repos/asf/james-project/blob/fe9c6256/dockerfiles/packaging/guice/cassandra/james.rpm.postupgrade
----------------------------------------------------------------------
diff --git a/dockerfiles/packaging/guice/cassandra/james.rpm.postupgrade b/dockerfiles/packaging/guice/cassandra/james.rpm.postupgrade
deleted file mode 100644
index 8e2c81c..0000000
--- a/dockerfiles/packaging/guice/cassandra/james.rpm.postupgrade
+++ /dev/null
@@ -1,5 +0,0 @@
-#! /bin/sh -e
-
-#Workaround waiting for https://github.com/jordansissel/fpm/issues/1163 to be released
-systemctl try-restart james
-
http://git-wip-us.apache.org/repos/asf/james-project/blob/fe9c6256/dockerfiles/packaging/guice/cassandra/james.service
----------------------------------------------------------------------
diff --git a/dockerfiles/packaging/guice/cassandra/james.service b/dockerfiles/packaging/guice/cassandra/james.service
deleted file mode 100644
index 2c55df6..0000000
--- a/dockerfiles/packaging/guice/cassandra/james.service
+++ /dev/null
@@ -1,34 +0,0 @@
-[Unit]
-Description=James stands for Java Apache Mail Enterprise Server! It has a modular architecture based on a rich set of modern and efficient components which provides at the end complete, stable, secure and extendable Mail Servers running on the JVM.
-Documentation=http://james.apache.org
-Wants=network-online.target cassandra.service elasticsearch.service
-After=network-online.target cassandra.service elasticsearch.service
-
-[Service]
-Environment=WORKING_DIRECTORY=/var/lib/james
-Environment=XMX=1024m
-
-User=root
-Group=root
-
-ExecStart=/usr/lib/jvm/java-8-openjdk-amd64/bin/java -Dworking.directory=${WORKING_DIRECTORY} -Xmx${XMX} -Dlogback.configurationFile=/etc/james/logback.xml -jar /usr/share/james/james-server.jar
-
-StandardOutput=journal
-StandardError=inherit
-
-# Specifies the maximum number of bytes of memory that may be locked into RAM
-# Set to "infinity" if you use the 'bootstrap.mlockall: true' option
-# in elasticsearch.yml and 'MAX_LOCKED_MEMORY=unlimited' in /etc/default/elasticsearch
-#LimitMEMLOCK=infinity
-
-# SIGTERM signal is used to stop the Java process
-KillSignal=SIGTERM
-
-# Java process is never killed
-SendSIGKILL=no
-
-# When a JVM receives a SIGTERM signal it exits with code 143
-SuccessExitStatus=143
-
-[Install]
-WantedBy=multi-user.target
http://git-wip-us.apache.org/repos/asf/james-project/blob/fe9c6256/dockerfiles/packaging/guice/cassandra/package.sh
----------------------------------------------------------------------
diff --git a/dockerfiles/packaging/guice/cassandra/package.sh b/dockerfiles/packaging/guice/cassandra/package.sh
old mode 100755
new mode 100644
index ce89168..2d4805d
--- a/dockerfiles/packaging/guice/cassandra/package.sh
+++ b/dockerfiles/packaging/guice/cassandra/package.sh
@@ -2,60 +2,40 @@
printUsage() {
echo "Usage : "
- echo "./package.sh RELEASE ITERATION"
+ echo "./package.sh RELEASE ITERATION SHA1 DIRECTORY"
echo " RELEASE : The release to be generated."
echo " ITERATION: The iteration to give to the package."
+ echo " SHA1: The SHA-1 to build packages against"
+ echo " DIRECTORY: The directory where to put build results"
exit 1
}
-if [ "$#" -ne 2 ]; then
+
+if [ "$#" -ne 4 ]; then
printUsage
fi
RELEASE=$1
ITERATION=$2
+SHA1=$3
+DIRECTORY=$4
-fpm -s dir -t deb \
- -n james \
- -v $RELEASE \
- -a x86_64 \
- -d openjdk-8-jre \
- -C package \
- --deb-systemd james.service \
- --after-install james.postinst \
- --provides mail-transport-agent \
- --provides default-mta \
- --iteration $ITERATION \
- --license http://www.apache.org/licenses/LICENSE-2.0 \
- --description "$(printf "James stands for Java Apache Mail Enterprise Server!\nIt has a modular architecture based on a rich set of modern and efficient components which provides at the end complete, stable, secure and extendable Mail Servers running on the JVM.")" \
- --vendor "Apache" \
- --maintainer "Apache" \
- --url http://james.apache.org/ \
- --category web \
- .
-
-#Workaround waiting for https://github.com/jordansissel/fpm/issues/1163 to be released
-cp james.service.rhel package/usr/share/james/james.service
+# Compile James
+docker build -t james/project dockerfiles/compilation/java-8
+docker run \
+ --rm \
+ --volume $PWD/.m2:/root/.m2 \
+ --volume $PWD:/origin \
+ --volume $PWD/dockerfiles/run/guice/cassandra/destination:/cassandra/destination \
+ -t james/project -s $SHA1
-fpm -s dir -t rpm \
- -n james \
- -v $RELEASE \
- -a x86_64 \
- -d java-1.8.0-openjdk-headless \
- -C package \
- --after-install james.rpm.postinst \
- --after-upgrade james.rpm.postupgrade \
- --after-remove james.rpm.postremove \
- --provides mail-transport-agent \
- --provides default-mta \
- --iteration $ITERATION \
- --license http://www.apache.org/licenses/LICENSE-2.0 \
- --description "$(printf "James stands for Java Apache Mail Enterprise Server!\nIt has a modular architecture based on a rich set of modern and efficient components which provides at the end complete, stable, secure and extendable Mail Servers running on the JVM.")" \
- --vendor "Apache" \
- --maintainer "Apache" \
- --url http://james.apache.org/ \
- --category web \
- .
+# Build image
+docker build -t james_run dockerfiles/run/guice/cassandra
-cp /packages/james*.deb /result/
-cp /packages/james*.rpm /result/
+# Build packages
+docker build -t build-james-packages \
+ --build-arg RELEASE=$RELEASE-$SHA1 \
+ --build-arg ITERATION=$ITERATION \
+ --build-arg BASE=james_run \
+ dockerfiles/packaging/guice/cassandra
+docker run --rm --name james-packages -v $DIRECTORY:/result build-james-packages
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/james-project/blob/fe9c6256/dockerfiles/packaging/guice/cassandra/scripts/james.postinst
----------------------------------------------------------------------
diff --git a/dockerfiles/packaging/guice/cassandra/scripts/james.postinst b/dockerfiles/packaging/guice/cassandra/scripts/james.postinst
new file mode 100644
index 0000000..82306a7
--- /dev/null
+++ b/dockerfiles/packaging/guice/cassandra/scripts/james.postinst
@@ -0,0 +1,6 @@
+#! /bin/sh -e
+
+ln -s /etc/james /var/lib/james/conf
+
+systemctl enable james
+
http://git-wip-us.apache.org/repos/asf/james-project/blob/fe9c6256/dockerfiles/packaging/guice/cassandra/scripts/james.rpm.postinst
----------------------------------------------------------------------
diff --git a/dockerfiles/packaging/guice/cassandra/scripts/james.rpm.postinst b/dockerfiles/packaging/guice/cassandra/scripts/james.rpm.postinst
new file mode 100644
index 0000000..447b4c1
--- /dev/null
+++ b/dockerfiles/packaging/guice/cassandra/scripts/james.rpm.postinst
@@ -0,0 +1,8 @@
+#! /bin/sh -e
+
+ln -s /etc/james /var/lib/james/conf
+
+#Workaround waiting for https://github.com/jordansissel/fpm/issues/1163 to be released
+cp /usr/share/james/james.service /etc/systemd/system/
+systemctl enable james
+
http://git-wip-us.apache.org/repos/asf/james-project/blob/fe9c6256/dockerfiles/packaging/guice/cassandra/scripts/james.rpm.postremove
----------------------------------------------------------------------
diff --git a/dockerfiles/packaging/guice/cassandra/scripts/james.rpm.postremove b/dockerfiles/packaging/guice/cassandra/scripts/james.rpm.postremove
new file mode 100644
index 0000000..d70a3ed
--- /dev/null
+++ b/dockerfiles/packaging/guice/cassandra/scripts/james.rpm.postremove
@@ -0,0 +1,7 @@
+#! /bin/sh -e
+
+#Workaround waiting for https://github.com/jordansissel/fpm/issues/1163 to be released
+systemctl stop james
+systemctl disable james
+rm /etc/systemd/system/james.service
+
http://git-wip-us.apache.org/repos/asf/james-project/blob/fe9c6256/dockerfiles/packaging/guice/cassandra/scripts/james.rpm.postupgrade
----------------------------------------------------------------------
diff --git a/dockerfiles/packaging/guice/cassandra/scripts/james.rpm.postupgrade b/dockerfiles/packaging/guice/cassandra/scripts/james.rpm.postupgrade
new file mode 100644
index 0000000..8e2c81c
--- /dev/null
+++ b/dockerfiles/packaging/guice/cassandra/scripts/james.rpm.postupgrade
@@ -0,0 +1,5 @@
+#! /bin/sh -e
+
+#Workaround waiting for https://github.com/jordansissel/fpm/issues/1163 to be released
+systemctl try-restart james
+
http://git-wip-us.apache.org/repos/asf/james-project/blob/fe9c6256/dockerfiles/packaging/guice/cassandra/scripts/james.service
----------------------------------------------------------------------
diff --git a/dockerfiles/packaging/guice/cassandra/scripts/james.service b/dockerfiles/packaging/guice/cassandra/scripts/james.service
new file mode 100644
index 0000000..2c55df6
--- /dev/null
+++ b/dockerfiles/packaging/guice/cassandra/scripts/james.service
@@ -0,0 +1,34 @@
+[Unit]
+Description=James stands for Java Apache Mail Enterprise Server! It has a modular architecture based on a rich set of modern and efficient components which provides at the end complete, stable, secure and extendable Mail Servers running on the JVM.
+Documentation=http://james.apache.org
+Wants=network-online.target cassandra.service elasticsearch.service
+After=network-online.target cassandra.service elasticsearch.service
+
+[Service]
+Environment=WORKING_DIRECTORY=/var/lib/james
+Environment=XMX=1024m
+
+User=root
+Group=root
+
+ExecStart=/usr/lib/jvm/java-8-openjdk-amd64/bin/java -Dworking.directory=${WORKING_DIRECTORY} -Xmx${XMX} -Dlogback.configurationFile=/etc/james/logback.xml -jar /usr/share/james/james-server.jar
+
+StandardOutput=journal
+StandardError=inherit
+
+# Specifies the maximum number of bytes of memory that may be locked into RAM
+# Set to "infinity" if you use the 'bootstrap.mlockall: true' option
+# in elasticsearch.yml and 'MAX_LOCKED_MEMORY=unlimited' in /etc/default/elasticsearch
+#LimitMEMLOCK=infinity
+
+# SIGTERM signal is used to stop the Java process
+KillSignal=SIGTERM
+
+# Java process is never killed
+SendSIGKILL=no
+
+# When a JVM receives a SIGTERM signal it exits with code 143
+SuccessExitStatus=143
+
+[Install]
+WantedBy=multi-user.target
http://git-wip-us.apache.org/repos/asf/james-project/blob/fe9c6256/dockerfiles/packaging/guice/cassandra/scripts/james.service.rhel
----------------------------------------------------------------------
diff --git a/dockerfiles/packaging/guice/cassandra/scripts/james.service.rhel b/dockerfiles/packaging/guice/cassandra/scripts/james.service.rhel
new file mode 100644
index 0000000..af48a62
--- /dev/null
+++ b/dockerfiles/packaging/guice/cassandra/scripts/james.service.rhel
@@ -0,0 +1,34 @@
+[Unit]
+Description=James stands for Java Apache Mail Enterprise Server! It has a modular architecture based on a rich set of modern and efficient components which provides at the end complete, stable, secure and extendable Mail Servers running on the JVM.
+Documentation=http://james.apache.org
+Wants=network-online.target cassandra.service elasticsearch.service
+After=network-online.target cassandra.service elasticsearch.service
+
+[Service]
+Environment=WORKING_DIRECTORY=/var/lib/james
+Environment=XMX=1024m
+
+User=root
+Group=root
+
+ExecStart=/usr/lib/jvm/jre-1.8.0-openjdk/bin/java -Dworking.directory=${WORKING_DIRECTORY} -Xmx${XMX} -Dlogback.configurationFile=/etc/james/logback.xml -jar /usr/share/james/james-server.jar
+
+StandardOutput=journal
+StandardError=inherit
+
+# Specifies the maximum number of bytes of memory that may be locked into RAM
+# Set to "infinity" if you use the 'bootstrap.mlockall: true' option
+# in elasticsearch.yml and 'MAX_LOCKED_MEMORY=unlimited' in /etc/default/elasticsearch
+#LimitMEMLOCK=infinity
+
+# SIGTERM signal is used to stop the Java process
+KillSignal=SIGTERM
+
+# Java process is never killed
+SendSIGKILL=no
+
+# When a JVM receives a SIGTERM signal it exits with code 143
+SuccessExitStatus=143
+
+[Install]
+WantedBy=multi-user.target
http://git-wip-us.apache.org/repos/asf/james-project/blob/fe9c6256/dockerfiles/packaging/guice/cassandra/scripts/package.sh
----------------------------------------------------------------------
diff --git a/dockerfiles/packaging/guice/cassandra/scripts/package.sh b/dockerfiles/packaging/guice/cassandra/scripts/package.sh
new file mode 100755
index 0000000..da86f36
--- /dev/null
+++ b/dockerfiles/packaging/guice/cassandra/scripts/package.sh
@@ -0,0 +1,61 @@
+#!/bin/sh -e
+
+printUsage() {
+ echo "Usage : "
+ echo "./package.sh RELEASE ITERATION"
+ echo " RELEASE : The release to be generated."
+ echo " ITERATION: The iteration to give to the package."
+ exit 1
+}
+
+if [ "$#" -ne 2 ]; then
+ printUsage
+fi
+
+RELEASE=$1
+ITERATION=$2
+
+fpm -s dir -t deb \
+ -n james \
+ -v $RELEASE \
+ -a x86_64 \
+ -d openjdk-8-jre \
+ -C package \
+ --deb-systemd james.service \
+ --after-install james.postinst \
+ --provides mail-transport-agent \
+ --provides default-mta \
+ --iteration $ITERATION \
+ --license http://www.apache.org/licenses/LICENSE-2.0 \
+ --description "$(printf "James stands for Java Apache Mail Enterprise Server!\nIt has a modular architecture based on a rich set of modern and efficient components which provides at the end complete, stable, secure and extendable Mail Servers running on the JVM.")" \
+ --vendor "Apache" \
+ --maintainer "Apache" \
+ --url http://james.apache.org/ \
+ --category web \
+ .
+
+#Workaround waiting for https://github.com/jordansissel/fpm/issues/1163 to be released
+cp james.service.rhel package/usr/share/james/james.service
+
+fpm -s dir -t rpm \
+ -n james \
+ -v $RELEASE \
+ -a x86_64 \
+ -d java-1.8.0-openjdk-headless \
+ -C package \
+ --after-install james.rpm.postinst \
+ --after-upgrade james.rpm.postupgrade \
+ --after-remove james.rpm.postremove \
+ --provides mail-transport-agent \
+ --provides default-mta \
+ --iteration $ITERATION \
+ --license http://www.apache.org/licenses/LICENSE-2.0 \
+ --description "$(printf "James stands for Java Apache Mail Enterprise Server!\nIt has a modular architecture based on a rich set of modern and efficient components which provides at the end complete, stable, secure and extendable Mail Servers running on the JVM.")" \
+ --vendor "Apache" \
+ --maintainer "Apache" \
+ --url http://james.apache.org/ \
+ --category web \
+ .
+
+cp /packages/james*.deb /result/
+cp /packages/james*.rpm /result/
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/james-project/blob/fe9c6256/dockerfiles/packaging/james.service.rhel
----------------------------------------------------------------------
diff --git a/dockerfiles/packaging/james.service.rhel b/dockerfiles/packaging/james.service.rhel
deleted file mode 100644
index af48a62..0000000
--- a/dockerfiles/packaging/james.service.rhel
+++ /dev/null
@@ -1,34 +0,0 @@
-[Unit]
-Description=James stands for Java Apache Mail Enterprise Server! It has a modular architecture based on a rich set of modern and efficient components which provides at the end complete, stable, secure and extendable Mail Servers running on the JVM.
-Documentation=http://james.apache.org
-Wants=network-online.target cassandra.service elasticsearch.service
-After=network-online.target cassandra.service elasticsearch.service
-
-[Service]
-Environment=WORKING_DIRECTORY=/var/lib/james
-Environment=XMX=1024m
-
-User=root
-Group=root
-
-ExecStart=/usr/lib/jvm/jre-1.8.0-openjdk/bin/java -Dworking.directory=${WORKING_DIRECTORY} -Xmx${XMX} -Dlogback.configurationFile=/etc/james/logback.xml -jar /usr/share/james/james-server.jar
-
-StandardOutput=journal
-StandardError=inherit
-
-# Specifies the maximum number of bytes of memory that may be locked into RAM
-# Set to "infinity" if you use the 'bootstrap.mlockall: true' option
-# in elasticsearch.yml and 'MAX_LOCKED_MEMORY=unlimited' in /etc/default/elasticsearch
-#LimitMEMLOCK=infinity
-
-# SIGTERM signal is used to stop the Java process
-KillSignal=SIGTERM
-
-# Java process is never killed
-SendSIGKILL=no
-
-# When a JVM receives a SIGTERM signal it exits with code 143
-SuccessExitStatus=143
-
-[Install]
-WantedBy=multi-user.target
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org