Run pinned Node integration tests on host
Staging Backend Quality Gate / validate (pull_request) Successful in 12m18s
Staging Backend Quality Gate / publish (pull_request) Has been skipped

This commit is contained in:
Jesse_Chen
2026-08-05 17:33:55 +08:00
parent c2949bbb50
commit 3b08826752
2 changed files with 41 additions and 8 deletions
+31 -2
View File
@@ -83,10 +83,39 @@ jobs:
docker compose version --short | grep -Eq '^v?2\.'
docker compose --help | grep -q -- '--project-name'
- name: Verify runner Node tooling
- name: Prepare pinned Node tooling
env:
NODE_TOOL_SOURCE_IMAGE: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/library/node:22-bookworm-slim@sha256:ef343465b6a14bbdf2ab52f6e100ec0659a792464fcf72c462370d88b3df909c
NODE_TOOL_IMAGE: node:22-bookworm-slim
run: |
set -euo pipefail
node --version
if ! docker image inspect "$NODE_TOOL_SOURCE_IMAGE" >/dev/null 2>&1; then
for attempt in 1 2 3; do
if timeout 180 docker pull "$NODE_TOOL_SOURCE_IMAGE"; then
break
fi
if [ "$attempt" -eq 3 ]; then
echo "Failed to preload $NODE_TOOL_IMAGE after $attempt attempts" >&2
exit 1
fi
sleep $((attempt * 15))
done
fi
docker tag "$NODE_TOOL_SOURCE_IMAGE" "$NODE_TOOL_IMAGE"
docker image inspect "$NODE_TOOL_IMAGE" >/dev/null
tool_dir="$(mktemp -d "${RUNNER_TEMP:-/tmp}/jyotisha-node-tools.XXXXXX")"
container_id="$(docker create "$NODE_TOOL_IMAGE")"
trap 'docker rm -f "$container_id" >/dev/null 2>&1 || true' EXIT
docker cp "$container_id:/usr/local/bin/node" "$tool_dir/node"
docker cp "$container_id:/usr/local/lib/node_modules/npm" "$tool_dir/npm-package"
docker rm "$container_id" >/dev/null
trap - EXIT
ln -s "$tool_dir/npm-package/bin/npm-cli.js" "$tool_dir/npm"
chmod 0755 "$tool_dir/node" "$tool_dir/npm-package/bin/npm-cli.js"
test -n "${GITHUB_PATH:-}"
printf '%s\n' "$tool_dir" >> "$GITHUB_PATH"
export PATH="$tool_dir:$PATH"
node --version | grep -Eq '^v22\.'
npm --version
- name: Preload PostgreSQL integration image