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.

Datos de origen

Repositorio
cockroachdb/cockroach
Última actividad en el origen
31 de marzo de 2026 a las 11:52
Idioma detectado de SKILL.md
inglés
Estrellas
32.570
Forks
4131

Opciones de instalación

De forma predeterminada está seleccionado el prompt que primero revisa el origen. Puedes cambiar a un comando directo o descargar una copia local.

Revisa los archivos de origen

Lee SKILL.md y los archivos complementarios que muestra SkillsMP antes de decidir si quieres instalarlo.

Explorador de archivos
14 archivos

Mostrando SKILL.md

SKILL.md
Instrucciones de origen · Vista previa de solo lectura
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.
Ver en GitHub