diff options
author | Austin English <wizardedit@gentoo.org> | 2016-05-12 11:00:49 -0500 |
---|---|---|
committer | Austin English <wizardedit@gentoo.org> | 2016-05-12 11:01:27 -0500 |
commit | 85aa7e0a45e030c78d8604b22639568cc56be941 (patch) | |
tree | b4cdafcb36f382bd1d80419616ccae914f2aeae5 /dev-util | |
parent | net-misc/dhcpcd: make dhcpcd.service block until a lease is obtained (diff) | |
download | gentoo-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')
-rw-r--r-- | dev-util/artifactory-bin/artifactory-bin-4.7.6.ebuild | 6 | ||||
-rw-r--r-- | dev-util/artifactory-bin/files/artifactory.xml | 4 | ||||
-rw-r--r-- | dev-util/artifactory-bin/files/confd | 5 | ||||
-rw-r--r-- | dev-util/artifactory-bin/files/initd | 165 | ||||
-rw-r--r-- | dev-util/artifactory-bin/files/server.xml | 17 |
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> + |