summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAustin English <wizardedit@gentoo.org>2016-05-12 11:00:49 -0500
committerAustin English <wizardedit@gentoo.org>2016-05-12 11:01:27 -0500
commit85aa7e0a45e030c78d8604b22639568cc56be941 (patch)
treeb4cdafcb36f382bd1d80419616ccae914f2aeae5 /dev-util/artifactory-bin
parentnet-misc/dhcpcd: make dhcpcd.service block until a lease is obtained (diff)
downloadgentoo-85aa7e0a45e030c78d8604b22639568cc56be941.tar.gz
gentoo-85aa7e0a45e030c78d8604b22639568cc56be941.tar.bz2
gentoo-85aa7e0a45e030c78d8604b22639568cc56be941.zip
dev-util/artifactory-bin: add missing files/dir, rename files to be version agnostic
Package-Manager: portage-2.2.26
Diffstat (limited to 'dev-util/artifactory-bin')
-rw-r--r--dev-util/artifactory-bin/artifactory-bin-4.7.6.ebuild6
-rw-r--r--dev-util/artifactory-bin/files/artifactory.xml4
-rw-r--r--dev-util/artifactory-bin/files/confd5
-rw-r--r--dev-util/artifactory-bin/files/initd165
-rw-r--r--dev-util/artifactory-bin/files/server.xml17
5 files changed, 193 insertions, 4 deletions
diff --git a/dev-util/artifactory-bin/artifactory-bin-4.7.6.ebuild b/dev-util/artifactory-bin/artifactory-bin-4.7.6.ebuild
index 693071dcb80b..7698961720d0 100644
--- a/dev-util/artifactory-bin/artifactory-bin-4.7.6.ebuild
+++ b/dev-util/artifactory-bin/artifactory-bin-4.7.6.ebuild
@@ -39,10 +39,8 @@ src_prepare() {
default
if use ssl ; then
- cp "${FILESDIR}/artifactory-4.4.0-artifactory.xml" \
- tomcat/conf/Catalina/localhost/artifactory.xml || die
- cp "${FILESDIR}/artifactory-4.4.0-server.xml" \
- tomcat/conf/server.xml || die
+ cp "${FILESDIR}/artifactory.xml" tomcat/conf/Catalina/localhost/artifactory.xml || die
+ cp "${FILESDIR}/server.xml" tomcat/conf/server.xml || die
fi
# Reverse https://www.jfrog.com/jira/browse/RTFACT-7123
diff --git a/dev-util/artifactory-bin/files/artifactory.xml b/dev-util/artifactory-bin/files/artifactory.xml
new file mode 100644
index 000000000000..19042bcb97a0
--- /dev/null
+++ b/dev-util/artifactory-bin/files/artifactory.xml
@@ -0,0 +1,4 @@
+<Context path="/artifactory" docBase="${artifactory.home}/webapps/artifactory.war" processTlds="false">
+ <Manager pathname="" />
+ <Valve className="org.apache.catalina.valves.RemoteIpValve" protocolHeader="x-forwarded-proto"/>
+</Context>
diff --git a/dev-util/artifactory-bin/files/confd b/dev-util/artifactory-bin/files/confd
new file mode 100644
index 000000000000..fd7e6e22582c
--- /dev/null
+++ b/dev-util/artifactory-bin/files/confd
@@ -0,0 +1,5 @@
+ARTIFACTORY_HOME=/opt/artifactory
+ARTIFACTORY_PID=$ARTIFACTORY_HOME/run/artifactory.pid
+ARTIFACTORY_USER=artifactory
+JAVA_OPTIONS="-server -Xms2g -Xmx8g -Xss256k -XX:PermSize=128m -XX:MaxPermSize=256m -XX:+UseG1GC"
+TOMCAT_HOME=$ARTIFACTORY_HOME/tomcat
diff --git a/dev-util/artifactory-bin/files/initd b/dev-util/artifactory-bin/files/initd
new file mode 100644
index 000000000000..58e16cede4f8
--- /dev/null
+++ b/dev-util/artifactory-bin/files/initd
@@ -0,0 +1,165 @@
+#!/sbin/openrc-run
+
+description="Manages the services needed to run Artifactory on a dedicated Tomcat"
+command="/opt/artifactory/tomcat/bin/catalina.sh"
+pidfile="/opt/artifactory/run/artifactory.pid"
+procname="artifactory"
+user=${ARTIFACTORY_USER:-artifactory}
+group=${group:-artifactory}
+
+# Artifactory can be very slow to start, and without locking,
+# restarting via runscript is very error prone
+CATALINA_LOCK_FILE="$(dirname $pidfile)/lock"
+
+CATALINA_MGMT_PORT=8015
+REQUIRED_JAVA_VERSION="1.8"
+START_TIMEOUT=300
+
+# Helper functions:
+is_mgmt_port_used() {
+ mgmt_port_used=$(netstat -vatn | grep LISTEN | grep $CATALINA_MGMT_PORT | wc -l)
+}
+
+get_pid_info() {
+ pidValue=""
+ javaPs=""
+ if [ -e "$pidfile" ]; then
+ pidValue=$(cat $pidfile)
+ if [ -n "$pidValue" ]; then
+ javaPs="$(ps -p $pidValue | grep java)"
+ fi
+ fi
+}
+
+depend() {
+ need net nginx
+ use dns logger netmount
+}
+
+start_pre() {
+ if [ -z "$ARTIFACTORY_HOME" ] || [ ! -d "$ARTIFACTORY_HOME" ]; then
+ eerror "Artifactory home folder not defined or does not exists at $ARTIFACTORY_HOME"
+ return 1
+ fi
+
+ if [ -z "$pidfile" ]; then
+ eerror "Artifactory pid destination pidfile was not set!"
+ return 1
+ fi
+
+ if [ -z "$TOMCAT_HOME" ] || [ ! -d "$TOMCAT_HOME" ]; then
+ eerror "Tomcat Artifactory folder not defined or does not exists at $TOMCAT_HOME"
+ return 1
+ fi
+
+ if [ -z "$ARTIFACTORY_USER" ]; then
+ ARTIFACTORY_USER=$user
+ fi
+
+ current_open_file_limit=$(su -l $ARTIFACTORY_USER -c "ulimit -n")
+ desired_open_file_limit=32000
+ if [ "$current_open_file_limit" != "unlimited" ] && [ $current_open_file_limit -lt $desired_open_file_limit ]; then
+ eerror "Maximum number of open files ($current_open_file_limit) is too small!"
+ eerror "You should add:"
+ eerror "artifactory soft nofile $desired_open_file_limit"
+ eerror "artifactory hard nofile $desired_open_file_limit"
+ eerror "to your /etc/security/limits.conf file."
+ return 1
+ fi
+
+ current_max_process_limit=$(su -l $ARTIFACTORY_USER -c "ulimit -u")
+ desired_max_process_limit=1024
+ if [ "$current_max_process_limit" != "unlimited" ] && [ $current_max_process_limit -lt $desired_max_process_limit ]; then
+ eerror "Number of processes $current_max_process_limit is too small!"
+ eerror "You should add:"
+ eerror "artifactory soft nproc $desired_max_process_limit"
+ eerror "artifactory hard nproc $desired_max_process_limit"
+ eerror "to your /etc/security/limits.conf file."
+ return 1
+ fi
+
+ if [[ -n "$JAVA_HOME" ]] && [[ -x "$JAVA_HOME/bin/java" ]]; then
+ einfo "Found java executable in $JAVA_HOME"
+ _java="$JAVA_HOME/bin/java"
+ elif type -p java > dev/null 2>&1 ; then
+ _java=java
+ else
+ eerror "No Java Runtime Environment (jre) found! At least java-$REQUIRED_JAVA_VERSION is required."
+ return 1
+ fi
+ if [[ "$_java" ]]; then
+ java_version=$($_java -version 2>&1 | grep 'version' | cut -d ' ' -f3 | tr -d \")
+ java_major=$(echo $java_version | cut -d . -f1-2)
+ if [ "$java_major" != "$REQUIRED_JAVA_VERSION" ] ; then
+ eerror "Java version $java_version is too old, java-$REQUIRED_JAVA_VERSION is required."
+ return 1
+ fi
+ fi
+}
+
+# We have to pass start/stop through to catalina.sh, which doesn't understand restart (and restart can't be overridden in OpenRC):
+start() {
+ get_pid_info
+ is_mgmt_port_used
+ if [ $mgmt_port_used -ne 0 ] || [ -n "$javaPs" ]; then
+ eerror "$RC_SERVICE already started!"
+ return 1
+ else
+ ebegin "Starting $RC_SERVICE"
+ start-stop-daemon --exec $command --pidfile $pidfile --user $user:$group --wait $START_TIMEOUT start
+ RETVAL=$?
+ eend $RETVAL "start-stop-daemon failed to start $RC_SERVICE"
+ fi
+
+
+ is_mgmt_port_used
+ seconds=1
+ while [ $mgmt_port_used -eq 0 ] && [ $seconds -lt $START_TIMEOUT ]; do
+ sleep 1
+ ((seconds=seconds+1))
+ is_mgmt_port_used
+ done
+ if [ $mgmt_port_used -eq 0 ]; then
+ eerror "$RC_SERVICE did not start in $START_TIMEOUT seconds!"
+ return 1
+ elif [ $mgmt_port_used -eq 1 ]; then
+ einfo "$RC_SERVICE started"
+ [ $RETVAL=0 ] && touch $CATALINA_LOCK_FILE
+ else
+ eerror "Got unexpected result when checking port $CATALINA_MGMT_PORT"
+ return 1
+ fi
+ return $RETVAL
+}
+
+stop() {
+ ebegin "Stopping $RC_SERVICE"
+ start-stop-daemon --stop --pidfile $pidfile --wait $START_TIMEOUT stop
+ RETVAL=$?
+ eend $RETVAL "Failed to stop $RC_SERVICE!"
+
+ [ $RETVAL=0 ] && rm -f "$CATALINA_LOCK_FILE" "$pidfile"
+ return $RETVAL
+}
+
+status() {
+ is_mgmt_port_used
+ if [ $mgmt_port_used -eq 0 ]; then
+ if [ -e "$pidfile" ]; then
+ eerror "$RC_SERVICE stopped but the pid file $pidfile still exists!"
+ RETVAL=1
+ else
+ if [ -e "$CATALINA_LOCK_FILE" ]; then
+ eerror "$RC_SERVICE is stopped but the lock file $CATALINA_LOCK_FILE still exists!"
+ RETVAL=2
+ else
+ eerror "$RC_SERVICE is stopped"
+ RETVAL=3
+ fi
+ fi
+ else
+ einfo "$RC_SERVICE is running"
+ RETVAL=0
+ fi
+ return $RETVAL
+}
diff --git a/dev-util/artifactory-bin/files/server.xml b/dev-util/artifactory-bin/files/server.xml
new file mode 100644
index 000000000000..ba87175ff549
--- /dev/null
+++ b/dev-util/artifactory-bin/files/server.xml
@@ -0,0 +1,17 @@
+<Server port="8015" shutdown="SHUTDOWN">
+
+ <Service name="Catalina">
+ <Connector port="8081" protocol="HTTP/1.1"
+ maxThreads="500" minSpareThreads="20"
+ enableLookups="false" disableUploadTimeout="true"
+ backlog="100"/>
+ <!-- This is the optional AJP connector -->
+ <Connector port="8019" protocol="AJP/1.3"/>
+
+ <Engine name="Catalina" defaultHost="localhost">
+ <Host name="localhost" appBase="webapps"/>
+ </Engine>
+
+ </Service>
+</Server>
+