feat: add fnOS packaging, storage workflows and release pipeline
This commit is contained in:
Executable
+28
@@ -0,0 +1,28 @@
|
||||
#!/bin/bash
|
||||
set -euo pipefail
|
||||
|
||||
PACKAGE=${1:?usage: verify-fnos-package.sh package.fpk [expected-version]}
|
||||
EXPECTED_VERSION=${2:-0.2.25}
|
||||
VERIFY_TMP_ROOT="${DYSYNC_VERIFY_TMPDIR:-${DYSYNC_TMPDIR:-${TMPDIR:-/tmp}}}"
|
||||
mkdir -p "${VERIFY_TMP_ROOT}"
|
||||
WORK_DIR=$(mktemp -d "${VERIFY_TMP_ROOT%/}/dysync-fnos-verify.XXXXXX")
|
||||
trap 'rm -rf -- "${WORK_DIR}"' EXIT
|
||||
tar -xzf "${PACKAGE}" -C "${WORK_DIR}"
|
||||
grep -q "^version[[:space:]]*= ${EXPECTED_VERSION}$" "${WORK_DIR}/manifest"
|
||||
test -x "${WORK_DIR}/cmd/main"
|
||||
test -x "${WORK_DIR}/cmd/upgrade_init"
|
||||
tar -tzf "${WORK_DIR}/app.tgz" > "${WORK_DIR}/app-files.txt"
|
||||
grep -q '^server/dy.net$' "${WORK_DIR}/app-files.txt"
|
||||
grep -q '^server/appsettings.json$' "${WORK_DIR}/app-files.txt"
|
||||
grep -q '^server/libe_sqlite3.so$' "${WORK_DIR}/app-files.txt"
|
||||
escaped_version=$(printf '%s' "$EXPECTED_VERSION" | sed 's/\./\\./g')
|
||||
tar -xOzf "${WORK_DIR}/app.tgz" server/appsettings.json | \
|
||||
grep -Eq "\"fnVersion\"[[:space:]]*:[[:space:]]*\"${escaped_version}\""
|
||||
if grep -Eq '^server/(db|keys|upgrade-backups)/' "${WORK_DIR}/app-files.txt"; then
|
||||
echo 'Persistent data must not be included in app.tgz' >&2
|
||||
exit 1
|
||||
fi
|
||||
expected=$(grep '^checksum' "${WORK_DIR}/manifest" | sed 's/.*=[[:space:]]*//')
|
||||
actual=$(md5sum "${WORK_DIR}/app.tgz" | cut -d' ' -f1)
|
||||
test "${expected}" = "${actual}"
|
||||
printf 'fnOS package verified: %s\n' "${PACKAGE}"
|
||||
Reference in New Issue
Block a user