From 54a2619b70781abf355092f1c895ae24dca1a1ee Mon Sep 17 00:00:00 2001 From: Clement Date: Fri, 12 Jul 2019 14:03:09 -0700 Subject: [PATCH] Move ci scripts to hifi repo --- .../linux-package-release/after-install.sh | 5 +++ .../assignment-client-before-install.sh | 17 +++++++++ .../linux-package-release/before-remove.sh | 6 ++++ .../domain-server-before-install.sh | 17 +++++++++ .../hifi-assignment-client | 12 +++++++ .../linux-package-release/hifi-domain-server | 13 +++++++ .../linux-package-release/hifi-ice-server | 14 ++++++++ .../ice-server-before-install.sh | 17 +++++++++ .../package-and-upload.sh | 35 +++++++++++++++++++ 9 files changed, 136 insertions(+) create mode 100755 tools/ci-scripts/linux-package-release/after-install.sh create mode 100755 tools/ci-scripts/linux-package-release/assignment-client-before-install.sh create mode 100755 tools/ci-scripts/linux-package-release/before-remove.sh create mode 100755 tools/ci-scripts/linux-package-release/domain-server-before-install.sh create mode 100644 tools/ci-scripts/linux-package-release/hifi-assignment-client create mode 100644 tools/ci-scripts/linux-package-release/hifi-domain-server create mode 100644 tools/ci-scripts/linux-package-release/hifi-ice-server create mode 100755 tools/ci-scripts/linux-package-release/ice-server-before-install.sh create mode 100755 tools/ci-scripts/linux-package-release/package-and-upload.sh diff --git a/tools/ci-scripts/linux-package-release/after-install.sh b/tools/ci-scripts/linux-package-release/after-install.sh new file mode 100755 index 0000000000..b3c99a27a8 --- /dev/null +++ b/tools/ci-scripts/linux-package-release/after-install.sh @@ -0,0 +1,5 @@ +#!/bin/bash +if ! systemctl is-active <%= service %> +then + systemctl start <%= service %> +fi diff --git a/tools/ci-scripts/linux-package-release/assignment-client-before-install.sh b/tools/ci-scripts/linux-package-release/assignment-client-before-install.sh new file mode 100755 index 0000000000..36883bfa9f --- /dev/null +++ b/tools/ci-scripts/linux-package-release/assignment-client-before-install.sh @@ -0,0 +1,17 @@ +#!/bin/bash +dpkg -s <%= service %> &>/dev/null +if [ $? -ne 0 ] +then + if systemctl is-active <%= service %> + then + # Stop service that is running + systemctl stop <%= service %> + fi +fi + +[ $(getent group hifi) ] || groupadd hifi +id -u hifi &>/dev/null || useradd hifi -g hifi --system --no-create-home +mkdir -p /.local && chown root:hifi /.local && chmod 775 /.local +mkdir -p /.config && chown root:hifi /.config && chmod 775 /.config +mkdir -p /var/log/hifi && chown root:hifi /var/log/hifi && chmod 775 /var/log/hifi +mkdir -p /usr/share/hifi/assignment-client && chown root:hifi /usr/share/hifi/assignment-client && chmod 775 /usr/share/hifi/assignment-client diff --git a/tools/ci-scripts/linux-package-release/before-remove.sh b/tools/ci-scripts/linux-package-release/before-remove.sh new file mode 100755 index 0000000000..d171cca810 --- /dev/null +++ b/tools/ci-scripts/linux-package-release/before-remove.sh @@ -0,0 +1,6 @@ +#!/bin/bash +if systemctl is-active <%= service %> +then + # Stop service that is running + systemctl stop <%= service %> +fi diff --git a/tools/ci-scripts/linux-package-release/domain-server-before-install.sh b/tools/ci-scripts/linux-package-release/domain-server-before-install.sh new file mode 100755 index 0000000000..390ac67382 --- /dev/null +++ b/tools/ci-scripts/linux-package-release/domain-server-before-install.sh @@ -0,0 +1,17 @@ +#!/bin/bash +dpkg -s <%= service %> &>/dev/null +if [ $? -ne 0 ] +then + if systemctl is-active <%= service %> + then + # Stop service that is running + systemctl stop <%= service %> + fi +fi + +[ $(getent group hifi) ] || groupadd hifi +id -u hifi &>/dev/null || useradd hifi -g hifi --system --no-create-home +mkdir -p /.local && chown root:hifi /.local && chmod 775 /.local +mkdir -p /.config && chown root:hifi /.config && chmod 775 /.config +mkdir -p /var/log/hifi && chown root:hifi /var/log/hifi && chmod 775 /var/log/hifi +mkdir -p /usr/share/hifi/domain-server && chown root:hifi /usr/share/hifi/domain-server && chmod 775 /usr/share/hifi/domain-server diff --git a/tools/ci-scripts/linux-package-release/hifi-assignment-client b/tools/ci-scripts/linux-package-release/hifi-assignment-client new file mode 100644 index 0000000000..ffd30882a1 --- /dev/null +++ b/tools/ci-scripts/linux-package-release/hifi-assignment-client @@ -0,0 +1,12 @@ +[Unit] +Description=Assignment client service for High Fidelity server +After=network.target +[Service] +Restart=always + +WorkingDirectory=/usr/share/hifi/assignment-client +Environment="LD_LIBRARY_PATH=/usr/share/hifi/assignment-client/" + +ExecStart=/bin/bash -c 'ulimit -c unlimited; /usr/share/hifi/assignment-client/assignment-client -n 7 2>&1 >> /var/log/hifi/assignment-client.log' +[Install] +WantedBy=multi-user.target \ No newline at end of file diff --git a/tools/ci-scripts/linux-package-release/hifi-domain-server b/tools/ci-scripts/linux-package-release/hifi-domain-server new file mode 100644 index 0000000000..aed34314dd --- /dev/null +++ b/tools/ci-scripts/linux-package-release/hifi-domain-server @@ -0,0 +1,13 @@ +[Unit] +Description=Domain Server service for High Fidelity +After=network.target +[Service] +Restart=on-failure + +WorkingDirectory=/usr/share/hifi/domain-server +Environment="LD_LIBRARY_PATH=/usr/share/hifi/domain-server/" + +ExecStartPre=/bin/bash -c 'if /usr/bin/pgrep -l domain-server; then /usr/bin/pkill -SIGKILL -f /usr/share/hifi/domain-server/domain-server; fi' +ExecStart=/bin/bash -c 'ulimit -c unlimited; /usr/share/hifi/domain-server/domain-server 2>&1 >> /var/log/hifi/domain-server.log' +[Install] +WantedBy=multi-user.target \ No newline at end of file diff --git a/tools/ci-scripts/linux-package-release/hifi-ice-server b/tools/ci-scripts/linux-package-release/hifi-ice-server new file mode 100644 index 0000000000..55b5e6d7de --- /dev/null +++ b/tools/ci-scripts/linux-package-release/hifi-ice-server @@ -0,0 +1,14 @@ +[Unit] +Description=Ice Server service for High Fidelity +After=network.target +[Service] +Restart=on-failure + +Environment="HIFI_ENVIRONMENT=production" + +WorkingDirectory=/usr/share/hifi/ice-server + +ExecStartPre=/bin/bash -c 'if /usr/bin/pgrep -l ice-server; then /usr/bin/pkill -SIGKILL -f /usr/share/hifi/ice-server/ice-server; fi' +ExecStart=/bin/bash -c 'ulimit -c unlimited; /usr/share/hifi/ice-server/ice-server 2>&1 >> /var/log/hifi/ice-server.log' +[Install] +WantedBy=multi-user.target \ No newline at end of file diff --git a/tools/ci-scripts/linux-package-release/ice-server-before-install.sh b/tools/ci-scripts/linux-package-release/ice-server-before-install.sh new file mode 100755 index 0000000000..1d415d61b7 --- /dev/null +++ b/tools/ci-scripts/linux-package-release/ice-server-before-install.sh @@ -0,0 +1,17 @@ +#!/bin/bash +dpkg -s <%= service %> &>/dev/null +if [ $? -ne 0 ] +then + if systemctl is-active <%= service %> + then + # Stop service that is running + systemctl stop <%= service %> + fi +fi + +[ $(getent group hifi) ] || groupadd hifi +id -u hifi &>/dev/null || useradd hifi -g hifi --system --no-create-home +mkdir -p /.local && chown root:hifi /.local && chmod 775 /.local +mkdir -p /.config && chown root:hifi /.config && chmod 775 /.config +mkdir -p /var/log/hifi && chown root:hifi /var/log/hifi && chmod 775 /var/log/hifi +mkdir -p /usr/share/hifi/ice-server && chown root:hifi /usr/share/hifi/ice-server && chmod 775 /usr/share/hifi/ice-server diff --git a/tools/ci-scripts/linux-package-release/package-and-upload.sh b/tools/ci-scripts/linux-package-release/package-and-upload.sh new file mode 100755 index 0000000000..c81b9eb72b --- /dev/null +++ b/tools/ci-scripts/linux-package-release/package-and-upload.sh @@ -0,0 +1,35 @@ +#!/bin/bash -l +prefix=${1:-""} +declare -a packages_systemd=("assignment-client" "domain-server" "ice-server") +cd ./build + +for package_name in "${packages_systemd[@]}" +do + SOURCE_DESTINATION_LIST="${WORKSPACE}/build/${package_name}/${package_name}=/usr/share/hifi/${package_name}/ " + if [ "$package_name" == "domain-server" ]; then + DESCRIPTION="High Fidelity Domain server." + SOURCE_DESTINATION_LIST+="${WORKSPACE}/build/${package_name}/resources/=/usr/share/hifi/${package_name}/resources " + SOURCE_DESTINATION_LIST+="${WORKSPACE}/build/ext/makefiles/quazip/project/build/libquazip5.so.1.0.0=/usr/share/hifi/${package_name}/libquazip5.so.1" + elif [ "$package_name" == "assignment-client" ]; then + DESCRIPTION="High Fidelity Assignment clients. Services target a local domain server. Different assignment clients are managed independently with systemd." + SOURCE_DESTINATION_LIST+="${WORKSPACE}/build/${package_name}/plugins/=/usr/share/hifi/${package_name}/plugins " + SOURCE_DESTINATION_LIST+="${WORKSPACE}/build/ext/makefiles/quazip/project/build/libquazip5.so.1.0.0=/usr/share/hifi/${package_name}/libquazip5.so.1 " + SOURCE_DESTINATION_LIST+="${WORKSPACE}/build/${package_name}/oven=/usr/share/hifi/${package_name}/oven" + elif [ "$package_name" == "ice-server" ]; then + DESCRIPTION="High Fidelity ICE server." + fi + + fpm -s dir -t deb -n hifi-${prefix}${package_name} -v ${VERSION} -d hifiqt5.12.3 --vendor "High Fidelity Inc" -m "" \ + --url "https://highfidelity.com" --license "Apache License 2.0" --description "${DESCRIPTION}" -d libgomp1 -d libtbb2 -d libgl1-mesa-glx -d libnss3 \ + -d libxi6 -d libxcursor1 -d libxcomposite1 -d libasound2 -d libxtst6 -d libxslt1.1 --template-scripts --template-value "service"="hifi-${package_name}" \ + --deb-systemd ${WORKSPACE}/hifi-${package_name} --before-install ${WORKSPACE}/${package_name}-before-install.sh \ + --after-install ${WORKSPACE}/after-install.sh --before-remove ${WORKSPACE}/before-remove.sh \ + ${SOURCE_DESTINATION_LIST} + + dpkg-sig --sign builder -k 15FF1AAE -g '--no-tty --passphrase "${MASKED_DEB_REPO_SIGN_PASSPHRASE}"' ./hifi-${prefix}${package_name}_${VERSION}_amd64.deb + + deb-s3 upload ./hifi-${prefix}${package_name}_${VERSION}_amd64.deb --bucket debian.highfidelity.com \ + --sign=15FF1AAE --gpg-options='--no-tty --passphrase "${MASKED_DEB_REPO_SIGN_PASSPHRASE}"' \ + --origin hifi --suite stable -p + +done