Skip to content

chore: sync .github/workflows and .rhiza/tests from cvxrisk#748

Merged
tschm merged 1 commit into
mainfrom
rhizaCI
May 24, 2026
Merged

chore: sync .github/workflows and .rhiza/tests from cvxrisk#748
tschm merged 1 commit into
mainfrom
rhizaCI

Conversation

@tschm
Copy link
Copy Markdown
Member

@tschm tschm commented May 24, 2026

Summary

  • Sync all .github/workflows from cvxrisk
  • Sync .rhiza/tests from cvxrisk

🤖 Generated with Claude Code

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings May 24, 2026 15:50
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR syncs the repository’s Rhiza-managed GitHub Actions workflows and Rhiza template tests to match the upstream cvxrisk template approach, primarily by delegating local workflows to canonical reusable workflows in jebel-quant/rhiza.

Changes:

  • Replaced several in-repo workflow implementations with calls to pinned jebel-quant/rhiza reusable workflows (CI, weekly, release, sync, marimo, CodeQL, book).
  • Updated .rhiza/tests workflow structure tests to assert reusable-workflow delegation instead of validating inlined job definitions.
  • Adjusted the standalone release.yml workflow build step from uv build to uvx hatch build.

Reviewed changes

Copilot reviewed 13 out of 13 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
.rhiza/tests/api/test_weekly_workflow.py Updates structural assertions to validate reusable workflow delegation for weekly workflow.
.rhiza/tests/api/test_release_workflow.py Updates structural assertions to validate reusable workflow delegation for release workflow.
.rhiza/tests/api/test_github_targets.py Adds tests intended to validate GitHub-related Make targets (currently guarded by existence checks).
.rhiza/tests/api/test_gh_aw_targets.py Adds tests intended to validate gh-aw Make targets (currently guarded by existence checks).
.rhiza/tests/api/test_ci_workflow.py Removes YAML-structure assertions; keeps Make-based OS matrix validation.
.github/workflows/rhiza_weekly.yml Switches weekly workflow to call the canonical reusable workflow.
.github/workflows/rhiza_sync.yml Switches sync workflow to call the canonical reusable workflow with inputs.
.github/workflows/rhiza_release.yml Switches release workflow to call the canonical reusable workflow.
.github/workflows/rhiza_marimo.yml Switches marimo workflow to call the canonical reusable workflow.
.github/workflows/rhiza_codeql.yml Switches CodeQL workflow to call the canonical reusable workflow; adds top-level permissions.
.github/workflows/rhiza_ci.yml Switches CI workflow to call the canonical reusable workflow.
.github/workflows/rhiza_book.yml Switches book workflow to call the canonical reusable workflow (retaining permissions).
.github/workflows/release.yml Changes build command to use uvx hatch build.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +3 to +4
These tests validate that the .github/github.mk targets are correctly exposed
and emit the expected commands without actually executing them.
# Import run_make from local conftest (setup_tmp_makefile is autouse)
from api.conftest import run_make

_GITHUB_MK = Path(__file__).resolve().parents[3] / ".rhiza" / "make.d" / "github.mk"
Comment on lines +17 to +95
if not _GH_AW_MK.exists():
pytest.skip("gh-aw.mk not found, skipping gh-aw tests", allow_module_level=True)


def test_gh_aw_targets_exist(logger):
"""Verify that gh-aw targets are listed in help."""
result = run_make(logger, ["help"], dry_run=False)
output = result.stdout

expected_targets = [
"install-gh-aw",
"gh-aw-compile",
"gh-aw-compile-strict",
"gh-aw-status",
"gh-aw-run",
"gh-aw-init",
"gh-aw-secrets",
"gh-aw-logs",
"gh-aw-validate",
"gh-aw-setup",
]

for target in expected_targets:
assert target in output, f"Target {target} not found in help output"


def test_install_gh_aw_dry_run(logger):
"""Verify install-gh-aw target dry-run."""
result = run_make(logger, ["install-gh-aw"])
assert result.returncode == 0


def test_gh_aw_compile_dry_run(logger):
"""Verify gh-aw-compile target dry-run."""
result = run_make(logger, ["gh-aw-compile"])
assert result.returncode == 0


def test_gh_aw_compile_strict_dry_run(logger):
"""Verify gh-aw-compile-strict target dry-run."""
result = run_make(logger, ["gh-aw-compile-strict"])
assert result.returncode == 0


def test_gh_aw_status_dry_run(logger):
"""Verify gh-aw-status target dry-run."""
result = run_make(logger, ["gh-aw-status"])
assert result.returncode == 0


def test_gh_aw_init_dry_run(logger):
"""Verify gh-aw-init target dry-run."""
result = run_make(logger, ["gh-aw-init"])
assert result.returncode == 0


def test_gh_aw_secrets_dry_run(logger):
"""Verify gh-aw-secrets target dry-run."""
result = run_make(logger, ["gh-aw-secrets"])
assert result.returncode == 0


def test_gh_aw_logs_dry_run(logger):
"""Verify gh-aw-logs target dry-run."""
result = run_make(logger, ["gh-aw-logs"])
assert result.returncode == 0


def test_gh_aw_validate_dry_run(logger):
"""Verify gh-aw-validate target dry-run."""
result = run_make(logger, ["gh-aw-validate"])
assert result.returncode == 0


def test_gh_aw_setup_dry_run(logger):
"""Verify gh-aw-setup target dry-run."""
result = run_make(logger, ["gh-aw-setup"])
# gh-aw-setup is interactive, so dry-run should succeed without interaction
assert result.returncode == 0

- name: Build
run: uv build
run: uvx hatch build
@tschm tschm merged commit cce52a8 into main May 24, 2026
48 checks passed
@tschm tschm deleted the rhizaCI branch May 24, 2026 15:59
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