ci: speed up install smoke on PRs
This commit is contained in:
1
.github/workflows/install-smoke.yml
vendored
1
.github/workflows/install-smoke.yml
vendored
@@ -29,5 +29,6 @@ jobs:
|
|||||||
CLAWDBOT_INSTALL_CLI_URL: https://clawd.bot/install-cli.sh
|
CLAWDBOT_INSTALL_CLI_URL: https://clawd.bot/install-cli.sh
|
||||||
CLAWDBOT_NO_ONBOARD: "1"
|
CLAWDBOT_NO_ONBOARD: "1"
|
||||||
CLAWDBOT_INSTALL_SMOKE_SKIP_CLI: "1"
|
CLAWDBOT_INSTALL_SMOKE_SKIP_CLI: "1"
|
||||||
|
CLAWDBOT_INSTALL_SMOKE_SKIP_NONROOT: ${{ github.event_name == 'pull_request' && '1' || '0' }}
|
||||||
CLAWDBOT_INSTALL_SMOKE_PREVIOUS: "2026.1.11-4"
|
CLAWDBOT_INSTALL_SMOKE_PREVIOUS: "2026.1.11-4"
|
||||||
run: pnpm test:install:smoke
|
run: pnpm test:install:smoke
|
||||||
|
|||||||
@@ -19,7 +19,12 @@ echo "==> Verify git installed"
|
|||||||
command -v git >/dev/null
|
command -v git >/dev/null
|
||||||
|
|
||||||
echo "==> Verify clawdbot installed"
|
echo "==> Verify clawdbot installed"
|
||||||
LATEST_VERSION="$(npm view clawdbot version)"
|
EXPECTED_VERSION="${CLAWDBOT_INSTALL_EXPECT_VERSION:-}"
|
||||||
|
if [[ -n "$EXPECTED_VERSION" ]]; then
|
||||||
|
LATEST_VERSION="$EXPECTED_VERSION"
|
||||||
|
else
|
||||||
|
LATEST_VERSION="$(npm view clawdbot version)"
|
||||||
|
fi
|
||||||
CMD_PATH="$(command -v clawdbot || true)"
|
CMD_PATH="$(command -v clawdbot || true)"
|
||||||
if [[ -z "$CMD_PATH" && -x "$HOME/.npm-global/bin/clawdbot" ]]; then
|
if [[ -z "$CMD_PATH" && -x "$HOME/.npm-global/bin/clawdbot" ]]; then
|
||||||
CMD_PATH="$HOME/.npm-global/bin/clawdbot"
|
CMD_PATH="$HOME/.npm-global/bin/clawdbot"
|
||||||
|
|||||||
@@ -6,23 +6,36 @@ SMOKE_PREVIOUS_VERSION="${CLAWDBOT_INSTALL_SMOKE_PREVIOUS:-}"
|
|||||||
SKIP_PREVIOUS="${CLAWDBOT_INSTALL_SMOKE_SKIP_PREVIOUS:-0}"
|
SKIP_PREVIOUS="${CLAWDBOT_INSTALL_SMOKE_SKIP_PREVIOUS:-0}"
|
||||||
|
|
||||||
echo "==> Resolve npm versions"
|
echo "==> Resolve npm versions"
|
||||||
LATEST_VERSION="$(npm view clawdbot version)"
|
|
||||||
if [[ -n "$SMOKE_PREVIOUS_VERSION" ]]; then
|
if [[ -n "$SMOKE_PREVIOUS_VERSION" ]]; then
|
||||||
|
LATEST_VERSION="$(npm view clawdbot version)"
|
||||||
PREVIOUS_VERSION="$SMOKE_PREVIOUS_VERSION"
|
PREVIOUS_VERSION="$SMOKE_PREVIOUS_VERSION"
|
||||||
else
|
else
|
||||||
PREVIOUS_VERSION="$(node - <<'NODE'
|
VERSIONS_JSON="$(npm view clawdbot versions --json)"
|
||||||
const { execSync } = require("node:child_process");
|
read -r LATEST_VERSION PREVIOUS_VERSION < <(node - <<'NODE'
|
||||||
|
const raw = process.env.VERSIONS_JSON || "[]";
|
||||||
const versions = JSON.parse(execSync("npm view clawdbot versions --json", { encoding: "utf8" }));
|
let versions;
|
||||||
if (!Array.isArray(versions) || versions.length === 0) {
|
try {
|
||||||
|
versions = JSON.parse(raw);
|
||||||
|
} catch {
|
||||||
|
versions = raw ? [raw] : [];
|
||||||
|
}
|
||||||
|
if (!Array.isArray(versions)) {
|
||||||
|
versions = [versions];
|
||||||
|
}
|
||||||
|
if (versions.length === 0) {
|
||||||
process.exit(1);
|
process.exit(1);
|
||||||
}
|
}
|
||||||
const previous = versions.length >= 2 ? versions[versions.length - 2] : versions[0];
|
const latest = versions[versions.length - 1];
|
||||||
process.stdout.write(previous);
|
const previous = versions.length >= 2 ? versions[versions.length - 2] : latest;
|
||||||
|
process.stdout.write(`${latest} ${previous}`);
|
||||||
NODE
|
NODE
|
||||||
)"
|
)"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [[ -n "${CLAWDBOT_INSTALL_LATEST_OUT:-}" ]]; then
|
||||||
|
printf "%s" "$LATEST_VERSION" > "$CLAWDBOT_INSTALL_LATEST_OUT"
|
||||||
|
fi
|
||||||
|
|
||||||
echo "latest=$LATEST_VERSION previous=$PREVIOUS_VERSION"
|
echo "latest=$LATEST_VERSION previous=$PREVIOUS_VERSION"
|
||||||
|
|
||||||
if [[ "$SKIP_PREVIOUS" == "1" ]]; then
|
if [[ "$SKIP_PREVIOUS" == "1" ]]; then
|
||||||
|
|||||||
@@ -6,6 +6,9 @@ SMOKE_IMAGE="${CLAWDBOT_INSTALL_SMOKE_IMAGE:-clawdbot-install-smoke:local}"
|
|||||||
NONROOT_IMAGE="${CLAWDBOT_INSTALL_NONROOT_IMAGE:-clawdbot-install-nonroot:local}"
|
NONROOT_IMAGE="${CLAWDBOT_INSTALL_NONROOT_IMAGE:-clawdbot-install-nonroot:local}"
|
||||||
INSTALL_URL="${CLAWDBOT_INSTALL_URL:-https://clawd.bot/install.sh}"
|
INSTALL_URL="${CLAWDBOT_INSTALL_URL:-https://clawd.bot/install.sh}"
|
||||||
CLI_INSTALL_URL="${CLAWDBOT_INSTALL_CLI_URL:-https://clawd.bot/install-cli.sh}"
|
CLI_INSTALL_URL="${CLAWDBOT_INSTALL_CLI_URL:-https://clawd.bot/install-cli.sh}"
|
||||||
|
SKIP_NONROOT="${CLAWDBOT_INSTALL_SMOKE_SKIP_NONROOT:-0}"
|
||||||
|
LATEST_DIR="$(mktemp -d)"
|
||||||
|
LATEST_FILE="${LATEST_DIR}/latest"
|
||||||
|
|
||||||
echo "==> Build smoke image (upgrade, root): $SMOKE_IMAGE"
|
echo "==> Build smoke image (upgrade, root): $SMOKE_IMAGE"
|
||||||
docker build \
|
docker build \
|
||||||
@@ -15,31 +18,48 @@ docker build \
|
|||||||
|
|
||||||
echo "==> Run installer smoke test (root): $INSTALL_URL"
|
echo "==> Run installer smoke test (root): $INSTALL_URL"
|
||||||
docker run --rm -t \
|
docker run --rm -t \
|
||||||
|
-v "${LATEST_DIR}:/out" \
|
||||||
-e CLAWDBOT_INSTALL_URL="$INSTALL_URL" \
|
-e CLAWDBOT_INSTALL_URL="$INSTALL_URL" \
|
||||||
|
-e CLAWDBOT_INSTALL_LATEST_OUT="/out/latest" \
|
||||||
-e CLAWDBOT_INSTALL_SMOKE_PREVIOUS="${CLAWDBOT_INSTALL_SMOKE_PREVIOUS:-}" \
|
-e CLAWDBOT_INSTALL_SMOKE_PREVIOUS="${CLAWDBOT_INSTALL_SMOKE_PREVIOUS:-}" \
|
||||||
-e CLAWDBOT_INSTALL_SMOKE_SKIP_PREVIOUS="${CLAWDBOT_INSTALL_SMOKE_SKIP_PREVIOUS:-0}" \
|
-e CLAWDBOT_INSTALL_SMOKE_SKIP_PREVIOUS="${CLAWDBOT_INSTALL_SMOKE_SKIP_PREVIOUS:-0}" \
|
||||||
-e CLAWDBOT_NO_ONBOARD=1 \
|
-e CLAWDBOT_NO_ONBOARD=1 \
|
||||||
-e DEBIAN_FRONTEND=noninteractive \
|
-e DEBIAN_FRONTEND=noninteractive \
|
||||||
"$SMOKE_IMAGE"
|
"$SMOKE_IMAGE"
|
||||||
|
|
||||||
echo "==> Build non-root image: $NONROOT_IMAGE"
|
LATEST_VERSION=""
|
||||||
docker build \
|
if [[ -f "$LATEST_FILE" ]]; then
|
||||||
-t "$NONROOT_IMAGE" \
|
LATEST_VERSION="$(cat "$LATEST_FILE")"
|
||||||
-f "$ROOT_DIR/scripts/docker/install-sh-nonroot/Dockerfile" \
|
fi
|
||||||
"$ROOT_DIR/scripts/docker/install-sh-nonroot"
|
|
||||||
|
|
||||||
echo "==> Run installer non-root test: $INSTALL_URL"
|
if [[ "$SKIP_NONROOT" == "1" ]]; then
|
||||||
docker run --rm -t \
|
echo "==> Skip non-root installer smoke (CLAWDBOT_INSTALL_SMOKE_SKIP_NONROOT=1)"
|
||||||
-e CLAWDBOT_INSTALL_URL="$INSTALL_URL" \
|
else
|
||||||
-e CLAWDBOT_NO_ONBOARD=1 \
|
echo "==> Build non-root image: $NONROOT_IMAGE"
|
||||||
-e DEBIAN_FRONTEND=noninteractive \
|
docker build \
|
||||||
"$NONROOT_IMAGE"
|
-t "$NONROOT_IMAGE" \
|
||||||
|
-f "$ROOT_DIR/scripts/docker/install-sh-nonroot/Dockerfile" \
|
||||||
|
"$ROOT_DIR/scripts/docker/install-sh-nonroot"
|
||||||
|
|
||||||
|
echo "==> Run installer non-root test: $INSTALL_URL"
|
||||||
|
docker run --rm -t \
|
||||||
|
-e CLAWDBOT_INSTALL_URL="$INSTALL_URL" \
|
||||||
|
-e CLAWDBOT_INSTALL_EXPECT_VERSION="$LATEST_VERSION" \
|
||||||
|
-e CLAWDBOT_NO_ONBOARD=1 \
|
||||||
|
-e DEBIAN_FRONTEND=noninteractive \
|
||||||
|
"$NONROOT_IMAGE"
|
||||||
|
fi
|
||||||
|
|
||||||
if [[ "${CLAWDBOT_INSTALL_SMOKE_SKIP_CLI:-0}" == "1" ]]; then
|
if [[ "${CLAWDBOT_INSTALL_SMOKE_SKIP_CLI:-0}" == "1" ]]; then
|
||||||
echo "==> Skip CLI installer smoke (CLAWDBOT_INSTALL_SMOKE_SKIP_CLI=1)"
|
echo "==> Skip CLI installer smoke (CLAWDBOT_INSTALL_SMOKE_SKIP_CLI=1)"
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [[ "$SKIP_NONROOT" == "1" ]]; then
|
||||||
|
echo "==> Skip CLI installer smoke (non-root image skipped)"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
echo "==> Run CLI installer non-root test (same image)"
|
echo "==> Run CLI installer non-root test (same image)"
|
||||||
docker run --rm -t \
|
docker run --rm -t \
|
||||||
--entrypoint /bin/bash \
|
--entrypoint /bin/bash \
|
||||||
|
|||||||
Reference in New Issue
Block a user