diff --git a/.github/workflows/rspec.yaml b/.github/workflows/rspec.yaml index dff70b7..b316090 100644 --- a/.github/workflows/rspec.yaml +++ b/.github/workflows/rspec.yaml @@ -24,13 +24,13 @@ jobs: run: cd ./tests && ./prepare.rb "${{ env.oned }}" "${{ env.oneflow }}" - name: Start engine - run: provision-engine-server start && sleep 2 + run: systemctl start provision-engine && sleep 2 - name: Rspec run: cd ./tests && rspec init.rb - name: Stop engine - run: provision-engine-server stop + run: systemctl stop provision-engine - name: Uninstall run: ./install.sh purge diff --git a/install.sh b/install.sh index 8db90a3..5517a9d 100755 --- a/install.sh +++ b/install.sh @@ -3,7 +3,7 @@ install() { # dependencies for gem in "${gems[@]}"; do - is_gem_installed $gem || sudo gem install $gem + is_gem_installed "$gem" || sudo gem install "$gem" done [ -d "$CONF_DIR" ] || sudo mkdir "$CONF_DIR" @@ -12,6 +12,7 @@ install() { src_conf="$(realpath "share/etc/$CONF_FILE")" src_exec="$(realpath src/server/cli/provision-engine-server)" + src_systemd="$(realpath share/etc/$SYSTEMD_UNIT)" if [[ $setup_mode == "copy" ]]; then # config @@ -22,6 +23,7 @@ install() { # executable [ -f "$EXEC_PATH" ] || sudo cp "$src_exec" "$EXEC_PATH" + [ "$(uname)" == Linux ] && sudo cp "$src_systemd" "$SYSTEMD_UNIT_PATH" # libraries for file in $MODULES; do @@ -36,12 +38,14 @@ install() { # executable [ -L "$EXEC_PATH" ] || sudo ln -s "$src_exec" "$EXEC_PATH" + [ "$(uname)" == Linux ] && sudo ln -s "$src_systemd" "$SYSTEMD_UNIT_PATH" # libraries for file in $MODULES; do [ -L "$INSTALL_DIR/${file}" ] || ln -s "$(realpath "src/server/${file}")" "${INSTALL_DIR}" done fi + } postinstall() { @@ -63,6 +67,7 @@ clean() { fi [ -f "$EXEC_PATH" ] || [ -L "$EXEC_PATH" ] && sudo rm $EXEC_PATH + [ -f "$SYSTEMD_UNIT_PATH" ] || [ -L "$SYSTEMD_UNIT_PATH" ] && sudo rm $SYSTEMD_UNIT_PATH [ -d "$INSTALL_DIR" ] && rm -rf "$INSTALL_DIR" } @@ -83,6 +88,8 @@ SCHEMAS="serverless_runtime.json error.json config.json" EXEC_FILE="provision-engine-server" EXEC_PATH="/usr/local/bin/${EXEC_FILE}" +SYSTEMD_UNIT="provision-engine.service" +SYSTEMD_UNIT_PATH="/etc/systemd/system/$SYSTEMD_UNIT" INSTALL_DIR="/opt/provision-engine" MODULES="client.rb configuration.rb log.rb server.rb runtime.rb error.rb function.rb" diff --git a/share/provision-engine.service b/share/provision-engine.service new file mode 100644 index 0000000..3af04ad --- /dev/null +++ b/share/provision-engine.service @@ -0,0 +1,13 @@ +[Unit] +Description=Provision Engine Server +After=network.target + +[Service] +Type=simple +ExecStart=/usr/bin/provision-engine-server start +ExecStop=/usr/bin/provision-engine-server stop +Restart=on-failure +RestartSec=5 + +[Install] +WantedBy=multi-user.target