Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion .github/rulesets/branches/default-branch.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
"parameters": {
"required_approving_review_count": 1,
"dismiss_stale_reviews_on_push": true,
"required_reviewers": [],
"require_code_owner_review": false,
"require_last_push_approval": false,
"required_review_thread_resolution": true,
Expand All @@ -40,7 +41,8 @@
"do_not_enforce_on_create": false,
"required_status_checks": [
{
"context": "call-core-crucible-ci / core-crucible-ci-complete"
"context": "crucible-ci-complete",
"integration_id": 15368
}
]
}
Expand Down
53 changes: 44 additions & 9 deletions .github/workflows/crucible-ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,21 +3,56 @@ name: crucible-ci
on:
pull_request:
branches: [ master ]
paths-ignore:
- LICENSE
- '**.md'
- '.github/rulesets/**'
- .github/workflows/run-crucible-tracking.yaml
- .github/workflows/faux-crucible-ci.yaml
- 'docs/**'
workflow_dispatch:

concurrency:
group: ${{ github.ref }}/crucible-ci
cancel-in-progress: true

jobs:
call-core-crucible-ci:
changes:
runs-on: ubuntu-latest
outputs:
only-docs: ${{ steps.filter.outputs.only_changed }}
steps:
- uses: actions/checkout@v4
- id: filter
uses: tj-actions/changed-files@v47
with:
files: |
LICENSE
*.md
**/*.md
.github/rulesets/**
.github/workflows/run-crucible-tracking.yaml
.github/workflows/crucible-ci.yaml
docs/**

call-real-core-crucible-ci:
needs: changes
if: ${{ github.event_name == 'workflow_dispatch' || needs.changes.outputs.only-docs != 'true' }}
uses: perftool-incubator/crucible-ci/.github/workflows/core-crucible-ci.yaml@main
with:
ci_target: "packrat"
ci_target_branch: "${{ github.ref }}"
github_workspace: "$GITHUB_WORKSPACE"
secrets:
registry_auth: ${{ secrets.CRUCIBLE_CI_ENGINES_REGISTRY_AUTH }}
ci_registry_auth: ${{ secrets.CRUCIBLE_CI_ENGINES_REGISTRY_AUTH }}
quay_oauth_token: ${{ secrets.CRUCIBLE_QUAYIO_OAUTH_TOKEN }}

call-faux-core-crucible-ci:
needs: changes
if: ${{ github.event_name != 'workflow_dispatch' && needs.changes.outputs.only-docs == 'true' }}
uses: perftool-incubator/crucible-ci/.github/workflows/faux-core-crucible-ci.yaml@main

crucible-ci-complete:
needs: [ call-real-core-crucible-ci, call-faux-core-crucible-ci ]
if: always()
runs-on: ubuntu-latest
steps:
- name: Check Results
if: >-
contains(needs.*.result, 'failure') ||
contains(needs.*.result, 'cancelled')
run: exit 1
- run: echo "crucible-ci complete"
16 changes: 0 additions & 16 deletions .github/workflows/faux-crucible-ci.yaml

This file was deleted.

24 changes: 24 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Packrat - System Information Collector

## Purpose
Collects system information from test endpoints for reproducibility. Gathers hardware, OS, kernel, and configuration details that may affect benchmark results.

## Language
Bash — single script `packrat` (~715 lines)

## Key Files
| File | Purpose |
|------|---------|
| `packrat` | Main collection script — runs on each endpoint during a test |
| `rickshaw.json` | Declares integration with rickshaw (roles, parameters) |
| `workshop.json` | Engine image build requirements (packrat runs on engines/endpoints, not the controller) |

## Collectors
14 parallel collectors: distro, package_manager, env, cpu, device, system, kernel, block, memory, net, cgroup, libvirt, firewall, container

## Conventions
- Primary branch is `master`
- Creates a `packrat-archive/` directory containing collected data, compressed with xz
- Logs activity to `packrat.log`
- Runs as part of the engine script execution phase during a benchmark
- Uses standard Bash modelines and 4-space indentation
39 changes: 38 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,39 @@
# packrat
A project to facilitate collection of information that describes a system and it's environment
[![CI Actions Status](https://github.com/perftool-incubator/packrat/workflows/crucible-ci/badge.svg)](https://github.com/perftool-incubator/packrat/actions)

A system information collection utility for the [crucible](https://github.com/perftool-incubator/crucible) performance testing framework.

## Purpose

Packrat captures comprehensive system and environment data from test endpoints during benchmark execution. This ensures reproducibility by documenting the exact hardware and software configuration at the time of testing.

## Usage

Packrat runs automatically as part of crucible's engine execution phase via rickshaw. It can also be run standalone:

```
./packrat <destination-directory>
```

This creates a `packrat-archive/` subdirectory containing all collected data, compressed with xz.

## Data Collected

Packrat runs 14 parallel collectors:

| Collector | Data |
|-----------|------|
| distro | OS release, tuned profiles |
| package_manager | Installed RPM packages |
| env | Environment variables, hostname, virtualization type |
| cpu | lscpu, /proc/cpuinfo, intel_pstate settings |
| device | lspci, interrupt assignments |
| system | dmidecode, lstopo |
| kernel | dmesg, uname, lsmod, sysctl, SELinux, module parameters, clocksource, IOMMU |
| block | lsblk, device-mapper, LVM, block queue settings |
| memory | meminfo, slabinfo, hugepages, transparent hugepage, NUMA node info |
| net | ifconfig, bridge, nmcli, ethtool, network device sysfs |
| cgroup | cpuset and cpu cgroup configuration |
| libvirt | virsh sysinfo, capabilities, domains, networks, pools |
| firewall | iptables, ebtables, nft, firewall-cmd |
| container | podman info, images, version |
Loading