GSoC 2025 Project #11 GENN :: Moving GeNN’s automated testing from Jenkins to GitHub actions (175h)

Mentors: Jamie Knight <J.C.Knight@sussex.ac.uk> and Thomas Nowotny <t.nowotny@sussex.ac.uk>

Skill level: novice/intermediate

Required skills: Github, Python

Time commitment: Full time (175 hours)

Forum for discussion

About: GeNN is a C++ library that generates code for efficiently simulating Spiking Neural Networks (SNNs) using GPUs. GeNN has a large number of C++ unit tests and Python integration tests which are currently run for each commit via a Jenkins-based platform.

Aims: For this project, you will move this flow to GitHub actions and potentially integrate new functionality such as automating documentation building and making releases.

Website: GitHub - genn-team/genn: GeNN is a GPU-enhanced Neuronal Network simulation environment based on code generation for Nvidia CUDA.

Tech keywords: Github, pytest, google test

hey @jamie @tnowotny

Here are the questions in my mind—

Questions on My Mind:

  1. Why are we switching to GitHub Actions? (I’m curious and really wanted to know to make sure I understand the motto).
  2. Which tool should we use for automated documentation? Also, what does “making releases” mean? Is it about versioning documentation like 1.9, 1.20, etc.? ( I will do some research on this to choose the options available )
  3. What else can I add to this flow to follow best practices? ( Need help from your end as well along with that I will brainstorm for improvements.

I’m documenting everything I’m learning in the GitHub Wiki. I’d love to hear your suggestions, and could you guide me on how to get started? :slightly_smiling_face:

Thank you for repeating your (excellent!) questions here. I was waiting for these forums to be created so my answers weren’t lost in that giant GSoC updates thread!

  1. Why are we switching to GitHub Actions? (I’m curious and really wanted to know to make sure I understand the motto).

We don’t really want to to keep maintaining our own server to run Jenkins and Github actions has, not only pretty much become the standard tool, but it also supports a lot more functionality like running a matrix of builds on different base images for better test coverage.

  1. Which tool should we use for automated documentation? Also, what does “making releases” mean? Is it about versioning documentation like 1.9, 1.20, etc.? ( I will do some research on this to choose the options available )

Building the documentation (PyGeNN documentation — PyGeNN documentation) is a little complex (hence the fact we haven’t already automated it with Jenkins):

  1. Convert C++ documentation to Python doc strings with (genn/pygenn/src/build_doc_strings.sh at master · genn-team/genn · GitHub)
  2. Build PyGeNN as described in Installation — PyGeNN documentation
  3. Build documentation with the Makefile at genn/docs/Makefile at master · genn-team/genn · GitHub.
  4. Copy output to github pages

That is the main thing we would like to be automatically triggered when creating a github release.

  1. What else can I add to this flow to follow best practices? ( Need help from your end as well along with that I will brainstorm for improvements.

Good question! Have a look at other open source projects and see what sort of additional functionality their continuous integration provides. Possibilities would be Python type + style checking and C++ static analysis

Haha, yeah, the first and last one sound fine! :laughing: But we definitely need proper planning to set up a solid system.

I’d say start by understanding what’s currently happening in Jenkins first. That way, we will have a clear idea of what needs to be replicated or improved in GitHub Actions. Once we map that out, we can tackle automating the documentation system properly without missing any steps.

What do you think?

I’d say start by understanding what’s currently happening in Jenkins first

Excellent plan - the Jenkins pipeline is defined here:

Hey, sorry! I was on vacation last week, so I couldn’t respond sooner. I’ll update you on my understanding of the Jenkins flow shortly.

No problem at all - if you have any questions about the Jenkins, please don’t hesitate to ask!

sure! will let you know if I get stuck anywhere :slight_smile:

I’ve gone through the Jenkins workflow and the ideas you suggested. Based on that, I’ve documented my understanding. Could you review it and let me know if I’m on the right track? :smile:

Here’s the link: Jenkins Workflow and Requirements

Im new to this and want to contribute
.please guide me

Hey please check the activity which i have gone through probably it may help!

Very much on the right track - you definitely understand what’s going on well enough to write a great proposal! Please share a draft with me when you’re ready so I can help. Few comments:

  • GitHub Actions allows 500MB in the free tier.

Do you know if Github education tier (which our project is on) increases this at all?

  • If a node has the required properties, it is selected as a builder node.

Running Tests and Building Artifacts

For completeness, to get C++ coverage a seperate version of PyGeNN is built at genn/Jenkinsfile at master · genn-team/genn · GitHub and purely used for running tests.

I think this mechanism should be entirely replaced by a proper github actions matrix strategy.

  1. Ensure PyGeNN is built as described in its installation guide (Currently, the website is down).

Which website? Installation — PyGeNN documentation seems fine

  • Do the entire migration manually.

I would strongly favour doing the migration manually so we both get a better understanding of how all the parts make and can do things better than was possible with Jenkins (also I’m not at all sure how automatic migration would work with a fully scripted pipeline line this)

thanks @jamie for sharing me the discussion forum, and hello everyone my name is aryan jain, im a fullstack developer student pursuing my btech in computer science, i have a good experience while setting up ci/cd and i really like to contribute to opensource. here is my github profile : gitsofaryan, Linkedin and here is my initial work for this project : WIP: Migrate GeNN Automated Testing from Jenkins to GitHub Actions

Looking forward for your guidance and contribution full summer with the Genn team.
Thanks for the opportunity.

Cool! :blush: I’ll start drafting a proposal and reach out if I get stuck along the way.

  • The PyGeNN installation page looks good! However, it was initially blocked by my institute for some reason. I accessed it using a VPN, and it worked fine.

  • Since our pipeline is scripted, we won’t be able to migrate automatically—I verified this with the documentation. Let’s proceed with a manual migration instead; it’ll be a great learning experience for me as well!

  • Regarding GitHub Actions for the education tier, we have 2GB of storage, which should be enough for 102 builds. To manage space efficiently, we can retain only the latest 100 builds. What do you think?

  • And regarding the proposal do we need to follow the particular structure which is mentioned or, have that as a baseline requirement?

  • And about the timeline, should I make use of complete 12 weeks or else can we cut the weeks I am thinking to effectively use all the 12 weeks.

Glad to hear GitHub education tier has less restrictive limits - retaining 100 builds seems sensible.

Regarding the proposal, INCF provides a template at INCF GSoC 2025 Application template - Google Docs.

Regarding the timeline, as this is a 175 hour project, you should feel free to spread it across the 12 weeks as you choose.

1 Like