Has your research code ever broken or given wrong results after you or a collaborator changes something? Have you ever found yourself unable to reproduce some — potentially published — results? As researchers, we can apply a few basic principles of modern software development to our scientific software development process, both to mitigate the risk of such failures and to save time.
One popular method, referred to as Continuous Integration/Continuous Development (CI/CD), involves pushing software changes to a shared repository often in order to avoid the issues that result from individual versions of code diverging over time. This talk introduces a simple and tested workflow for scientific software development that relies on Git along with an automatic testing framework such as Jenkins or Github Actions.
Workshop format: Presentation
Target audience: This talk is intended for a wide research audience. Through examples, it will introduce the basic concepts of Git, testing, and automatic testing, so that you will be able to follow the presentation even if you have never heard of Git or Jenkins.
Knowledge prerequisites: Prior experience with version control using Git and Github is helpful but not strictly necessary. No prior experience with Jenkins or other automated testing tools is assumed.
Hardware/software prerequisites: Overarching requirements for all PICSciE virtual workshops are listed in this guide. Participants should ensure they have met these requirements in advance, as THERE WILL BE NO TECHNICAL TROUBLESHOOTING DURING THE WORKSHOP ITSELF! Having a Github account is recommended but not strictly necessary.
Learning objectives: Attendees will leave with a clear idea of what can be done with CI and automated testing tools, and, hopefully, some motivation to do it. Participants will also be armed with concrete information on how to set up a CI system on the Princeton cluster so that they can implement the workflow introduced in the talk for their own software development at Princeton.