mirror of
https://github.com/storybookjs/storybook.git
synced 2025-03-21 05:02:39 +08:00
28 lines
922 B
JavaScript
28 lines
922 B
JavaScript
const os = require('os');
|
|
|
|
/**
|
|
* The maximum number of concurrent tasks we want to have on some CLI and CI tasks.
|
|
* The amount of CPUS minus one, arbitrary limited to 15 to not overload CI executors.
|
|
* @type {number}
|
|
*/
|
|
const maxConcurrentTasks = Math.min(Math.max(1, os.cpus().length - 1), 15);
|
|
|
|
/**
|
|
* Use a simple round robin to filter input data according to the CI node currently running the script
|
|
* @param {Array} arrayOfData An array of anything you want
|
|
* @returns {Array} An array containing only the data that shoud be used by current CI node.
|
|
*/
|
|
function filterDataForCurrentCircleCINode(arrayOfData) {
|
|
const nodeIndex = +process.env.CIRCLE_NODE_INDEX || 0;
|
|
const numberOfNodes = +process.env.CIRCLE_NODE_TOTAL || 1;
|
|
|
|
return arrayOfData.filter((_, index) => {
|
|
return index % numberOfNodes === nodeIndex;
|
|
});
|
|
}
|
|
|
|
module.exports = {
|
|
maxConcurrentTasks,
|
|
filterDataForCurrentCircleCINode,
|
|
};
|