Skip to content

WIP: Migrate GeNN Automated Testing from Jenkins to GitHub Actions#662

Draft
gitsofaryan wants to merge 7 commits intogenn-team:masterfrom
gitsofaryan:master
Draft

WIP: Migrate GeNN Automated Testing from Jenkins to GitHub Actions#662
gitsofaryan wants to merge 7 commits intogenn-team:masterfrom
gitsofaryan:master

Conversation

@gitsofaryan
Copy link
Copy Markdown

This is a work-in-progress (WIP) pull request to migrate GeNN's automated testing from Jenkins to GitHub Actions as part of the project outlined below. I’m showing my interest and progress to seek feedback from my mentors.

Project Details

  • 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)
  • 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 currently run via a Jenkins-based platform.
  • Aims: Move this flow to GitHub Actions and potentially integrate new functionality such as automating documentation building and making releases.
  • Website: https://github.com/genn-team/genn/
  • Tech Keywords: GitHub, pytest, google test

Current Progress

  • Created an initial GitHub Actions workflow (test.yml) to replicate the Jenkins pipeline.
  • Configured a matrix strategy to test across Ubuntu, Windows, and macOS with backends (cuda10, cuda11, cuda12, amd).
  • Added steps for dependency installation, CUDA setup, Google Test download, C++ unit tests, Python virtualenv, PyGeNN installation, and feature tests.
  • Included debug output to identify issues.

Known Issues

  • The workflow fails in the "Build GeNN and Unit Tests (Unix)" step with a CMake error: CMake Error: The source directory "/home/runner/work/genn/genn" does not appear to contain CMakeLists.txt. This suggests a mismatch in the directory structure or path to the GeNN source code.
  • Added ls -la debug output to investigate the directory contents.
  • CUDA setup fails on macOS due to unsupported OS (darwin), addressed by excluding CUDA jobs on macOS.

Next Steps

  • Verify the location of CMakeLists.txt using the debug output and adjust the cmake path.
  • Resolve any Windows or macOS-specific build issues.
  • Seek feedback on the current approach and directory structure.

Request for Feedback

Please review this PR and provide guidance on:

  • The correct location of CMakeLists.txt in the GeNN repository.
  • Any adjustments needed for the workflow to match the Jenkins setup.
  • Suggestions for handling CUDA on macOS/Windows runners.

Looking forward to your input! Thank you!

@gitsofaryan
Copy link
Copy Markdown
Author

gitsofaryan commented Mar 17, 2025

hi mentors @tnowotny @neworderofjamie, my name is aryan jain and im really interested in this project and looking to pursue this summer could you please guide me.
thankyou.

@neworderofjamie
Copy link
Copy Markdown
Contributor

This looks like a really good start - nice work! Few thoughts:

  • Not sure what you're trying to do with CMake - our build system isn't CMake-based and you're making the actual build command afterwards!
  • Probably for now, probably just focus on getting the CPU backend working - eventually we'll aim to test CUDA using custom runners

@gitsofaryan
Copy link
Copy Markdown
Author

@neworderofjamie thanks, i will work on this and streamline the test ci, is their any discussion group for gsoc?

@neworderofjamie
Copy link
Copy Markdown
Contributor

Yes, there is a discussion group at https://neurostars.org/t/gsoc-2025-project-11-genn-moving-genn-s-automated-testing-from-jenkins-to-github-actions-175h/32069. Also, I think you have probably done enough work to understand the issues so it might make sense to switch to proposal-writing!

@gitsofaryan
Copy link
Copy Markdown
Author

gitsofaryan commented Mar 17, 2025

@neworderofjamie @tnowotny,

Thank you, Jamie, for the positive feedback and insights—it’s motivating to hear this is a good start! I’ve reviewed your comments and the Jenkinsfile, and I’ve updated the workflow in this PR accordingly.

Updates Based on Feedback

  • Build System: I removed the cmake step since GeNN uses a Makefile-based system. The Unix build now uses make -C tests/unit, aligning with the Jenkinsfile. The Windows build continues to use msbuild.
  • Focus on CPU Backend: I simplified the workflow to test only the CPU backend (backend: [cpu]) and excluded CUDA/AMD jobs for now, deferring CUDA testing until custom runners are available. I’ve also excluded macOS for now, as I’m unsure if CPU testing is viable there—please let me know if this should be adjusted!
  • Debug Output: I kept the ls -la output to confirm the directory structure and adjusted paths to ${{ github.workspace }}.

Questions

  • Jamie: The Jenkinsfile uses make clean all COVERAGE=1 in tests/unit. Should I add specific Makefile targets (e.g., for C++ coverage) as you mentioned, or wait until the CPU build stabilizes?
  • Thomas: As a co-mentor, do you have suggestions for integrating Python type checking or C++ static analysis (per Jamie’s best practices idea) into this workflow?
  • Both: Is the current CPU-only approach sufficient for the initial migration, or should I prioritize replicating the full matrix (e.g., CUDA on Linux/Windows) with placeholders?

Next Steps

Background

I’m Aryan Jain, a B.Tech Computer Science student and full-stack developer (github.com/gitsofaryan) with CI/CD experience. I’m excited to contribute to GeNN this summer.

Looking forward to your guidance! Thanks for the opportunity.

@gitsofaryan gitsofaryan marked this pull request as draft March 24, 2025 18:05
@gitsofaryan
Copy link
Copy Markdown
Author

hey @neworderofjamie are we going for GSoC 2026?

@neworderofjamie
Copy link
Copy Markdown
Contributor

Nice to hear from you again Aryan! I'm afraid we're not going to be participating in Google Summer of Code this year - I'm going to be very busy this summer and I don't think I'll be able to dedicate
enough time to mentoring.

@gitsofaryan
Copy link
Copy Markdown
Author

Thanks @neworderofjamie for letting me know, Wish you best with your work this summer. I will look out to other INCFs projects.

@neworderofjamie
Copy link
Copy Markdown
Contributor

Thanks, you too! Marcel Stimberg always has interesting projects over at https://briansimulator.org/

@gitsofaryan
Copy link
Copy Markdown
Author

Thanks a lot @neworderofjamie

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants