Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
4f9402d
Stage 1: Add macOS compatibility and platform detection
tallpsmith Dec 9, 2025
f71c12f
Stage 2: Add --native-arch and --emulate flags for architecture selec…
tallpsmith Dec 9, 2025
1162e7f
Fix git worktree support in container setup
tallpsmith Dec 9, 2025
d6ed466
Simplify git worktree fix - create minimal .git dir
tallpsmith Dec 9, 2025
4510336
Fix git worktree handling - remove file before creating dir
tallpsmith Dec 9, 2025
f42aaa3
Use sudo for git worktree .git file removal
tallpsmith Dec 9, 2025
2e50128
Add Ubuntu 24.04 ARM64 package list for local testing
tallpsmith Dec 9, 2025
04d7110
Add comprehensive documentation for local CI implementation
tallpsmith Dec 9, 2025
15cbf4c
Stage 3: Add --quick mode for multi-platform testing
tallpsmith Dec 10, 2025
7772893
docs: Integrate macOS local CI support into build/ci/README
tallpsmith Dec 10, 2025
3b8189a
Remove unnecessary git worktree handling code
tallpsmith Dec 10, 2025
8a28524
docs: Integrate macOS local CI support into build/ci/README
tallpsmith Dec 10, 2025
cb8fb71
refactor: Improve code quality and documentation for local CI
tallpsmith Dec 10, 2025
c778b12
Fix: Support dynamic task lists and aarch64 package resolution for lo…
tallpsmith Dec 10, 2025
5359219
Fix: Only recreate .git directory if it's not already a directory
tallpsmith Dec 10, 2025
fdad1e1
Fix: Use git init to create valid repository in containers
tallpsmith Dec 10, 2025
b49db78
Fix: Copy complete .git directory to container instead of reinitializing
tallpsmith Dec 10, 2025
d760e12
Fix: Debian+12+aarch64 package list has non-existent systemd-dev
tallpsmith Dec 10, 2025
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
53 changes: 53 additions & 0 deletions build/ci/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,59 @@ Workflow descriptions are located in `.github/workflows`, platform specific PCP
* QA: Runs the entire testsuite on pull requests and daily at 17:00 UTC, and publishes the results at https://performancecopilot.github.io/qa-reports/
* Release: Triggered when a new tag is pushed, creates a new release and pushes it to https://packagecloud.io/performancecopilot/pcp

## Quick Start - Running CI Locally

Test your changes against a single platform:
```bash
# Full CI pipeline (setup → build → install → init_qa → qa_sanity)
build/ci/ci-run.py ubuntu2404-container reproduce --until qa_sanity

# Just setup and build (quick feedback on compilation issues)
build/ci/ci-run.py ubuntu2404-container reproduce --until build

# Run individual tasks
build/ci/ci-run.py ubuntu2404-container task build
build/ci/ci-run.py ubuntu2404-container task qa_sanity
```

## Supported Platforms for Local Testing

See `.github/workflows/ci.yml` for the authoritative list of platforms being tested in CI. Currently tested platforms include:

- ubuntu1804-i386-container (Ubuntu 18.04, 32-bit)
- ubuntu2004-container (Ubuntu 20.04)
- ubuntu2204-container (Ubuntu 22.04)
- ubuntu2404-container (Ubuntu 24.04 LTS, recommended for new development)
- fedora42-container (Fedora 42)
- fedora43-container (Fedora 43)
- centos-stream8-container (CentOS Stream 8)
- centos-stream9-container (CentOS Stream 9)
- centos-stream10-container (CentOS Stream 10)

Additional platforms available in the codebase but not in the default CI matrix (see comments in `.github/workflows/ci.yml`):
- debian12-container
- debian13-container
- fedora-rawhide-container

## Architecture Support

By default, the CI scripts use your native host architecture:
- **macOS ARM64 (Apple Silicon)**: Runs native ARM64 containers (fast, no emulation)
- **macOS Intel**: Runs amd64 containers natively
- **Linux**: Always uses amd64 containers

To force amd64 emulation on macOS for exact CI parity (requires Rosetta):
```bash
build/ci/ci-run.py --emulate ubuntu2404-container reproduce
```

## Troubleshooting (macOS)

If you see "exec: Exec format error" with amd64 emulation, Rosetta may have become unstable. Restart the podman machine:
```bash
podman machine stop && podman machine start
```

## Reproducing test failures
```
build/ci/ci-run.py ubuntu2004-container|fedora38-container|centos9-container|... reproduce
Expand Down
Loading
Loading