Skip to main content

engflow-artifacts

Use when downloading test logs, artifacts, or outputs.zip from EngFlow build invocations. Use when investigating CockroachDB CI test failures hosted on mesolite.cluster.engflow.com.

Informations de source

Dépôt
cockroachdb/cockroach
Dernière activité de la source
31 mars 2026 à 11:52
Langue détectée de SKILL.md
anglais
Étoiles
32 570
Forks
4 131

Options d'installation

Le prompt qui vérifie d'abord la source est sélectionné par défaut. Vous pouvez passer à une commande directe ou télécharger une copie locale.

Vérifiez les fichiers source

Lisez SKILL.md et les fichiers associés affichés par SkillsMP avant de décider de l'installer.

Explorateur de fichiers
14 fichiers

Affichage de SKILL.md

SKILL.md
Instructions source · Aperçu en lecture seule
name
engflow-artifacts
description
Use when downloading test logs, artifacts, or outputs.zip from EngFlow build invocations. Use when investigating CockroachDB CI test failures hosted on mesolite.cluster.engflow.com.
# EngFlow Artifact Download Download test logs and artifacts from EngFlow CI invocations (mesolite.cluster.engflow.com) using `engflow_artifacts.py` (co-located in this skill directory). ## Prerequisites The `engflow_auth` CLI must be installed and authenticated: ```bash # One-time login (opens browser for Google SSO) engflow_auth login mesolite.cluster.engflow.com # Verify authentication engflow_auth export mesolite.cluster.engflow.com ``` ## Quick Reference Use `run.sh` to invoke the script — it manages a local venv with dependencies automatically. The script is at `.claude/skills/engflow-artifacts/run.sh`: | Command | Purpose | |---------|---------| | `targets <ID>` | List failed targets in an invocation | | `list <ID> --target <LABEL>` | List per-shard artifacts for a target | | `download <ID> --target <LABEL> --shard N` | Download artifacts for a shard | | `download <ID> --target <LABEL> --shard N --run M` | Download a specific run | | `blob <HASH> <SIZE>` | Download a specific CAS blob | | `url '<FULL_URL>'` | Download from a full EngFlow invocation URL | ## Typical Investigation Workflow ```bash EF=.claude/skills/engflow-artifacts/run.sh # 1. Find what failed ./$EF targets daa807a0-3589-40a5-94b5-3440c7490d6a # 2. List shards for the failed target ./$EF list daa807a0-3589-40a5-94b5-3440c7490d6a \ --target '//pkg/sql/ttl:ttl_test' # 3. Download the failing shard's logs ./$EF download daa807a0-3589-40a5-94b5-3440c7490d6a \ --target '//pkg/sql/ttl:ttl_test' --shard 100 --outdir /tmp/engflow-test # 4. Read the test log cat /tmp/engflow-test/test.log # 5. Inspect extracted CockroachDB server logs from outputs.zip ls /tmp/engflow-test/ ``` ## Per-Shard Artifacts Every shard has: - **test.xml** — JUnit XML test results (referenced via CompactDigest: raw 32-byte SHA-256 hash) - **test.log** — stdout/stderr from the test run (referenced via bytestream:// URL) Some shards also have: - **outputs.zip** — CockroachDB server logs captured during the test - **manifest** — lists files in outputs.zip ## How It Works - **`engflow_auth export`** provides a JWT token. - **gRPC-web calls via curl** to EngFlow's internal `v1alpha` ResultStore API (GetTarget, GetTargetLabelsByStatus). - **Protobuf parsing** via `google.protobuf` with a reverse-engineered `.proto` schema (`resultstore.proto`). Responses are properly deserialized — shard numbers and run numbers come from actual protobuf fields, not byte-pattern heuristics. - **CAS blob downloads via curl** with the auth token as a cookie. - `outputs.zip` is auto-extracted after download. Each test target has multiple **shards** (parallel test splits) and **runs** (repeated executions). Use `--shard` to select a shard and `--run` to select a run (defaults to run 1). Shard numbers are 1-based and match the `testReportShard` parameter in EngFlow URLs. EngFlow's gRPC-web endpoint requires HTTP/2, so the script uses `curl` (which negotiates HTTP/2 via ALPN) rather than Python HTTP libraries that only speak HTTP/1.1. Dependencies are installed automatically by `run.sh`. ## Extracted outputs.zip Structure ``` logTestName123456/ test.log # short log test.{node-id}.roach.{timestamp}.log # full structured log test-health.log # health channel test-storage.log # storage channel test-kv-distribution.log # KV distribution channel ``` ## URL Structure Invocation page: `https://mesolite.cluster.engflow.com/invocations/default/{INVOCATION_ID}` With filters: `?testReportRun=1&testReportShard={N}&testReportAttempt=1&treeFilterStatus=failed#targets-{BASE64_TARGET}` ## Tips - Blob hashes are SHA-256. Sizes are in bytes. - Use `list` to find which shard has `outputs.zip` (not all shards produce one). - If `engflow_auth export` fails, re-authenticate with `engflow_auth login mesolite.cluster.engflow.com`. - Default output directory is `/tmp/engflow-artifacts`. - `--all` flag on `targets` shows both passed and failed targets.
Voir sur GitHub