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.

Quellinformationen

Repository
cockroachdb/cockroach
Letzte Quellaktivität
31. März 2026 um 11:52
Erkannte Sprache von SKILL.md
Englisch
Sterne
32.582
Forks
4.155

Installationsoptionen

Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.

Quelldateien prüfen

Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.

Datei-Explorer
14 Dateien

SKILL.md wird angezeigt

SKILL.md
Quellanweisungen · Schreibgeschützte Vorschau
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.
Auf GitHub ansehen