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.

معلومات المصدر

المستودع
cockroachdb/cockroach
آخر نشاط في المصدر
٣١ مارس ٢٠٢٦ في ١١:٥٢
لغة SKILL.md المكتشفة
الإنجليزية
النجوم
٣٢٬٥٧٠
التفرعات
٤٬١٣١

خيارات التثبيت

يُحدَّد Prompt الذي يراجع المصدر أولًا بشكل افتراضي. يمكنك التبديل إلى أمر مباشر أو تنزيل نسخة محلية.

مراجعة ملفات المصدر

اقرأ SKILL.md وأي ملفات مرافقة يعرضها SkillsMP قبل أن تقرر التثبيت.

مستكشف الملفات
14 ملفات

عرض SKILL.md

SKILL.md
تعليمات المصدر · معاينة للقراءة فقط
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.
عرض على GitHub