Skip to content

Commit

Permalink
dev-util/artifactory-bin: add missing files/dir, rename files to be v…
Browse files Browse the repository at this point in the history
…ersion agnostic

Package-Manager: portage-2.2.26
  • Loading branch information
austin987 committed May 12, 2016
1 parent 775b840 commit 85aa7e0
Show file tree
Hide file tree
Showing 5 changed files with 193 additions and 4 deletions.
6 changes: 2 additions & 4 deletions dev-util/artifactory-bin/artifactory-bin-4.7.6.ebuild
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
4 changes: 4 additions & 0 deletions dev-util/artifactory-bin/files/artifactory.xml
Original file line number Diff line number Diff line change
@@ -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>
5 changes: 5 additions & 0 deletions dev-util/artifactory-bin/files/confd
Original file line number Diff line number Diff line change
@@ -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
165 changes: 165 additions & 0 deletions dev-util/artifactory-bin/files/initd
Original file line number Diff line number Diff line change
@@ -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
}
17 changes: 17 additions & 0 deletions dev-util/artifactory-bin/files/server.xml
Original file line number Diff line number Diff line change
@@ -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>

0 comments on commit 85aa7e0

Please sign in to comment.