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.
Why are we switching to GitHub Actions? (I’m curious and really wanted to know to make sure I understand the motto).
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 )
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?
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!
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.
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 )
That is the main thing we would like to be automatically triggered when creating a github release.
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! 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.
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?
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.
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! 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?