基于 SOC 职业分类
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/opendatahub-io/agentic-ci --skill test-e2e-podman命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
正在显示 SKILL.md
Investigate infrastructure-level failures in the agentic-ci framework. Covers container backend issues, skill engine errors, forge MR/PR failures, and gate problems. Use when the container failed, MR operations broke, or the skill engine returned errors.
Run end-to-end tests for the openshell backend using real container and API calls
Cut a new agentic-ci release by tagging and pushing. Version is derived from git tags automatically.
| name | test-e2e-podman |
| description | Run end-to-end tests for the podman backend using real container and API calls |
Run full lifecycle tests of the podman backend across harnesses and auth modes. All tests run inside a CI container with nested podman.
Each section below is independent. Run whichever sections match your environment and skip the rest.
Present the following default container images to the user and ask them to confirm or override each one before proceeding:
| Role | Default image | Variable |
|---|---|---|
| CI image | quay.io/aipcc/agentic-ci/podman | $CI_IMAGE |
| Claude runner | quay.io/aipcc/agentic-ci/claude-runner:latest | $CLAUDE_IMAGE |
| OpenCode runner | quay.io/aipcc/agentic-ci/opencode-runner:latest | $OPENCODE_IMAGE |
Also ask for:
$API_KEY_FILE.Per-section requirements:
~/.config/gcloud/application_default_credentials.json and
ANTHROPIC_VERTEX_PROJECT_ID + CLOUD_ML_REGION set in the environment.All agentic-ci commands run inside the CI container. The container needs
--privileged for nested podman (the podman backend starts a second
container inside the CI container).
podman rm -f podman-e2e 2>/dev/null || true
podman run -d --name podman-e2e \
--privileged \
-v "$(pwd):/workspace:ro,z" \
-v ~/.config/gcloud:/host-gcloud:ro,z \
-v "$API_KEY_FILE:/host-api-key:ro,z" \
$CI_IMAGE \
sleep infinity
podman exec podman-e2e bash -c '
mkdir -p ~/.config/gcloud
cp /host-gcloud/application_default_credentials.json ~/.config/gcloud/
cd /workspace && uv pip install --system --no-cache .
'
Verify:
podman exec podman-e2e agentic-ci --help prints usagepodman exec podman-e2e podman --version shows podman is availableReset the inner agentic-ci container between sections:
podman exec podman-e2e bash -c 'podman rm -f agentic-ci 2>/dev/null || true'
Use haiku to keep cost down. The model name format varies by harness:
| Harness | Vertex AI model | API key model |
|---|---|---|
| Claude Code | claude-haiku-4-5 | claude-haiku-4-5 |
| OpenCode | (not supported via Vertex) | anthropic/claude-haiku-4-5-20251001 |
Requires GCP ADC credentials and ANTHROPIC_VERTEX_PROJECT_ID.
podman exec \
-e ANTHROPIC_VERTEX_PROJECT_ID=<your-project-id> \
-e CLOUD_ML_REGION=global \
-e CLAUDE_IMAGE="$CLAUDE_IMAGE" \
podman-e2e bash -c '
agentic-ci setup --image "$CLAUDE_IMAGE"
'
Verify:
Auth: Vertex AI--- Podman container started ---podman exec podman-e2e podman ps --filter name=agentic-ci shows the
inner container runningpodman exec \
-e ANTHROPIC_VERTEX_PROJECT_ID=<your-project-id> \
-e CLOUD_ML_REGION=global \
-e CLAUDE_IMAGE="$CLAUDE_IMAGE" \
podman-e2e bash -c '
agentic-ci run "Respond with exactly: A2_OK" \
--image "$CLAUDE_IMAGE" \
--model claude-haiku-4-5 --no-otel
'
Verify:
--- Podman container already running --- (reuses container
from setup)A2_OKpodman exec \
-e ANTHROPIC_VERTEX_PROJECT_ID=<your-project-id> \
-e CLOUD_ML_REGION=global \
-e CLAUDE_IMAGE="$CLAUDE_IMAGE" \
podman-e2e bash -c '
agentic-ci run "Respond with exactly: A3_OK" \
--image "$CLAUDE_IMAGE" \
--model claude-haiku-4-5
'
Verify:
already running)A3_OKCheck that the OTEL JSONL log contains /v1/traces records — these are
what agentic-ci mlflow-push needs:
podman exec podman-e2e bash -c '
JSONL=$(ls -t /tmp/agentic-ci-run.*/claude-otel.jsonl 2>/dev/null | head -1)
echo "JSONL file: $JSONL"
grep -c "/v1/traces" "$JSONL"
'
Verify:
podman exec podman-e2e bash -c '
JSONL=$(ls -t /tmp/agentic-ci-run.*/claude-otel.jsonl 2>/dev/null | head -1)
grep "/v1/traces" "$JSONL" | head -1 | python3 -m json.tool
'
"path" containing /v1/traces"payload" with "resourceSpans" arraypodman exec \
-e ANTHROPIC_VERTEX_PROJECT_ID=<your-project-id> \
-e CLOUD_ML_REGION=global \
-e CLAUDE_IMAGE="$CLAUDE_IMAGE" \
podman-e2e bash -c '
agentic-ci run "Respond with exactly: A4_OK" \
--image "$CLAUDE_IMAGE" \
--model claude-haiku-4-5 --no-streaming --no-otel
'
Verify:
podman exec \
-e CLAUDE_IMAGE="$CLAUDE_IMAGE" \
podman-e2e bash -c '
agentic-ci stop --image "$CLAUDE_IMAGE"
'
Verify:
--- Podman container stopped ---podman exec podman-e2e podman ps -a --filter name=agentic-ci shows no
containerRun cleanup first.
podman exec \
-e "ANTHROPIC_API_KEY=$(cat "$API_KEY_FILE")" \
-e CLAUDE_IMAGE="$CLAUDE_IMAGE" \
podman-e2e bash -c '
agentic-ci run "Respond with exactly: B1_OK" \
--image "$CLAUDE_IMAGE" \
--model claude-haiku-4-5 --no-otel
'
Verify:
Auth: API key (not Vertex AI)B1_OKpodman exec \
-e "ANTHROPIC_API_KEY=$(cat "$API_KEY_FILE")" \
-e CLAUDE_IMAGE="$CLAUDE_IMAGE" \
podman-e2e bash -c '
agentic-ci run "Respond with exactly: B2_OK" \
--image "$CLAUDE_IMAGE" \
--model claude-haiku-4-5
'
Verify:
B2_OKSame check as A3a — verify the JSONL log has /v1/traces records:
podman exec podman-e2e bash -c '
JSONL=$(ls -t /tmp/agentic-ci-run.*/claude-otel.jsonl 2>/dev/null | head -1)
echo "JSONL file: $JSONL"
grep -c "/v1/traces" "$JSONL"
'
Verify:
podman exec \
-e CLAUDE_IMAGE="$CLAUDE_IMAGE" \
podman-e2e bash -c '
agentic-ci stop --image "$CLAUDE_IMAGE"
'
Verify:
--- Podman container stopped ---Requires GCP ADC credentials.
Run cleanup first.
podman exec \
-e ANTHROPIC_VERTEX_PROJECT_ID=<your-project-id> \
-e CLOUD_ML_REGION=global \
-e OPENCODE_IMAGE="$OPENCODE_IMAGE" \
podman-e2e bash -c '
agentic-ci run "Respond with exactly: C1_OK" \
--harness opencode \
--image "$OPENCODE_IMAGE" \
--model google-vertex/claude-haiku-4-5@20251001 \
--no-otel
'
Verify:
Harness: OpenCode and Auth: Vertex AIpodman exec \
-e OPENCODE_IMAGE="$OPENCODE_IMAGE" \
podman-e2e bash -c '
agentic-ci stop --harness opencode --image "$OPENCODE_IMAGE"
'
Verify:
--- Podman container stopped ---Requires ANTHROPIC_API_KEY (via API key file).
Run cleanup first.
podman exec \
-e "ANTHROPIC_API_KEY=$(cat "$API_KEY_FILE")" \
-e OPENCODE_IMAGE="$OPENCODE_IMAGE" \
podman-e2e bash -c '
agentic-ci run "Respond with exactly: D1_OK" \
--harness opencode \
--image "$OPENCODE_IMAGE" \
--model anthropic/claude-haiku-4-5-20251001 \
--no-otel
'
Verify:
Harness: OpenCode and Auth: API keypodman exec \
-e OPENCODE_IMAGE="$OPENCODE_IMAGE" \
podman-e2e bash -c '
agentic-ci stop --harness opencode --image "$OPENCODE_IMAGE"
'
Verify:
--- Podman container stopped ---Verifies that a plugin skill loads and executes correctly inside the
runner container. Uses the git-shallow-clone skill from the
odh-ai-helpers plugin to clone a repo into /tmp and confirm the
result.
Requires GCP ADC credentials and ANTHROPIC_VERTEX_PROJECT_ID.
Run cleanup first.
podman exec \
-e ANTHROPIC_VERTEX_PROJECT_ID=<your-project-id> \
-e CLOUD_ML_REGION=global \
-e CLAUDE_IMAGE="$CLAUDE_IMAGE" \
podman-e2e bash -c '
agentic-ci run \
--image "$CLAUDE_IMAGE" \
--model claude-haiku-4-5 --no-otel \
"Use the /odh-ai-helpers:git-shallow-clone skill to shallow-clone https://github.com/opendatahub-io/agentic-ci.git into /tmp/agentic-ci. After the clone completes, run: ls /tmp/agentic-ci and print the output, then respond with exactly: SKILL_OK"
'
Verify:
Plugins: line includes odh-ai-helpersSkill tool invocation for odh-ai-helpers:git-shallow-cloneBash tool call running git clonels /tmp/agentic-ci with repo contents (e.g. src, pyproject.toml, Makefile)SKILL_OKAgent exit code: 0podman exec \
-e CLAUDE_IMAGE="$CLAUDE_IMAGE" \
podman-e2e bash -c '
agentic-ci stop --image "$CLAUDE_IMAGE"
'
Same test as Section E but with API key auth.
Run cleanup first.
podman exec \
-e "ANTHROPIC_API_KEY=$(cat "$API_KEY_FILE")" \
-e CLAUDE_IMAGE="$CLAUDE_IMAGE" \
podman-e2e bash -c '
agentic-ci run \
--image "$CLAUDE_IMAGE" \
--model claude-haiku-4-5 --no-otel \
"Use the /odh-ai-helpers:git-shallow-clone skill to shallow-clone https://github.com/opendatahub-io/agentic-ci.git into /tmp/agentic-ci. After the clone completes, run: ls /tmp/agentic-ci and print the output, then respond with exactly: SKILL_OK"
'
Verify:
Auth: API keyPlugins: line includes odh-ai-helpersSkill tool invocation for odh-ai-helpers:git-shallow-clonels /tmp/agentic-ci with repo contents (e.g. src, pyproject.toml, Makefile)SKILL_OKAgent exit code: 0podman exec \
-e CLAUDE_IMAGE="$CLAUDE_IMAGE" \
podman-e2e bash -c '
agentic-ci stop --image "$CLAUDE_IMAGE"
'
podman rm -f podman-e2e
Execute sections in order (A through F), running the cleanup step before each section. Skip sections whose prerequisites are not met. If any step fails, stop and investigate. Check inner container logs with:
podman exec podman-e2e podman logs agentic-ci