- Notifications
You must be signed in to change notification settings - Fork 6
Add CircleCI test-splitting workflow#11
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base:main
Are you sure you want to change the base?
Uh oh!
There was an error while loading. Please reload this page.
Changes from all commits
678dc2f624b07f940cf8d9ac7b5cd32b97380cf2e1File filter
Filter by extension
Conversations
Uh oh!
There was an error while loading. Please reload this page.
Jump to
Uh oh!
There was an error while loading. Please reload this page.
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,49 @@ | ||
| version: 2.1 | ||
| orbs: | ||
| matlab: mathworks/matlab@1 | ||
| win: circleci/windows@5 | ||
| # Define the execution environments for different operating systems | ||
| executors: | ||
| linux: | ||
| machine: | ||
| image: default | ||
| macos: | ||
| macos: | ||
| xcode: 16.4.0 | ||
| windows: | ||
| win/default | ||
| jobs: | ||
| split-and-run-test: | ||
| parameters: | ||
| os: | ||
| type: executor | ||
| executor: << parameters.os >> | ||
| # Use parallelism to split tests across multiple containers | ||
| parallelism: 2 | ||
| steps: | ||
| - checkout | ||
| # Install MATLAB and required products | ||
| - matlab/install: | ||
| products: > | ||
| MATLAB_Compiler_SDK | ||
| MATLAB_Test | ||
| # Builds mex file and Python package from MATLAB function | ||
| - matlab/run-build: | ||
| tasks: mex buildPythonPackage | ||
| # Run MATLAB tests, splitting them across parallel containers | ||
Member There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I'm curious - does CircleCI handle test splitting by distributing them across multiple separate machines, or are the tests simply divided among different cores on the same machine? | ||
| - matlab/run-tests: | ||
| select-by-name: $(circleci tests glob "tests/**/*.m" | circleci tests split | awk -F'[\\\\/.]' '{print $(NF-1) "/*"}') | ||
Member There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I believe this configuration currently splits the tests alphabetically by default. Would it make sense to add comments or examples showing how to split tests based on file size or previous timing data as well? | ||
| workflows: | ||
| test-splitting-build: | ||
| jobs: | ||
| # A job will run for each OS present in the matrix | ||
| - split-and-run-test: | ||
| matrix: | ||
| parameters: | ||
| os: [linux, macos, windows] | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -11,7 +11,7 @@ executors: | ||
| image: default | ||
| macos: | ||
| macos: | ||
| xcode: 15.4.0 | ||
| xcode: 16.4.0 | ||
| windows: | ||
| win/default | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -11,7 +11,7 @@ pipeline{ | ||
| } | ||
| axis{ | ||
| name 'RELEASE' | ||
| values 'R2024b', 'R2025a' | ||
| values 'R2025a', 'R2025b' | ||
| } | ||
| } | ||
| stages{ | ||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Instead of updating the releases frequently, does it make sense to have one fixed release and other as 'latest'?