Skip to content

Add GitHub Actions for C ABI checking#1

Merged
benfred merged 4 commits intobenfred:c_abi_checkerfrom
msarahan:add-github-actions-abi-check
Feb 2, 2026
Merged

Add GitHub Actions for C ABI checking#1
benfred merged 4 commits intobenfred:c_abi_checkerfrom
msarahan:add-github-actions-abi-check

Conversation

@msarahan
Copy link

Summary

Adds GitHub Actions workflows to automate C ABI compatibility checking, building on the existing ci/check_c_abi.py script from PR rapidsai#1749.

Changes

New Workflows

.github/workflows/check-c-abi.yaml

  • On PR: Downloads baseline ABI from main and checks for breaking changes
  • On merge to main: Extracts and stores ABI baseline as artifacts
  • Manual trigger: Allows bootstrapping the initial baseline

.github/workflows/store-c-abi-baseline.yaml

  • On release: Archives the main baseline with version-specific name
  • Stores in both artifacts (short-term) and baselines branch (permanent)

Integration

.github/workflows/pr.yaml

  • Adds check-c-abi job to PR pipeline
  • Blocks merge if breaking ABI changes are detected

Key Features

Intelligent baseline management:

  1. Try merge-base commit baseline (most accurate)
  2. Fall back to latest main baseline
  3. Fall back to fresh extraction if needed

Race condition prevention:

  • Commit-specific baselines (c-abi-baseline-{sha}, 90-day retention)
  • Latest main baseline (c-abi-baseline-main, never expires)
  • Concurrency control serializes baseline updates

Developer experience:

  • Automatic PR comments on ABI breaking changes
  • Clear error messages with actionable next steps
  • Transparent reporting of which baseline was used

Bootstrap Instructions

After merge, manually run the "C ABI Compatibility Check" workflow on main branch to create the initial baseline.

msarahan and others added 4 commits January 30, 2026 20:36
- Add check-c-abi.yaml workflow for PRs
- Add store-c-abi-baseline.yaml workflow for releases
- Integrate ABI check into pr.yaml pipeline

Co-authored-by: Cursor <cursoragent@cursor.com>
- Extract and store main baseline on push to main (never expires)
- PRs download and compare against main baseline
- Release workflow archives the main baseline with version tag
- Eliminates duplicate ABI extraction work

Co-authored-by: Cursor <cursoragent@cursor.com>
Enables bootstrapping the initial c-abi-baseline-main artifact

Co-authored-by: Cursor <cursoragent@cursor.com>
- Store baselines with commit SHA for precise comparisons
- Cascade: try merge-base → latest main → extract fresh
- Add concurrency control to prevent race conditions
- Report which baseline source was used for transparency

Co-authored-by: Cursor <cursoragent@cursor.com>
Copy link
Owner

@benfred benfred left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this looks amazing - thanks for this @msarahan !

@benfred benfred merged commit d6d52ba into benfred:c_abi_checker Feb 2, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants