94 lines
2.3 KiB
Bash
94 lines
2.3 KiB
Bash
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
QIPAI_DEPLOY_VERSION="${QIPAI_DEPLOY_VERSION:-0.1.0-m00-deploy-baseline}"
|
|
APP_ROOT="${APP_ROOT:-/opt/apps}"
|
|
QIPAI_REPO_URL="${QIPAI_REPO_URL:-ssh://git@127.0.0.1:2222/panda/qipai.git}"
|
|
QIPAI_PUBLIC_REPO_URL="${QIPAI_PUBLIC_REPO_URL:-ssh://git@git.txyundm.cn:2222/panda/qipai.git}"
|
|
QIPAI_BRANCH="${QIPAI_BRANCH:-main}"
|
|
QIPAI_DOMAIN="${QIPAI_DOMAIN:-api.txyundm.cn}"
|
|
QIPAI_API_ORIGIN="https://${QIPAI_DOMAIN}"
|
|
|
|
qipai_timestamp() {
|
|
date "+%Y-%m-%d %H:%M:%S"
|
|
}
|
|
|
|
qipai_status() {
|
|
local level="$1"
|
|
shift
|
|
printf '%s: %s\n' "$level" "$*"
|
|
}
|
|
|
|
qipai_info() {
|
|
qipai_status "INFO" "$@"
|
|
}
|
|
|
|
qipai_pass() {
|
|
qipai_status "PASS" "$@"
|
|
}
|
|
|
|
qipai_warn() {
|
|
qipai_status "WARN" "$@"
|
|
}
|
|
|
|
qipai_fail() {
|
|
qipai_status "FAIL" "$@"
|
|
}
|
|
|
|
qipai_require_root_for_write() {
|
|
if [ "$(id -u)" -ne 0 ]; then
|
|
qipai_fail "This option writes under ${APP_ROOT}; run with sudo on Ubuntu."
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
qipai_check_arch() {
|
|
local kernel_arch dpkg_arch bits
|
|
kernel_arch="$(uname -m 2>/dev/null || echo unknown)"
|
|
dpkg_arch="$(dpkg --print-architecture 2>/dev/null || echo unknown)"
|
|
bits="$(getconf LONG_BIT 2>/dev/null || echo unknown)"
|
|
|
|
[ "$kernel_arch" = "x86_64" ] && qipai_pass "kernel architecture: ${kernel_arch}" || {
|
|
qipai_fail "kernel architecture must be x86_64, actual: ${kernel_arch}"
|
|
return 1
|
|
}
|
|
[ "$dpkg_arch" = "amd64" ] && qipai_pass "dpkg architecture: ${dpkg_arch}" || {
|
|
qipai_fail "dpkg architecture must be amd64, actual: ${dpkg_arch}"
|
|
return 1
|
|
}
|
|
[ "$bits" = "64" ] && qipai_pass "userspace bits: ${bits}" || {
|
|
qipai_fail "userspace must be 64-bit, actual: ${bits}"
|
|
return 1
|
|
}
|
|
}
|
|
|
|
qipai_command_status() {
|
|
local command_name="$1"
|
|
if command -v "$command_name" >/dev/null 2>&1; then
|
|
qipai_pass "${command_name}: $(command -v "$command_name")"
|
|
else
|
|
qipai_warn "${command_name}: not installed"
|
|
fi
|
|
}
|
|
|
|
qipai_repo_dir() {
|
|
printf '%s/qipai-repo\n' "$APP_ROOT"
|
|
}
|
|
|
|
qipai_release_dir() {
|
|
printf '%s/releases\n' "$APP_ROOT"
|
|
}
|
|
|
|
qipai_current_release_file() {
|
|
printf '%s/current-release.json\n' "$APP_ROOT"
|
|
}
|
|
|
|
qipai_print_context() {
|
|
qipai_info "deploy version: ${QIPAI_DEPLOY_VERSION}"
|
|
qipai_info "app root: ${APP_ROOT}"
|
|
qipai_info "repo: ${QIPAI_REPO_URL}"
|
|
qipai_info "branch: ${QIPAI_BRANCH}"
|
|
qipai_info "api origin: ${QIPAI_API_ORIGIN}"
|
|
}
|
|
|