feat: add fnOS packaging, storage workflows and release pipeline
This commit is contained in:
Executable
+33
@@ -0,0 +1,33 @@
|
||||
#!/bin/bash
|
||||
set -euo pipefail
|
||||
|
||||
PACKAGE=${1:?usage: smoke-fnos-package.sh package.fpk [temporary-directory]}
|
||||
SMOKE_TMP_ROOT="${2:-${DYSYNC_SMOKE_TMPDIR:-${DYSYNC_TMPDIR:-${TMPDIR:-/tmp}}}}"
|
||||
mkdir -p "${SMOKE_TMP_ROOT}"
|
||||
SMOKE_TMP_ROOT=$(cd "${SMOKE_TMP_ROOT}" && pwd)
|
||||
WORK_DIR=$(mktemp -d "${SMOKE_TMP_ROOT%/}/dysync-fnos-smoke.XXXXXX")
|
||||
trap 'if [ -x "${WORK_DIR}/cmd/main" ]; then "${WORK_DIR}/cmd/main" stop 2>/dev/null || true; fi; rm -rf -- "${WORK_DIR}"' EXIT
|
||||
tar -xzf "${PACKAGE}" -C "${WORK_DIR}"
|
||||
tar -xzf "${WORK_DIR}/app.tgz" -C "${WORK_DIR}"
|
||||
export TRIM_APPDEST="${WORK_DIR}"
|
||||
export TRIM_APPDEST_VOL="${WORK_DIR}/volume"
|
||||
export TRIM_PKGVAR="${WORK_DIR}/var"
|
||||
export DYSYNC_LISTEN_URL=http://127.0.0.1:19101
|
||||
# Package users on fnOS commonly have no login home. The smoke test intentionally
|
||||
# reproduces that environment so a bundle-extraction regression cannot pass locally.
|
||||
unset HOME XDG_CACHE_HOME
|
||||
if ! "${WORK_DIR}/cmd/main" start; then
|
||||
test ! -f "${TRIM_PKGVAR}/info.log" || cat "${TRIM_PKGVAR}/info.log"
|
||||
exit 1
|
||||
fi
|
||||
APP_PID=$(cat "${TRIM_PKGVAR}/app.pid")
|
||||
for attempt in $(seq 1 30); do
|
||||
if curl -fsS "http://127.0.0.1:19101/" >/dev/null; then
|
||||
printf 'fnOS packaged application started successfully\n'
|
||||
exit 0
|
||||
fi
|
||||
if ! kill -0 "${APP_PID}" 2>/dev/null; then cat "${TRIM_PKGVAR}/info.log"; exit 1; fi
|
||||
sleep 0.5
|
||||
done
|
||||
cat "${TRIM_PKGVAR}/info.log"
|
||||
exit 1
|
||||
Reference in New Issue
Block a user