Refactored DEB/RPM builds for JS based components
This commit is contained in:
parent
68151e6561
commit
551d2609fb
@ -34,14 +34,13 @@
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<main.dir>${basedir}/..</main.dir>
|
||||
<pkg.type>java</pkg.type>
|
||||
<pkg.disabled>false</pkg.disabled>
|
||||
<pkg.process-resources.phase>process-resources</pkg.process-resources.phase>
|
||||
<pkg.package.phase>package</pkg.package.phase>
|
||||
<pkg.name>thingsboard</pkg.name>
|
||||
<pkg.unixLogFolder>/var/log/${pkg.name}</pkg.unixLogFolder>
|
||||
<pkg.installFolder>/usr/share/${pkg.name}</pkg.installFolder>
|
||||
<pkg.copyInstallScripts>true</pkg.copyInstallScripts>
|
||||
<pkg.win.dist>${project.build.directory}/windows</pkg.win.dist>
|
||||
<pkg.copyInstallScripts>true</pkg.copyInstallScripts>
|
||||
<pkg.implementationTitle>ThingsBoard</pkg.implementationTitle>
|
||||
<pkg.mainClass>org.thingsboard.server.ThingsboardServerApplication</pkg.mainClass>
|
||||
</properties>
|
||||
|
||||
@ -1,139 +0,0 @@
|
||||
/**
|
||||
* Copyright © 2016-2020 The Thingsboard Authors
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
import org.apache.tools.ant.filters.ReplaceTokens
|
||||
|
||||
buildscript {
|
||||
ext {
|
||||
osPackageVersion = "8.3.0"
|
||||
}
|
||||
repositories {
|
||||
jcenter()
|
||||
}
|
||||
dependencies {
|
||||
classpath("com.netflix.nebula:gradle-ospackage-plugin:${osPackageVersion}")
|
||||
}
|
||||
}
|
||||
|
||||
apply plugin: "nebula.ospackage"
|
||||
|
||||
buildDir = projectBuildDir
|
||||
version = projectVersion
|
||||
distsDirName = "./"
|
||||
|
||||
// OS Package plugin configuration
|
||||
ospackage {
|
||||
packageName = pkgName
|
||||
version = "${project.version}"
|
||||
release = 1
|
||||
os = LINUX
|
||||
type = BINARY
|
||||
|
||||
into pkgInstallFolder
|
||||
|
||||
user pkgUser
|
||||
permissionGroup pkgUser
|
||||
|
||||
// Copy the executable file
|
||||
from("target/package/linux/bin/${pkgName}") {
|
||||
fileMode 0500
|
||||
into "bin"
|
||||
}
|
||||
|
||||
// Copy the init file
|
||||
from("target/package/linux/init/${pkgName}") {
|
||||
fileMode 0500
|
||||
into "init"
|
||||
}
|
||||
|
||||
// Copy the config files
|
||||
from("target/package/linux/conf") {
|
||||
fileType CONFIG | NOREPLACE
|
||||
fileMode 0754
|
||||
into "conf"
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Configure our RPM build task
|
||||
buildRpm {
|
||||
|
||||
arch = X86_64
|
||||
|
||||
archiveVersion = projectVersion.replace('-', '')
|
||||
archiveFileName = "${pkgName}.rpm"
|
||||
|
||||
preInstall file("${buildDir}/control/rpm/preinst")
|
||||
postInstall file("${buildDir}/control/rpm/postinst")
|
||||
preUninstall file("${buildDir}/control/rpm/prerm")
|
||||
postUninstall file("${buildDir}/control/rpm/postrm")
|
||||
|
||||
user pkgUser
|
||||
permissionGroup pkgUser
|
||||
|
||||
// Copy the system unit files
|
||||
from("${buildDir}/control/${pkgName}.service") {
|
||||
addParentDirs = false
|
||||
fileMode 0644
|
||||
into "/usr/lib/systemd/system"
|
||||
}
|
||||
|
||||
link("/etc/${pkgName}/conf", "${pkgInstallFolder}/conf")
|
||||
}
|
||||
|
||||
// Same as the buildRpm task
|
||||
buildDeb {
|
||||
|
||||
arch = "amd64"
|
||||
|
||||
archiveFileName = "${pkgName}.deb"
|
||||
|
||||
configurationFile("${pkgInstallFolder}/conf/${pkgName}.conf")
|
||||
configurationFile("${pkgInstallFolder}/conf/custom-environment-variables.yml")
|
||||
configurationFile("${pkgInstallFolder}/conf/default.yml")
|
||||
configurationFile("${pkgInstallFolder}/conf/logger.js")
|
||||
|
||||
preInstall file("${buildDir}/control/deb/preinst")
|
||||
postInstall file("${buildDir}/control/deb/postinst")
|
||||
preUninstall file("${buildDir}/control/deb/prerm")
|
||||
postUninstall file("${buildDir}/control/deb/postrm")
|
||||
|
||||
user pkgUser
|
||||
permissionGroup pkgUser
|
||||
|
||||
link("/etc/init.d/${pkgName}", "${pkgInstallFolder}/init/${pkgName}")
|
||||
link("/etc/${pkgName}/conf", "${pkgInstallFolder}/conf")
|
||||
}
|
||||
|
||||
task renameDeb(type: Copy) {
|
||||
from("${buildDir}/") {
|
||||
include '*.deb'
|
||||
destinationDir file("${buildDir}/")
|
||||
rename { String filename ->
|
||||
"${pkgName}.deb"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
task renameRpm(type: Copy) {
|
||||
from("${buildDir}/") {
|
||||
include '*.rpm'
|
||||
destinationDir file("${buildDir}/")
|
||||
rename { String filename ->
|
||||
"${pkgName}.rpm"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -34,10 +34,12 @@
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<main.dir>${basedir}/../..</main.dir>
|
||||
<pkg.name>tb-js-executor</pkg.name>
|
||||
<docker.name>tb-js-executor</docker.name>
|
||||
<pkg.unixLogFolder>/var/log/${pkg.name}</pkg.unixLogFolder>
|
||||
<pkg.installFolder>/usr/share/${pkg.name}</pkg.installFolder>
|
||||
<pkg.name>tb-js-executor</pkg.name>
|
||||
<pkg.type>js</pkg.type>
|
||||
<pkg.disabled>false</pkg.disabled>
|
||||
<pkg.process-resources.phase>process-resources</pkg.process-resources.phase>
|
||||
<pkg.package.phase>package</pkg.package.phase>
|
||||
<pkg.linux.dist>${project.build.directory}/package/linux</pkg.linux.dist>
|
||||
<pkg.win.dist>${project.build.directory}/package/windows</pkg.win.dist>
|
||||
</properties>
|
||||
@ -87,197 +89,18 @@
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-dependency-plugin</artifactId>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>copy-winsw-service</id>
|
||||
<phase>package</phase>
|
||||
<goals>
|
||||
<goal>copy</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<artifactItems>
|
||||
<artifactItem>
|
||||
<groupId>com.sun.winsw</groupId>
|
||||
<artifactId>winsw</artifactId>
|
||||
<classifier>bin</classifier>
|
||||
<type>exe</type>
|
||||
<destFileName>service.exe</destFileName>
|
||||
</artifactItem>
|
||||
</artifactItems>
|
||||
<outputDirectory>${pkg.win.dist}</outputDirectory>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-resources-plugin</artifactId>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>copy-linux-conf</id>
|
||||
<phase>process-resources</phase>
|
||||
<goals>
|
||||
<goal>copy-resources</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<outputDirectory>${pkg.linux.dist}/conf</outputDirectory>
|
||||
<resources>
|
||||
<resource>
|
||||
<directory>config</directory>
|
||||
<filtering>true</filtering>
|
||||
</resource>
|
||||
</resources>
|
||||
<filters>
|
||||
<filter>src/main/filters/unix.properties</filter>
|
||||
</filters>
|
||||
</configuration>
|
||||
</execution>
|
||||
<execution>
|
||||
<id>copy-linux-init</id>
|
||||
<phase>process-resources</phase>
|
||||
<goals>
|
||||
<goal>copy-resources</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<outputDirectory>${pkg.linux.dist}/init</outputDirectory>
|
||||
<resources>
|
||||
<resource>
|
||||
<directory>src/main/scripts/init</directory>
|
||||
<filtering>true</filtering>
|
||||
</resource>
|
||||
</resources>
|
||||
<filters>
|
||||
<filter>src/main/filters/unix.properties</filter>
|
||||
</filters>
|
||||
</configuration>
|
||||
</execution>
|
||||
<execution>
|
||||
<id>copy-win-conf</id>
|
||||
<phase>process-resources</phase>
|
||||
<goals>
|
||||
<goal>copy-resources</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<outputDirectory>${pkg.win.dist}/conf</outputDirectory>
|
||||
<resources>
|
||||
<resource>
|
||||
<directory>config</directory>
|
||||
<excludes>
|
||||
<exclude>tb-js-executor.conf</exclude>
|
||||
</excludes>
|
||||
<filtering>true</filtering>
|
||||
</resource>
|
||||
</resources>
|
||||
<filters>
|
||||
<filter>src/main/filters/windows.properties</filter>
|
||||
</filters>
|
||||
</configuration>
|
||||
</execution>
|
||||
<execution>
|
||||
<id>copy-control</id>
|
||||
<phase>process-resources</phase>
|
||||
<goals>
|
||||
<goal>copy-resources</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<outputDirectory>${project.build.directory}/control</outputDirectory>
|
||||
<resources>
|
||||
<resource>
|
||||
<directory>src/main/scripts/control</directory>
|
||||
<filtering>true</filtering>
|
||||
</resource>
|
||||
</resources>
|
||||
<filters>
|
||||
<filter>src/main/filters/unix.properties</filter>
|
||||
</filters>
|
||||
</configuration>
|
||||
</execution>
|
||||
<execution>
|
||||
<id>copy-windows-control</id>
|
||||
<phase>process-resources</phase>
|
||||
<goals>
|
||||
<goal>copy-resources</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<outputDirectory>${pkg.win.dist}</outputDirectory>
|
||||
<resources>
|
||||
<resource>
|
||||
<directory>src/main/scripts/windows</directory>
|
||||
<filtering>true</filtering>
|
||||
</resource>
|
||||
</resources>
|
||||
<filters>
|
||||
<filter>src/main/filters/windows.properties</filter>
|
||||
</filters>
|
||||
</configuration>
|
||||
</execution>
|
||||
<execution>
|
||||
<id>copy-docker-config</id>
|
||||
<phase>process-resources</phase>
|
||||
<goals>
|
||||
<goal>copy-resources</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<outputDirectory>${project.build.directory}</outputDirectory>
|
||||
<resources>
|
||||
<resource>
|
||||
<directory>docker</directory>
|
||||
<filtering>true</filtering>
|
||||
</resource>
|
||||
</resources>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.thingsboard</groupId>
|
||||
<artifactId>gradle-maven-plugin</artifactId>
|
||||
<configuration>
|
||||
<gradleProjectDirectory>${basedir}</gradleProjectDirectory>
|
||||
<tasks>
|
||||
<task>build</task>
|
||||
<task>buildDeb</task>
|
||||
<task>buildRpm</task>
|
||||
<task>renameDeb</task>
|
||||
<task>renameRpm</task>
|
||||
</tasks>
|
||||
<args>
|
||||
<arg>-PprojectBuildDir=${project.build.directory}</arg>
|
||||
<arg>-PprojectVersion=${project.version}</arg>
|
||||
<arg>-PpkgName=${pkg.name}</arg>
|
||||
<arg>-PpkgUser=${pkg.user}</arg>
|
||||
<arg>-PpkgInstallFolder=${pkg.installFolder}</arg>
|
||||
<arg>-PpkgLogFolder=${pkg.unixLogFolder}</arg>
|
||||
</args>
|
||||
</configuration>
|
||||
<executions>
|
||||
<execution>
|
||||
<phase>package</phase>
|
||||
<goals>
|
||||
<goal>invoke</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-assembly-plugin</artifactId>
|
||||
<version>3.0.0</version>
|
||||
<configuration>
|
||||
<finalName>${pkg.name}</finalName>
|
||||
<descriptors>
|
||||
<descriptor>src/main/assembly/windows.xml</descriptor>
|
||||
</descriptors>
|
||||
</configuration>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>assembly</id>
|
||||
<phase>package</phase>
|
||||
<goals>
|
||||
<goal>single</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>com.spotify</groupId>
|
||||
|
||||
@ -1,71 +0,0 @@
|
||||
<!--
|
||||
|
||||
Copyright © 2016-2020 The Thingsboard Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
|
||||
-->
|
||||
<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3 http://maven.apache.org/xsd/assembly-1.1.3.xsd">
|
||||
<id>windows</id>
|
||||
|
||||
<formats>
|
||||
<format>zip</format>
|
||||
</formats>
|
||||
|
||||
<!-- Workaround to create logs directory -->
|
||||
<fileSets>
|
||||
<fileSet>
|
||||
<directory>${pkg.win.dist}</directory>
|
||||
<outputDirectory>logs</outputDirectory>
|
||||
<excludes>
|
||||
<exclude>*/**</exclude>
|
||||
</excludes>
|
||||
</fileSet>
|
||||
<fileSet>
|
||||
<directory>${pkg.win.dist}/conf</directory>
|
||||
<outputDirectory>conf</outputDirectory>
|
||||
<lineEnding>windows</lineEnding>
|
||||
</fileSet>
|
||||
</fileSets>
|
||||
|
||||
<files>
|
||||
<file>
|
||||
<source>${pkg.win.dist}/bin/${pkg.name}.exe</source>
|
||||
<outputDirectory>bin</outputDirectory>
|
||||
<destName>${pkg.name}.exe</destName>
|
||||
</file>
|
||||
<file>
|
||||
<source>${pkg.win.dist}/service.exe</source>
|
||||
<outputDirectory/>
|
||||
<destName>${pkg.name}.exe</destName>
|
||||
</file>
|
||||
<file>
|
||||
<source>${pkg.win.dist}/service.xml</source>
|
||||
<outputDirectory/>
|
||||
<destName>${pkg.name}.xml</destName>
|
||||
<lineEnding>windows</lineEnding>
|
||||
</file>
|
||||
<file>
|
||||
<source>${pkg.win.dist}/install.bat</source>
|
||||
<outputDirectory/>
|
||||
<lineEnding>windows</lineEnding>
|
||||
</file>
|
||||
<file>
|
||||
<source>${pkg.win.dist}/uninstall.bat</source>
|
||||
<outputDirectory/>
|
||||
<lineEnding>windows</lineEnding>
|
||||
</file>
|
||||
</files>
|
||||
</assembly>
|
||||
@ -1,233 +0,0 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
|
||||
|
||||
### BEGIN INIT INFO
|
||||
# Provides: tb-js-executor
|
||||
# Required-Start: $remote_fs $syslog $network
|
||||
# Required-Stop: $remote_fs $syslog $network
|
||||
# Default-Start: 2 3 4 5
|
||||
# Default-Stop: 0 1 6
|
||||
# Short-Description: ${project.name}
|
||||
# Description: ${project.description}
|
||||
# chkconfig: 2345 99 01
|
||||
### END INIT INFO
|
||||
|
||||
[[ -n "$DEBUG" ]] && set -x
|
||||
|
||||
# Initialize variables that cannot be provided by a .conf file
|
||||
WORKING_DIR="$(pwd)"
|
||||
# shellcheck disable=SC2153
|
||||
|
||||
mainfile=${pkg.installFolder}/bin/${pkg.name}
|
||||
configfile=${pkg.name}.conf
|
||||
|
||||
# Follow symlinks to find the real script and detect init.d script
|
||||
cd "$(dirname "$0")" || exit 1
|
||||
[[ -z "$initfile" ]] && initfile=$(pwd)/$(basename "$0")
|
||||
while [[ -L "$initfile" ]]; do
|
||||
[[ "$initfile" =~ init\.d ]] && init_script=$(basename "$initfile")
|
||||
initfile=$(readlink "$initfile")
|
||||
cd "$(dirname "$initfile")" || exit 1
|
||||
initfile=$(pwd)/$(basename "$initfile")
|
||||
done
|
||||
initfolder="$( (cd "$(dirname "initfile")" && pwd -P) )"
|
||||
cd "$WORKING_DIR" || exit 1
|
||||
|
||||
# Initialize CONF_FOLDER location
|
||||
[[ -z "$CONF_FOLDER" ]] && CONF_FOLDER="${pkg.installFolder}/conf"
|
||||
|
||||
# shellcheck source=/dev/null
|
||||
[[ -r "${CONF_FOLDER}/${configfile}" ]] && source "${CONF_FOLDER}/${configfile}"
|
||||
|
||||
# Initialize PID/LOG locations if they weren't provided by the config file
|
||||
[[ -z "$PID_FOLDER" ]] && PID_FOLDER="/var/run"
|
||||
[[ -z "$LOG_FOLDER" ]] && LOG_FOLDER="${pkg.unixLogFolder}"
|
||||
! [[ "$PID_FOLDER" == /* ]] && PID_FOLDER="$(dirname "$mainfile")"/"$PID_FOLDER"
|
||||
! [[ "$LOG_FOLDER" == /* ]] && LOG_FOLDER="$(dirname "$mainfile")"/"$LOG_FOLDER"
|
||||
! [[ -x "$PID_FOLDER" ]] && PID_FOLDER="/tmp"
|
||||
! [[ -x "$LOG_FOLDER" ]] && LOG_FOLDER="/tmp"
|
||||
|
||||
# Set up defaults
|
||||
[[ -z "$MODE" ]] && MODE="auto" # modes are "auto", "service" or "run"
|
||||
[[ -z "$USE_START_STOP_DAEMON" ]] && USE_START_STOP_DAEMON="true"
|
||||
|
||||
# Create an identity for log/pid files
|
||||
if [[ -z "$identity" ]]; then
|
||||
if [[ -n "$init_script" ]]; then
|
||||
identity="${init_script}"
|
||||
else
|
||||
identity=$(basename "${initfile%.*}")_${initfolder//\//}
|
||||
fi
|
||||
fi
|
||||
|
||||
# Initialize log file name if not provided by the config file
|
||||
[[ -z "$LOG_FILENAME" ]] && LOG_FILENAME="${identity}.log"
|
||||
|
||||
# ANSI Colors
|
||||
echoRed() { echo $'\e[0;31m'"$1"$'\e[0m'; }
|
||||
echoGreen() { echo $'\e[0;32m'"$1"$'\e[0m'; }
|
||||
echoYellow() { echo $'\e[0;33m'"$1"$'\e[0m'; }
|
||||
|
||||
# Utility functions
|
||||
checkPermissions() {
|
||||
touch "$pid_file" &> /dev/null || { echoRed "Operation not permitted (cannot access pid file)"; return 4; }
|
||||
touch "$log_file" &> /dev/null || { echoRed "Operation not permitted (cannot access log file)"; return 4; }
|
||||
}
|
||||
|
||||
isRunning() {
|
||||
ps -p "$1" &> /dev/null
|
||||
}
|
||||
|
||||
await_file() {
|
||||
end=$(date +%s)
|
||||
let "end+=10"
|
||||
while [[ ! -s "$1" ]]
|
||||
do
|
||||
now=$(date +%s)
|
||||
if [[ $now -ge $end ]]; then
|
||||
break
|
||||
fi
|
||||
sleep 1
|
||||
done
|
||||
}
|
||||
|
||||
# Determine the script mode
|
||||
action="run"
|
||||
if [[ "$MODE" == "auto" && -n "$init_script" ]] || [[ "$MODE" == "service" ]]; then
|
||||
action="$1"
|
||||
shift
|
||||
fi
|
||||
|
||||
# Build the pid and log filenames
|
||||
if [[ "$identity" == "$init_script" ]] || [[ "$identity" == "$APP_NAME" ]]; then
|
||||
PID_FOLDER="$PID_FOLDER/${identity}"
|
||||
pid_subfolder=$PID_FOLDER
|
||||
fi
|
||||
pid_file="$PID_FOLDER/${identity}.pid"
|
||||
log_file="$LOG_FOLDER/$LOG_FILENAME"
|
||||
|
||||
# Determine the user to run as if we are root
|
||||
# shellcheck disable=SC2012
|
||||
[[ $(id -u) == "0" ]] && run_user=$(ls -ld "$mainfile" | awk '{print $3}')
|
||||
|
||||
arguments=($RUN_ARGS "$@")
|
||||
|
||||
# Action functions
|
||||
start() {
|
||||
if [[ -f "$pid_file" ]]; then
|
||||
pid=$(cat "$pid_file")
|
||||
isRunning "$pid" && { echoYellow "Already running [$pid]"; return 0; }
|
||||
fi
|
||||
do_start "$@"
|
||||
}
|
||||
|
||||
do_start() {
|
||||
working_dir=$(dirname "$mainfile")
|
||||
pushd "$working_dir" > /dev/null
|
||||
mkdir -p "$PID_FOLDER" &> /dev/null
|
||||
if [[ -n "$run_user" ]]; then
|
||||
checkPermissions || return $?
|
||||
if [[ -z "$pid_subfolder" ]]; then
|
||||
chown "$run_user" "$pid_subfolder"
|
||||
fi
|
||||
chown "$run_user" "$pid_file"
|
||||
chown "$run_user" "$log_file"
|
||||
if [ $USE_START_STOP_DAEMON = true ] && type start-stop-daemon > /dev/null 2>&1; then
|
||||
start-stop-daemon --start --quiet \
|
||||
--chuid "$run_user" \
|
||||
--name "$identity" \
|
||||
--make-pidfile --pidfile "$pid_file" \
|
||||
--background --no-close \
|
||||
--startas "$mainfile" \
|
||||
--chdir "$working_dir" \
|
||||
-- "${arguments[@]}" \
|
||||
>> "$log_file" 2>&1
|
||||
await_file "$pid_file"
|
||||
else
|
||||
su -s /bin/sh -c "$mainfile $(printf "\"%s\" " "${arguments[@]}") >> \"$log_file\" 2>&1 & echo \$!" "$run_user" > "$pid_file"
|
||||
fi
|
||||
pid=$(cat "$pid_file")
|
||||
else
|
||||
checkPermissions || return $?
|
||||
"$mainfile" "${arguments[@]}" >> "$log_file" 2>&1 &
|
||||
pid=$!
|
||||
disown $pid
|
||||
echo "$pid" > "$pid_file"
|
||||
fi
|
||||
[[ -z $pid ]] && { echoRed "Failed to start"; return 1; }
|
||||
echoGreen "Started [$pid]"
|
||||
}
|
||||
|
||||
stop() {
|
||||
working_dir=$(dirname "$mainfile")
|
||||
pushd "$working_dir" > /dev/null
|
||||
[[ -f $pid_file ]] || { echoYellow "Not running (pidfile not found)"; return 0; }
|
||||
pid=$(cat "$pid_file")
|
||||
isRunning "$pid" || { echoYellow "Not running (process ${pid}). Removing stale pid file."; rm -f "$pid_file"; return 0; }
|
||||
do_stop "$pid" "$pid_file"
|
||||
}
|
||||
|
||||
do_stop() {
|
||||
kill -2 "$1" &> /dev/null || { echoRed "Unable to kill process $1"; return 1; }
|
||||
for i in $(seq 1 60); do
|
||||
isRunning "$1" || { echoGreen "Stopped [$1]"; rm -f "$2"; return 0; }
|
||||
[[ $i -eq 30 ]] && kill -9 "$1" &> /dev/null
|
||||
sleep 1
|
||||
done
|
||||
echoRed "Unable to kill process $1";
|
||||
return 1;
|
||||
}
|
||||
|
||||
restart() {
|
||||
stop && start
|
||||
}
|
||||
|
||||
orce_reload() {
|
||||
working_dir=$(dirname "$mainfile")
|
||||
pushd "$working_dir" > /dev/null
|
||||
[[ -f $pid_file ]] || { echoRed "Not running (pidfile not found)"; return 7; }
|
||||
pid=$(cat "$pid_file")
|
||||
rm -f "$pid_file"
|
||||
isRunning "$pid" || { echoRed "Not running (process ${pid} not found)"; return 7; }
|
||||
do_stop "$pid" "$pid_file"
|
||||
do_start
|
||||
}
|
||||
|
||||
status() {
|
||||
working_dir=$(dirname "$mainfile")
|
||||
pushd "$working_dir" > /dev/null
|
||||
[[ -f "$pid_file" ]] || { echoRed "Not running"; return 3; }
|
||||
pid=$(cat "$pid_file")
|
||||
isRunning "$pid" || { echoRed "Not running (process ${pid} not found)"; return 1; }
|
||||
echoGreen "Running [$pid]"
|
||||
return 0
|
||||
}
|
||||
|
||||
run() {
|
||||
pushd "$(dirname "$mainfile")" > /dev/null
|
||||
"$mainfile" "${arguments[@]}"
|
||||
result=$?
|
||||
popd > /dev/null
|
||||
return "$result"
|
||||
}
|
||||
|
||||
# Call the appropriate action function
|
||||
case "$action" in
|
||||
start)
|
||||
start "$@"; exit $?;;
|
||||
stop)
|
||||
stop "$@"; exit $?;;
|
||||
restart)
|
||||
restart "$@"; exit $?;;
|
||||
force-reload)
|
||||
force_reload "$@"; exit $?;;
|
||||
status)
|
||||
status "$@"; exit $?;;
|
||||
run)
|
||||
run "$@"; exit $?;;
|
||||
*)
|
||||
echo "Usage: $0 {start|stop|restart|force-reload|status|run}"; exit 1;
|
||||
esac
|
||||
|
||||
exit 0
|
||||
@ -1,29 +0,0 @@
|
||||
<!--
|
||||
|
||||
Copyright © 2016-2018 The Thingsboard Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
|
||||
-->
|
||||
<service>
|
||||
<id>${pkg.name}</id>
|
||||
<name>${project.name}</name>
|
||||
<description>${project.description}</description>
|
||||
<workingdirectory>%BASE%\bin</workingdirectory>
|
||||
<logpath>${pkg.winWrapperLogFolder}</logpath>
|
||||
<logmode>rotate</logmode>
|
||||
<env name="NODE_CONFIG_DIR" value="%BASE%\conf" />
|
||||
<env name="LOG_FOLDER" value="${pkg.winWrapperLogFolder}" />
|
||||
<env name="NODE_ENV" value="production" />
|
||||
<executable>%BASE%\bin\${pkg.name}.exe</executable>
|
||||
</service>
|
||||
@ -35,9 +35,13 @@
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<main.dir>${basedir}/../..</main.dir>
|
||||
<pkg.name>tb-web-ui</pkg.name>
|
||||
<pkg.type>js</pkg.type>
|
||||
<docker.name>tb-web-ui</docker.name>
|
||||
<pkg.unixLogFolder>/var/log/${pkg.name}</pkg.unixLogFolder>
|
||||
<pkg.installFolder>/usr/share/${pkg.name}</pkg.installFolder>
|
||||
<pkg.name>tb-web-ui</pkg.name>
|
||||
<pkg.type>js</pkg.type>
|
||||
<pkg.disabled>false</pkg.disabled>
|
||||
<pkg.process-resources.phase>process-resources</pkg.process-resources.phase>
|
||||
<pkg.package.phase>package</pkg.package.phase>
|
||||
<pkg.linux.dist>${project.build.directory}/package/linux</pkg.linux.dist>
|
||||
<pkg.win.dist>${project.build.directory}/package/windows</pkg.win.dist>
|
||||
</properties>
|
||||
@ -133,176 +137,192 @@
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-dependency-plugin</artifactId>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-resources-plugin</artifactId>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>copy-linux-conf</id>
|
||||
<phase>process-resources</phase>
|
||||
<goals>
|
||||
<goal>copy-resources</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<outputDirectory>${pkg.linux.dist}/conf</outputDirectory>
|
||||
<resources>
|
||||
<resource>
|
||||
<directory>config</directory>
|
||||
<filtering>true</filtering>
|
||||
</resource>
|
||||
</resources>
|
||||
<filters>
|
||||
<filter>src/main/filters/unix.properties</filter>
|
||||
</filters>
|
||||
</configuration>
|
||||
</execution>
|
||||
<execution>
|
||||
<id>copy-linux-init</id>
|
||||
<phase>process-resources</phase>
|
||||
<goals>
|
||||
<goal>copy-resources</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<outputDirectory>${pkg.linux.dist}/init</outputDirectory>
|
||||
<resources>
|
||||
<resource>
|
||||
<directory>src/main/scripts/init</directory>
|
||||
<filtering>true</filtering>
|
||||
</resource>
|
||||
</resources>
|
||||
<filters>
|
||||
<filter>src/main/filters/unix.properties</filter>
|
||||
</filters>
|
||||
</configuration>
|
||||
</execution>
|
||||
<execution>
|
||||
<id>copy-win-conf</id>
|
||||
<phase>process-resources</phase>
|
||||
<goals>
|
||||
<goal>copy-resources</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<outputDirectory>${pkg.win.dist}/conf</outputDirectory>
|
||||
<resources>
|
||||
<resource>
|
||||
<directory>config</directory>
|
||||
<excludes>
|
||||
<exclude>tb-web-ui.conf</exclude>
|
||||
</excludes>
|
||||
<filtering>true</filtering>
|
||||
</resource>
|
||||
</resources>
|
||||
<filters>
|
||||
<filter>src/main/filters/windows.properties</filter>
|
||||
</filters>
|
||||
</configuration>
|
||||
</execution>
|
||||
<execution>
|
||||
<id>copy-control</id>
|
||||
<phase>process-resources</phase>
|
||||
<goals>
|
||||
<goal>copy-resources</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<outputDirectory>${project.build.directory}/control</outputDirectory>
|
||||
<resources>
|
||||
<resource>
|
||||
<directory>src/main/scripts/control</directory>
|
||||
<filtering>true</filtering>
|
||||
</resource>
|
||||
</resources>
|
||||
<filters>
|
||||
<filter>src/main/filters/unix.properties</filter>
|
||||
</filters>
|
||||
</configuration>
|
||||
</execution>
|
||||
<execution>
|
||||
<id>copy-windows-control</id>
|
||||
<phase>process-resources</phase>
|
||||
<goals>
|
||||
<goal>copy-resources</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<outputDirectory>${pkg.win.dist}</outputDirectory>
|
||||
<resources>
|
||||
<resource>
|
||||
<directory>src/main/scripts/windows</directory>
|
||||
<filtering>true</filtering>
|
||||
</resource>
|
||||
</resources>
|
||||
<filters>
|
||||
<filter>src/main/filters/windows.properties</filter>
|
||||
</filters>
|
||||
</configuration>
|
||||
</execution>
|
||||
<execution>
|
||||
<id>copy-docker-config</id>
|
||||
<phase>process-resources</phase>
|
||||
<goals>
|
||||
<goal>copy-resources</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<outputDirectory>${project.build.directory}</outputDirectory>
|
||||
<resources>
|
||||
<resource>
|
||||
<directory>docker</directory>
|
||||
<filtering>true</filtering>
|
||||
</resource>
|
||||
</resources>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.thingsboard</groupId>
|
||||
<artifactId>gradle-maven-plugin</artifactId>
|
||||
<configuration>
|
||||
<gradleProjectDirectory>${basedir}</gradleProjectDirectory>
|
||||
<tasks>
|
||||
<task>build</task>
|
||||
<task>buildDeb</task>
|
||||
<task>buildRpm</task>
|
||||
<task>renameDeb</task>
|
||||
<task>renameRpm</task>
|
||||
</tasks>
|
||||
<args>
|
||||
<arg>-PprojectBuildDir=${project.build.directory}</arg>
|
||||
<arg>-PprojectVersion=${project.version}</arg>
|
||||
<arg>-PpkgName=${pkg.name}</arg>
|
||||
<arg>-PpkgUser=${pkg.user}</arg>
|
||||
<arg>-PpkgInstallFolder=${pkg.installFolder}</arg>
|
||||
<arg>-PpkgLogFolder=${pkg.unixLogFolder}</arg>
|
||||
</args>
|
||||
</configuration>
|
||||
<executions>
|
||||
<execution>
|
||||
<phase>package</phase>
|
||||
<goals>
|
||||
<goal>invoke</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-assembly-plugin</artifactId>
|
||||
<version>3.0.0</version>
|
||||
<configuration>
|
||||
<finalName>${pkg.name}</finalName>
|
||||
<descriptors>
|
||||
<descriptor>src/main/assembly/windows.xml</descriptor>
|
||||
</descriptors>
|
||||
</configuration>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>assembly</id>
|
||||
<phase>package</phase>
|
||||
<goals>
|
||||
<goal>single</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<!-- <plugin>-->
|
||||
<!-- <groupId>org.apache.maven.plugins</groupId>-->
|
||||
<!-- <artifactId>maven-resources-plugin</artifactId>-->
|
||||
<!-- <executions>-->
|
||||
<!-- <execution>-->
|
||||
<!-- <id>copy-linux-conf</id>-->
|
||||
<!-- <phase>process-resources</phase>-->
|
||||
<!-- <goals>-->
|
||||
<!-- <goal>copy-resources</goal>-->
|
||||
<!-- </goals>-->
|
||||
<!-- <configuration>-->
|
||||
<!-- <outputDirectory>${pkg.linux.dist}/conf</outputDirectory>-->
|
||||
<!-- <resources>-->
|
||||
<!-- <resource>-->
|
||||
<!-- <directory>config</directory>-->
|
||||
<!-- <filtering>true</filtering>-->
|
||||
<!-- </resource>-->
|
||||
<!-- </resources>-->
|
||||
<!-- <filters>-->
|
||||
<!-- <filter>src/main/filters/unix.properties</filter>-->
|
||||
<!-- </filters>-->
|
||||
<!-- </configuration>-->
|
||||
<!-- </execution>-->
|
||||
<!-- <execution>-->
|
||||
<!-- <id>copy-linux-init</id>-->
|
||||
<!-- <phase>process-resources</phase>-->
|
||||
<!-- <goals>-->
|
||||
<!-- <goal>copy-resources</goal>-->
|
||||
<!-- </goals>-->
|
||||
<!-- <configuration>-->
|
||||
<!-- <outputDirectory>${pkg.linux.dist}/init</outputDirectory>-->
|
||||
<!-- <resources>-->
|
||||
<!-- <resource>-->
|
||||
<!-- <directory>src/main/scripts/init</directory>-->
|
||||
<!-- <filtering>true</filtering>-->
|
||||
<!-- </resource>-->
|
||||
<!-- </resources>-->
|
||||
<!-- <filters>-->
|
||||
<!-- <filter>src/main/filters/unix.properties</filter>-->
|
||||
<!-- </filters>-->
|
||||
<!-- </configuration>-->
|
||||
<!-- </execution>-->
|
||||
<!-- <execution>-->
|
||||
<!-- <id>copy-win-conf</id>-->
|
||||
<!-- <phase>process-resources</phase>-->
|
||||
<!-- <goals>-->
|
||||
<!-- <goal>copy-resources</goal>-->
|
||||
<!-- </goals>-->
|
||||
<!-- <configuration>-->
|
||||
<!-- <outputDirectory>${pkg.win.dist}/conf</outputDirectory>-->
|
||||
<!-- <resources>-->
|
||||
<!-- <resource>-->
|
||||
<!-- <directory>config</directory>-->
|
||||
<!-- <excludes>-->
|
||||
<!-- <exclude>tb-web-ui.conf</exclude>-->
|
||||
<!-- </excludes>-->
|
||||
<!-- <filtering>true</filtering>-->
|
||||
<!-- </resource>-->
|
||||
<!-- </resources>-->
|
||||
<!-- <filters>-->
|
||||
<!-- <filter>src/main/filters/windows.properties</filter>-->
|
||||
<!-- </filters>-->
|
||||
<!-- </configuration>-->
|
||||
<!-- </execution>-->
|
||||
<!-- <execution>-->
|
||||
<!-- <id>copy-control</id>-->
|
||||
<!-- <phase>process-resources</phase>-->
|
||||
<!-- <goals>-->
|
||||
<!-- <goal>copy-resources</goal>-->
|
||||
<!-- </goals>-->
|
||||
<!-- <configuration>-->
|
||||
<!-- <outputDirectory>${project.build.directory}/control</outputDirectory>-->
|
||||
<!-- <resources>-->
|
||||
<!-- <resource>-->
|
||||
<!-- <directory>src/main/scripts/control</directory>-->
|
||||
<!-- <filtering>true</filtering>-->
|
||||
<!-- </resource>-->
|
||||
<!-- </resources>-->
|
||||
<!-- <filters>-->
|
||||
<!-- <filter>src/main/filters/unix.properties</filter>-->
|
||||
<!-- </filters>-->
|
||||
<!-- </configuration>-->
|
||||
<!-- </execution>-->
|
||||
<!-- <execution>-->
|
||||
<!-- <id>copy-windows-control</id>-->
|
||||
<!-- <phase>process-resources</phase>-->
|
||||
<!-- <goals>-->
|
||||
<!-- <goal>copy-resources</goal>-->
|
||||
<!-- </goals>-->
|
||||
<!-- <configuration>-->
|
||||
<!-- <outputDirectory>${pkg.win.dist}</outputDirectory>-->
|
||||
<!-- <resources>-->
|
||||
<!-- <resource>-->
|
||||
<!-- <directory>src/main/scripts/windows</directory>-->
|
||||
<!-- <filtering>true</filtering>-->
|
||||
<!-- </resource>-->
|
||||
<!-- </resources>-->
|
||||
<!-- <filters>-->
|
||||
<!-- <filter>src/main/filters/windows.properties</filter>-->
|
||||
<!-- </filters>-->
|
||||
<!-- </configuration>-->
|
||||
<!-- </execution>-->
|
||||
<!-- <execution>-->
|
||||
<!-- <id>copy-docker-config</id>-->
|
||||
<!-- <phase>process-resources</phase>-->
|
||||
<!-- <goals>-->
|
||||
<!-- <goal>copy-resources</goal>-->
|
||||
<!-- </goals>-->
|
||||
<!-- <configuration>-->
|
||||
<!-- <outputDirectory>${project.build.directory}</outputDirectory>-->
|
||||
<!-- <resources>-->
|
||||
<!-- <resource>-->
|
||||
<!-- <directory>docker</directory>-->
|
||||
<!-- <filtering>true</filtering>-->
|
||||
<!-- </resource>-->
|
||||
<!-- </resources>-->
|
||||
<!-- </configuration>-->
|
||||
<!-- </execution>-->
|
||||
<!-- </executions>-->
|
||||
<!-- </plugin>-->
|
||||
<!-- <plugin>-->
|
||||
<!-- <groupId>org.thingsboard</groupId>-->
|
||||
<!-- <artifactId>gradle-maven-plugin</artifactId>-->
|
||||
<!-- <configuration>-->
|
||||
<!-- <gradleProjectDirectory>${basedir}</gradleProjectDirectory>-->
|
||||
<!-- <tasks>-->
|
||||
<!-- <task>build</task>-->
|
||||
<!-- <task>buildDeb</task>-->
|
||||
<!-- <task>buildRpm</task>-->
|
||||
<!-- <task>renameDeb</task>-->
|
||||
<!-- <task>renameRpm</task>-->
|
||||
<!-- </tasks>-->
|
||||
<!-- <args>-->
|
||||
<!-- <arg>-PprojectBuildDir=${project.build.directory}</arg>-->
|
||||
<!-- <arg>-PprojectVersion=${project.version}</arg>-->
|
||||
<!-- <arg>-PpkgName=${pkg.name}</arg>-->
|
||||
<!-- <arg>-PpkgUser=${pkg.user}</arg>-->
|
||||
<!-- <arg>-PpkgInstallFolder=${pkg.installFolder}</arg>-->
|
||||
<!-- <arg>-PpkgLogFolder=${pkg.unixLogFolder}</arg>-->
|
||||
<!-- </args>-->
|
||||
<!-- </configuration>-->
|
||||
<!-- <executions>-->
|
||||
<!-- <execution>-->
|
||||
<!-- <phase>package</phase>-->
|
||||
<!-- <goals>-->
|
||||
<!-- <goal>invoke</goal>-->
|
||||
<!-- </goals>-->
|
||||
<!-- </execution>-->
|
||||
<!-- </executions>-->
|
||||
<!-- </plugin>-->
|
||||
<!-- <plugin>-->
|
||||
<!-- <groupId>org.apache.maven.plugins</groupId>-->
|
||||
<!-- <artifactId>maven-assembly-plugin</artifactId>-->
|
||||
<!-- <version>3.0.0</version>-->
|
||||
<!-- <configuration>-->
|
||||
<!-- <finalName>${pkg.name}</finalName>-->
|
||||
<!-- <descriptors>-->
|
||||
<!-- <descriptor>../../packaging/js/assembly/windows.xml</descriptor>-->
|
||||
<!-- </descriptors>-->
|
||||
<!-- </configuration>-->
|
||||
<!-- <executions>-->
|
||||
<!-- <execution>-->
|
||||
<!-- <id>assembly</id>-->
|
||||
<!-- <phase>package</phase>-->
|
||||
<!-- <goals>-->
|
||||
<!-- <goal>single</goal>-->
|
||||
<!-- </goals>-->
|
||||
<!-- </execution>-->
|
||||
<!-- </executions>-->
|
||||
<!-- </plugin>-->
|
||||
<plugin>
|
||||
<groupId>com.spotify</groupId>
|
||||
<artifactId>dockerfile-maven-plugin</artifactId>
|
||||
|
||||
@ -1,6 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
chown -R ${pkg.user}: ${pkg.logFolder}
|
||||
chown -R ${pkg.user}: ${pkg.installFolder}
|
||||
update-rc.d ${pkg.name} defaults
|
||||
|
||||
@ -1,3 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
update-rc.d -f ${pkg.name} remove
|
||||
@ -1,18 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
if ! getent group ${pkg.user} >/dev/null; then
|
||||
addgroup --system ${pkg.user}
|
||||
fi
|
||||
|
||||
if ! getent passwd ${pkg.user} >/dev/null; then
|
||||
adduser --quiet \
|
||||
--system \
|
||||
--ingroup ${pkg.user} \
|
||||
--quiet \
|
||||
--disabled-login \
|
||||
--disabled-password \
|
||||
--home ${pkg.installFolder} \
|
||||
--no-create-home \
|
||||
-gecos "Thingsboard application" \
|
||||
${pkg.user}
|
||||
fi
|
||||
@ -1,5 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
if [ -e /var/run/${pkg.name}/${pkg.name}.pid ]; then
|
||||
service ${pkg.name} stop
|
||||
fi
|
||||
@ -1,9 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
chown -R ${pkg.user}: ${pkg.logFolder}
|
||||
chown -R ${pkg.user}: ${pkg.installFolder}
|
||||
|
||||
if [ $1 -eq 1 ] ; then
|
||||
# Initial installation
|
||||
systemctl --no-reload enable ${pkg.name}.service >/dev/null 2>&1 || :
|
||||
fi
|
||||
@ -1,11 +0,0 @@
|
||||
[Unit]
|
||||
Description=${pkg.name}
|
||||
After=syslog.target
|
||||
|
||||
[Service]
|
||||
User=${pkg.user}
|
||||
ExecStart=${pkg.installFolder}/init/${pkg.name}
|
||||
SuccessExitStatus=143
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
@ -1,31 +0,0 @@
|
||||
@REM
|
||||
@REM Copyright © 2016-2018 The Thingsboard Authors
|
||||
@REM
|
||||
@REM Licensed under the Apache License, Version 2.0 (the "License");
|
||||
@REM you may not use this file except in compliance with the License.
|
||||
@REM You may obtain a copy of the License at
|
||||
@REM
|
||||
@REM http://www.apache.org/licenses/LICENSE-2.0
|
||||
@REM
|
||||
@REM Unless required by applicable law or agreed to in writing, software
|
||||
@REM distributed under the License is distributed on an "AS IS" BASIS,
|
||||
@REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
@REM See the License for the specific language governing permissions and
|
||||
@REM limitations under the License.
|
||||
@REM
|
||||
|
||||
@ECHO OFF
|
||||
|
||||
setlocal ENABLEEXTENSIONS
|
||||
|
||||
@ECHO Installing ${pkg.name} ...
|
||||
|
||||
SET BASE=%~dp0
|
||||
|
||||
"%BASE%"${pkg.name}.exe install
|
||||
|
||||
@ECHO ${pkg.name} installed successfully!
|
||||
|
||||
GOTO END
|
||||
|
||||
:END
|
||||
@ -1,25 +0,0 @@
|
||||
@REM
|
||||
@REM Copyright © 2016-2018 The Thingsboard Authors
|
||||
@REM
|
||||
@REM Licensed under the Apache License, Version 2.0 (the "License");
|
||||
@REM you may not use this file except in compliance with the License.
|
||||
@REM You may obtain a copy of the License at
|
||||
@REM
|
||||
@REM http://www.apache.org/licenses/LICENSE-2.0
|
||||
@REM
|
||||
@REM Unless required by applicable law or agreed to in writing, software
|
||||
@REM distributed under the License is distributed on an "AS IS" BASIS,
|
||||
@REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
@REM See the License for the specific language governing permissions and
|
||||
@REM limitations under the License.
|
||||
@REM
|
||||
|
||||
@ECHO OFF
|
||||
|
||||
@ECHO Stopping ${pkg.name} ...
|
||||
net stop ${pkg.name}
|
||||
|
||||
@ECHO Uninstalling ${pkg.name} ...
|
||||
"%~dp0"${pkg.name}.exe uninstall
|
||||
|
||||
@ECHO DONE.
|
||||
@ -1 +0,0 @@
|
||||
pkg.logFolder=${pkg.unixLogFolder}
|
||||
@ -1,2 +0,0 @@
|
||||
pkg.logFolder=${BASE}\\logs
|
||||
pkg.winWrapperLogFolder=%BASE%\\logs
|
||||
@ -47,26 +47,29 @@ ospackage {
|
||||
permissionGroup pkgUser
|
||||
|
||||
// Copy the executable file
|
||||
from("target/package/linux/bin/${pkgName}") {
|
||||
from("${buildDir}/package/linux/bin/${pkgName}") {
|
||||
fileMode 0500
|
||||
into "bin"
|
||||
}
|
||||
|
||||
// Copy the init file
|
||||
from("target/package/linux/init/${pkgName}") {
|
||||
from("${buildDir}/package/linux/init/template") {
|
||||
fileMode 0500
|
||||
into "init"
|
||||
rename { String filename ->
|
||||
"${pkgName}"
|
||||
}
|
||||
}
|
||||
|
||||
// Copy the config files
|
||||
from("target/package/linux/conf") {
|
||||
from("${buildDir}/package/linux/conf") {
|
||||
fileType CONFIG | NOREPLACE
|
||||
fileMode 0754
|
||||
into "conf"
|
||||
}
|
||||
|
||||
// Copy web files
|
||||
from("target/web") {
|
||||
from("${buildDir}/web") {
|
||||
into "web"
|
||||
}
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
|
||||
|
||||
### BEGIN INIT INFO
|
||||
# Provides: tb-web-ui
|
||||
# Provides: ${pkg.name}
|
||||
# Required-Start: $remote_fs $syslog $network
|
||||
# Required-Stop: $remote_fs $syslog $network
|
||||
# Default-Start: 2 3 4 5
|
||||
@ -1,6 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
if [ $1 -ge 1 ] ; then
|
||||
# Package upgrade, not uninstall
|
||||
systemctl try-restart ${pkg.name}.service >/dev/null 2>&1 || :
|
||||
fi
|
||||
@ -1,6 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
getent group ${pkg.user} >/dev/null || groupadd -r ${pkg.user}
|
||||
getent passwd ${pkg.user} >/dev/null || \
|
||||
useradd -d ${pkg.installFolder} -g ${pkg.user} -M -r ${pkg.user} -s /sbin/nologin \
|
||||
-c "Thingsboard application"
|
||||
@ -1,6 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
if [ $1 -eq 0 ] ; then
|
||||
# Package removal, not upgrade
|
||||
systemctl --no-reload disable --now ${pkg.name}.service > /dev/null 2>&1 || :
|
||||
fi
|
||||
90
pom.xml
90
pom.xml
@ -34,6 +34,8 @@
|
||||
<pkg.package.phase>none</pkg.package.phase>
|
||||
<pkg.user>thingsboard</pkg.user>
|
||||
<pkg.implementationTitle>${project.name}</pkg.implementationTitle>
|
||||
<pkg.unixLogFolder>/var/log/${pkg.name}</pkg.unixLogFolder>
|
||||
<pkg.installFolder>/usr/share/${pkg.name}</pkg.installFolder>
|
||||
<spring-boot.version>2.2.6.RELEASE</spring-boot.version>
|
||||
<spring-oauth2.version>2.1.2.RELEASE</spring-oauth2.version>
|
||||
<spring.version>5.2.6.RELEASE</spring.version>
|
||||
@ -184,7 +186,45 @@
|
||||
</resource>
|
||||
</resources>
|
||||
<filters>
|
||||
<filter>${main.dir}/packaging/filters/unix.properties</filter>
|
||||
<filter>${main.dir}/packaging/${pkg.type}/filters/unix.properties</filter>
|
||||
</filters>
|
||||
</configuration>
|
||||
</execution>
|
||||
<execution>
|
||||
<id>copy-linux-conf</id>
|
||||
<phase>${pkg.process-resources.phase}</phase>
|
||||
<goals>
|
||||
<goal>copy-resources</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<outputDirectory>${pkg.linux.dist}/conf</outputDirectory>
|
||||
<resources>
|
||||
<resource>
|
||||
<directory>config</directory>
|
||||
<filtering>true</filtering>
|
||||
</resource>
|
||||
</resources>
|
||||
<filters>
|
||||
<filter>${main.dir}/packaging/${pkg.type}/filters/unix.properties</filter>
|
||||
</filters>
|
||||
</configuration>
|
||||
</execution>
|
||||
<execution>
|
||||
<id>copy-linux-init</id>
|
||||
<phase>${pkg.process-resources.phase}</phase>
|
||||
<goals>
|
||||
<goal>copy-resources</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<outputDirectory>${pkg.linux.dist}/init</outputDirectory>
|
||||
<resources>
|
||||
<resource>
|
||||
<directory>${main.dir}/packaging/${pkg.type}/scripts/init</directory>
|
||||
<filtering>true</filtering>
|
||||
</resource>
|
||||
</resources>
|
||||
<filters>
|
||||
<filter>${main.dir}/packaging/${pkg.type}/filters/unix.properties</filter>
|
||||
</filters>
|
||||
</configuration>
|
||||
</execution>
|
||||
@ -207,13 +247,13 @@
|
||||
<resource>
|
||||
<directory>src/main/conf</directory>
|
||||
<excludes>
|
||||
<exclude>thingsboard.conf</exclude>
|
||||
<exclude>${pkg.name}.conf</exclude>
|
||||
</excludes>
|
||||
<filtering>true</filtering>
|
||||
</resource>
|
||||
</resources>
|
||||
<filters>
|
||||
<filter>${main.dir}/packaging/filters/windows.properties</filter>
|
||||
<filter>${main.dir}/packaging/${pkg.type}/filters/windows.properties</filter>
|
||||
</filters>
|
||||
</configuration>
|
||||
</execution>
|
||||
@ -227,12 +267,12 @@
|
||||
<outputDirectory>${project.build.directory}/control</outputDirectory>
|
||||
<resources>
|
||||
<resource>
|
||||
<directory>${main.dir}/packaging/scripts/control</directory>
|
||||
<directory>${main.dir}/packaging/${pkg.type}/scripts/control</directory>
|
||||
<filtering>true</filtering>
|
||||
</resource>
|
||||
</resources>
|
||||
<filters>
|
||||
<filter>${main.dir}/packaging/filters/unix.properties</filter>
|
||||
<filter>${main.dir}/packaging/${pkg.type}/filters/unix.properties</filter>
|
||||
</filters>
|
||||
</configuration>
|
||||
</execution>
|
||||
@ -246,7 +286,7 @@
|
||||
<outputDirectory>${project.build.directory}/bin/install</outputDirectory>
|
||||
<resources>
|
||||
<resource>
|
||||
<directory>${main.dir}/packaging/scripts/install</directory>
|
||||
<directory>${main.dir}/packaging/${pkg.type}/scripts/install</directory>
|
||||
<includes>
|
||||
<include>**/*.sh</include>
|
||||
<include>**/*.xml</include>
|
||||
@ -255,7 +295,7 @@
|
||||
</resource>
|
||||
</resources>
|
||||
<filters>
|
||||
<filter>${main.dir}/packaging/filters/unix.properties</filter>
|
||||
<filter>${main.dir}/packaging/${pkg.type}/filters/unix.properties</filter>
|
||||
</filters>
|
||||
</configuration>
|
||||
</execution>
|
||||
@ -269,12 +309,12 @@
|
||||
<outputDirectory>${pkg.win.dist}</outputDirectory>
|
||||
<resources>
|
||||
<resource>
|
||||
<directory>${main.dir}/packaging/scripts/windows</directory>
|
||||
<directory>${main.dir}/packaging/${pkg.type}/scripts/windows</directory>
|
||||
<filtering>true</filtering>
|
||||
</resource>
|
||||
</resources>
|
||||
<filters>
|
||||
<filter>${main.dir}/packaging/filters/windows.properties</filter>
|
||||
<filter>${main.dir}/packaging/${pkg.type}/filters/windows.properties</filter>
|
||||
</filters>
|
||||
</configuration>
|
||||
</execution>
|
||||
@ -288,7 +328,7 @@
|
||||
<outputDirectory>${pkg.win.dist}/install</outputDirectory>
|
||||
<resources>
|
||||
<resource>
|
||||
<directory>${main.dir}/packaging/scripts/install</directory>
|
||||
<directory>${main.dir}/packaging/${pkg.type}/scripts/install</directory>
|
||||
<includes>
|
||||
<include>logback.xml</include>
|
||||
</includes>
|
||||
@ -296,7 +336,7 @@
|
||||
</resource>
|
||||
</resources>
|
||||
<filters>
|
||||
<filter>${main.dir}/packaging/filters/windows.properties</filter>
|
||||
<filter>${main.dir}/packaging/${pkg.type}/filters/windows.properties</filter>
|
||||
</filters>
|
||||
</configuration>
|
||||
</execution>
|
||||
@ -323,6 +363,22 @@
|
||||
</resources>
|
||||
</configuration>
|
||||
</execution>
|
||||
<execution>
|
||||
<id>copy-docker-config</id>
|
||||
<phase>${pkg.process-resources.phase}</phase>
|
||||
<goals>
|
||||
<goal>copy-resources</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<outputDirectory>${project.build.directory}</outputDirectory>
|
||||
<resources>
|
||||
<resource>
|
||||
<directory>docker</directory>
|
||||
<filtering>true</filtering>
|
||||
</resource>
|
||||
</resources>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
@ -394,7 +450,7 @@
|
||||
<groupId>org.thingsboard</groupId>
|
||||
<artifactId>gradle-maven-plugin</artifactId>
|
||||
<configuration>
|
||||
<gradleProjectDirectory>${main.dir}/packaging</gradleProjectDirectory>
|
||||
<gradleProjectDirectory>${main.dir}/packaging/${pkg.type}</gradleProjectDirectory>
|
||||
<tasks>
|
||||
<task>build</task>
|
||||
<task>buildDeb</task>
|
||||
@ -433,7 +489,7 @@
|
||||
<configuration>
|
||||
<finalName>${pkg.name}</finalName>
|
||||
<descriptors>
|
||||
<descriptor>${main.dir}/packaging/assembly/windows.xml</descriptor>
|
||||
<descriptor>${main.dir}/packaging/${pkg.type}/assembly/windows.xml</descriptor>
|
||||
</descriptors>
|
||||
</configuration>
|
||||
<executions>
|
||||
@ -659,8 +715,12 @@
|
||||
<exclude>src/vendor/**</exclude>
|
||||
<exclude>src/font/**</exclude>
|
||||
<exclude>src/sh/**</exclude>
|
||||
<exclude>packaging/scripts/control/**</exclude>
|
||||
<exclude>packaging/scripts/windows/**</exclude>
|
||||
<exclude>packaging/*/scripts/control/**</exclude>
|
||||
<exclude>packaging/*/scripts/windows/**</exclude>
|
||||
<exclude>packaging/*/scripts/init/**</exclude>
|
||||
<exclude>**/*.log</exclude>
|
||||
<exclude>**/*.current</exclude>
|
||||
<exclude>.instance_id</exclude>
|
||||
<exclude>src/main/scripts/control/**</exclude>
|
||||
<exclude>src/main/scripts/windows/**</exclude>
|
||||
<exclude>src/main/resources/public/static/rulenode/**</exclude>
|
||||
|
||||
@ -33,12 +33,11 @@
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<main.dir>${basedir}/../..</main.dir>
|
||||
<pkg.type>java</pkg.type>
|
||||
<pkg.disabled>false</pkg.disabled>
|
||||
<pkg.process-resources.phase>process-resources</pkg.process-resources.phase>
|
||||
<pkg.package.phase>package</pkg.package.phase>
|
||||
<pkg.name>tb-coap-transport</pkg.name>
|
||||
<pkg.unixLogFolder>/var/log/${pkg.name}</pkg.unixLogFolder>
|
||||
<pkg.installFolder>/usr/share/${pkg.name}</pkg.installFolder>
|
||||
<pkg.copyInstallScripts>false</pkg.copyInstallScripts>
|
||||
<pkg.win.dist>${project.build.directory}/windows</pkg.win.dist>
|
||||
<pkg.implementationTitle>ThingsBoard CoAP Transport Service</pkg.implementationTitle>
|
||||
|
||||
@ -33,12 +33,11 @@
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<main.dir>${basedir}/../..</main.dir>
|
||||
<pkg.type>java</pkg.type>
|
||||
<pkg.disabled>false</pkg.disabled>
|
||||
<pkg.process-resources.phase>process-resources</pkg.process-resources.phase>
|
||||
<pkg.package.phase>package</pkg.package.phase>
|
||||
<pkg.name>tb-http-transport</pkg.name>
|
||||
<pkg.unixLogFolder>/var/log/${pkg.name}</pkg.unixLogFolder>
|
||||
<pkg.installFolder>/usr/share/${pkg.name}</pkg.installFolder>
|
||||
<pkg.copyInstallScripts>false</pkg.copyInstallScripts>
|
||||
<pkg.win.dist>${project.build.directory}/windows</pkg.win.dist>
|
||||
<pkg.implementationTitle>ThingsBoard HTTP Transport Service</pkg.implementationTitle>
|
||||
|
||||
@ -33,12 +33,11 @@
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<main.dir>${basedir}/../..</main.dir>
|
||||
<pkg.type>java</pkg.type>
|
||||
<pkg.disabled>false</pkg.disabled>
|
||||
<pkg.process-resources.phase>process-resources</pkg.process-resources.phase>
|
||||
<pkg.package.phase>package</pkg.package.phase>
|
||||
<pkg.name>tb-mqtt-transport</pkg.name>
|
||||
<pkg.unixLogFolder>/var/log/${pkg.name}</pkg.unixLogFolder>
|
||||
<pkg.installFolder>/usr/share/${pkg.name}</pkg.installFolder>
|
||||
<pkg.copyInstallScripts>false</pkg.copyInstallScripts>
|
||||
<pkg.win.dist>${project.build.directory}/windows</pkg.win.dist>
|
||||
<pkg.implementationTitle>ThingsBoard MQTT Transport Service</pkg.implementationTitle>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user