{"id":15912206,"url":"https://github.com/cdeil/scipy-ci","last_synced_at":"2025-04-03T02:27:08.518Z","repository":{"id":7151966,"uuid":"8450528","full_name":"cdeil/scipy-ci","owner":"cdeil","description":"Continuous integration for scientific Python packages","archived":false,"fork":false,"pushed_at":"2013-04-18T17:06:10.000Z","size":116,"stargazers_count":0,"open_issues_count":2,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-02-08T16:41:27.580Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cdeil.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-02-27T07:02:02.000Z","updated_at":"2013-04-18T17:06:12.000Z","dependencies_parsed_at":"2022-09-22T11:51:30.850Z","dependency_job_id":null,"html_url":"https://github.com/cdeil/scipy-ci","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdeil%2Fscipy-ci","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdeil%2Fscipy-ci/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdeil%2Fscipy-ci/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdeil%2Fscipy-ci/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cdeil","download_url":"https://codeload.github.com/cdeil/scipy-ci/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246924131,"owners_count":20855669,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-06T16:02:59.341Z","updated_at":"2025-04-03T02:27:08.498Z","avatar_url":"https://github.com/cdeil.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Continuous integration for scientific Python packages\n\nThis is an effort to create `scipy-ci`,\na continuous integration (CI) system for the scientific Python package ecosystem.\n\n## The problem\n\nMaking and distributing a scientific Python package is easy.\nMaking it work for most users and avoid breakage of existing functionality over the years is hard,\nbecause of the multitude of user systems:\n\n* Several Linux, Mac OS X and Windows versions\n* Python 2.6, 2.7, 3.2, 3.3 (some packages support even more versions)\n* Multiple versions of dependencies,\n  e.g. packages that are dependent on numpy should work with the numpy releases\n  1.5, 1.6 and 1.7 from the past few years.\n\nUp to now each package had their own little CI system ususally testing\nonly a few combinations, e.g. a lot of packages use https://travis-ci.org to test on Ubuntu Linux.\nOther systems / versions were tested \"in the field\" by users, and the multitude of bug reports\nshow that things do go wrong quite frequently.\n\n## The solution\n\nActually this is not *the solution*, but it would certainly if we join forces and set up a central CI\nsystem, i.e. a server with a dashboard summarizing / archiving all builds, and a bunch of build slaves.\n\nThe hope is that by pooling resources and knowledge we will achieve that in the end every scientific\nPython package is covered by a large test matrix and developers can spend more time on new features\nbecause they have to spend less time on maintenance.\n\nIf there is a test error we will (automatically or manually) create an issue in the tracker of that\nproject and if needed give the developer ssh access to that machine so that he can debug it himself.\n\nAnother thing that is important is to (automatically or quick to add manually)\ntest release candidates to catch problems before the release happens.\n\n## The plan\n\nThis project is just starting (Feb 2013), `scipy-ci` doesn't exist yet, we are in the process of\nfiguring out how to set it up.\n\nWe have started by setting up a [jenkins-ci](http://jenkins-ci.org) server on a\n[numfocus](http://numfocus.org)-sponsored Mac at TODO.\nAt the moment there is a small test matrix for numpy and scipy,\nwhich we plan to expand to the [Scipy stack](http://scipy.github.com/stackspec.html)\nand eventually include other scientific Python packages.\nPlease note that this is just to get some experience, whether we will use Jenkins or one of the\nother continous integration systems on the market for `scipy-ci` will be discussed,\npossibly there will be a trial-and-error phase where we try out a few promising options.\n\nFor now we don't have a webpage or mailing list.\nPlease write to the [numfocus mailing list](https://groups.google.com/forum/?fromgroups#!forum/numfocus)\nif you want to help set up and maintain `scipy-ci` or if you might be able to contribute\nbuild machines at your organization / home or money to buy more build machines via Numfocus.\n\nTODO: Announce a google hangout \"Kickoff discussion on scipy-ci\"\n\n## Existing continous integration systems.\n\nWe don't want to re-invent the wheel, so let's first look at the existing continous integration systems.\n\n### travis-ci\n\nA lot of scientific Python packages use [travis-ci](https://travis-ci.org) to automatically test their master\nbranch and pull requests. It's free, has great github integration, but only tests Ubuntu Linux and has a build\ntimeout of 15 minutes, i.e. scipy or packages depending on scipy can't use it because the build times out.\nAlso it's for Ubuntu Linux only and probably isn't flexible enough to set up `scipy-ci` as we describe it above.\n\nExamples:\n* [numpy](https://travis-ci.org/numpy/numpy)\n* [ipython](https://travis-ci.org/ipython/ipython)\n* [matplotlib](https://travis-ci.org/matplotlib/matplotlib)\n* [astropy](https://travis-ci.org/astropy/astropy)\n\n### shiningpanda-ci\n\n[shiningpanda-ci](https://jenkins.shiningpanda.com/astropy/) is a low-cost (was free when they started up)\nhosted continous integration system.\nThey run a Jenkins server for you and offer Linux and Windows build machines, and let you add other build machines\nif you want more build power or e.g. also test on Macs.\n\nGiven that we have a numfocus-sponsored server for `scipy-ci` where we have root access and can set up whatever\nwe like, I don't think we want to use shiningpanda-ci, but it is a good example to look at.\n\nExamples:\n\n* [ipython](https://jenkins.shiningpanda.com/ipython/)\n* [astropy](https://jenkins.shiningpanda.com/astropy/)\n\n### Scientific Python CI systems\n\nHere are links to the CI dashboards for the [Scipy stack](http://scipy.github.com/stackspec.html) packages:\n\n* Numpy: [travis-ci](https://travis-ci.org/numpy/numpy), [shiningpanda](https://jenkins.shiningpanda-ci.com/numpy/) (not active)\n* Scipy: [buildbot](http://buildbot.scipy.org),\n  [shiningpanda](https://jenkins.shiningpanda-ci.com/scipy/) (not active)\n* matplotlib: [travis-ci](https://travis-ci.org/matplotlib/matplotlib)\n* IPython: [travis-ci](https://travis-ci.org/ipython/ipython)\n* Pandas: [travis-ci](https://travis-ci.org/pydata/pandas)\n* Sympy: [travis-ci](https://travis-ci.org/sympy/sympy)\n\nOther scientific Python packages:\n\n* Nipy: [buildbot](http://nipy.bic.berkeley.edu/builders) [nipype travis-ci](https://travis-ci.org/nipy/nipype)\n* Astropy: [travis-ci](https://travis-ci.org/astropy/astropy), [shiningpanda](https://jenkins.shiningpanda.com/astropy/)\n* scikit-learn: [travis-ci](https://travis-ci.org/scikit-learn/scikit-learn),\n  [shiningpanda](https://jenkins.shiningpanda-ci.com/scikit-learn/)\n* pytables: [shiningpanda](https://jenkins.shiningpanda-ci.com/pytables/), [Jenkins](http://hudson.openmicroscopy.org.uk/job/PyTables/)\n* scikit-image: [shiningpanda](https://jenkins.shiningpanda-ci.com/skimage/) (not active)\n* sage: [buildbot](http://build.sagemath.org/sage/waterfall)\n\nIt's good to make this more complete, feel free add links and make a pull request.\n\n### Non-Python CI systems\n\nThe following projects could also be useful to look at, because they are similar in spirit to what\nwe want to do, even if they are not for Python:\n\n* [gammalib/ctools Jenkins](https://cta-jenkins.irap.omp.eu/view/CTA%20Python/) (an example of build pipelines with Jenkins)\n* http://openbuildservice.org (for testing / packaging on multiple Linuxes)\n* TODO: Link to debian testing system!?\n* http://upstream-tracker.org (an example of testing for API breakage of C / C++ / Java libraries)\n\n## Continous integration system options\n\n* [Jenkins](http://jenkins-ci.org): free\n* [Jetbrains Teamcity](http://www.jetbrains.com/teamcity/): cost?\n* [Atlassian Bamboo](http://www.atlassian.com/software/bamboo/overview): cost?\n* [Buildbot](http://trac.buildbot.net): free\n\nCI hosts:\n\n* [travis-ci](https://travis-ci.org): free\n* [ShiningPanda](https://www.shiningpanda-ci.com): cost?\n* [Snakebite](http://www.snakebite.net): hosted, Python-oriented, cost?, open?\n* [CloudBees](http://www.cloudbees.com/foss/): ???\n\n## References\n\n### Articles\n\n* http://vperic.blogspot.de/2011/05/continuous-integration-and-sympy.html\n* \n\n### Mailing list discussions\n\n* [2012-05-01 \"Continous integration\" on numpy-discussion](http://mail.scipy.org/pipermail/numpy-discussion/2012-May/062041.html)\n* [2012-02-16 \"Buildbot/continuous integration\" on numpy-discussion](http://mail.scipy.org/pipermail/numpy-discussion/2012-February/060627.html)\n* [2012-08-23 \"Snakebite build slaves and developer SSH/GPG public keys\" on numfocus](https://groups.google.com/d/topic/numfocus/7ETLGs_T1yI/discussion)\n\n### Other\n\n\n* https://github.com/sympy/sympy-bot\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcdeil%2Fscipy-ci","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcdeil%2Fscipy-ci","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcdeil%2Fscipy-ci/lists"}