Skip to content

Build and test conda-recipe-cf for Intel Python CI - #265

Open
jharlow-intel wants to merge 1 commit into
masterfrom
ci/intel-python-ci
Open

jharlow-intel wants to merge 1 commit into
masterfrom
ci/intel-python-ci

Conversation

@jharlow-intel

@jharlow-intel jharlow-intel commented Oct 28, 2026 •

Copy link
Copy Markdown
Collaborator

Description

Adds what Intel Python CI (gh-ci) needs from mkl-service, as IntelPython/mkl_fft#400, IntelPython/mkl_random#204 and IntelPython/mkl_umath#294 do for theirs: a ci/ directory and a new workflow, .github/workflows/intel-ci.yml. The workflow builds conda-recipe-cf for every platform and Python version the recipe declares, and tests each package in a clean conda-forge environment with ci/test.py. Intel's Jenkins then waits for that run, tests each package again on its own machines, scans it, and for a release tag publishes the packages it tested. Jenkins isn't switched on for mkl-service yet, so until it is, this only adds a GitHub Actions workflow.

  • ci/matrix.py, ci/build.py, ci/hooks.py: the shared gh-ci scripts, standard library only, byte-identical to the other three repositories.
  • ci/test.py: runs pytest --pyargs mkl against the installed package and writes a JUnit report.
  • ci/config.yml: the workflow, the artifact names (mkl-service {platform} Python {python}, as conda-build-test.yml names them) and the test requirement, pytest.
  • conda-recipe-cf/conda_build_config.yaml: now lists the Python versions conda-build-test.yml builds today, 3.10 to 3.15 plus 3.14t and 3.15t, for ci/matrix.py. conda-build-test.yml passes --python itself, so it is unaffected. mkl-service doesn't depend on NumPy, so there is no NumPy variant.
  • ci/README.md, and pointers in AGENTS.md and .github/AGENTS.md.

A pull request builds the oldest and the newest regular Python versions on Linux and Windows; pushes to master and tags build all 16.

Verification

  • python ci/matrix.py lists 16 builds, Linux and Windows for 3.10 to 3.15, 3.14t and 3.15t; with --event pull_request it lists 3.10 and 3.15 on both.
  • ci/config.yml passes gh-ci's own plan check.
  • Lint: pre-commit run on every changed file, all hooks passing, and zizmor on intel-ci.yml, no findings.
  • Tests: this pull request's Intel Python CI run built Linux and Windows for Python 3.10 and 3.15, the oldest and the newest, and ran ci/test.py against each package; on Windows 3.10, 188 passed and 22 skipped.

Not verified

  • The builds a tag or a push to master adds, Python 3.11 to 3.14, 3.14t and 3.15t; they use the same jobs.
  • The Jenkins side, which isn't enabled for mkl-service yet.

Add ci/ and .github/workflows/intel-ci.yml, as in IntelPython/mkl_fft#400,
IntelPython/mkl_random#204 and IntelPython/mkl_umath#294, and list the Python
versions in conda-recipe-cf/conda_build_config.yaml for ci/matrix.py.
@jharlow-intel jharlow-intel self-assigned this Oct 28, 2026
Copilot AI balanced review requested due to automatic review settings October 28, 2026 21:28

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🔵 Needs a closer look

The native-package pipeline requires end-to-end Linux/Windows CI validation of conda solving and runtime loading for 3.14t/3.15t, which remain unverified by standard-library-only checks.

No open issues 🎉

What changed in this PR

Adds GitHub Actions build and package testing for Intel Python CI, preparing mkl-service for Jenkins integration. Jenkins is not yet enabled for this repository.

Changes:

  • Derives Linux and Windows build matrices from the conda-forge recipe, selecting four builds for pull requests and all 16 for master pushes and tags.
  • Adds build and isolated package-test scripts, with pytest results written as JUnit reports.
  • Documents the integration and its configuration.
File Description
conda-recipe-cf/​conda_build_config.yaml Declares Python versions and ABI variants for matrix generation.
ci/​test.py Checks the interpreter and runs installed-package tests with JUnit output.
ci/​README.md Documents CI operation and local commands.
ci/​matrix.py Generates platform and Python matrices from build declarations.
ci/​hooks.py Installs artifacts into clean environments and runs package tests.
ci/​config.yml Defines the workflow, artifact naming, and test requirements.
ci/​build.py Builds packages for a selected Python variant and collects artifacts.
AGENTS.md Adds a pointer to Intel Python CI documentation.
.github/​workflows/​intel-ci.yml Orchestrates matrix generation, builds, artifact uploads, and tests.
.github/​AGENTS.md Documents the workflow and its recipe-derived matrix exception.

Review effort: Balanced

@@ -1,3 +1,13 @@
# Python versions for ci/matrix.py, one per line, without selectors
python:
- "3.10"

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

conda-forge dropped 3.10 python, and so it's a bit confusing to have 3.10 listed here

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

I was planning to rely on similar matrix building in #264 where I tried to improve cf testing workflow.
But we should not have 3.10 here then.

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.

3 participants