Google Summer of Code; First Evaluation

Ndubuisi Onyemenam
Studevs
Published in
3 min readJul 22, 2019

After the Community bonding period for GSoC, it was time to dive into the coding period. The coding period featured three phases with students working on a part of their summer project per phase and being evaluated based on their work and the timelines in their proposal.

For my First evaluation I had proposed to setup Jenkins, Integrate Psalm, and have Psalm Run on Some CiviCRM Repositories. Easy right? Not really, lol.

Jenkins GitHub CI/CD work flow

Problem 1: Installing Jenkins

Jenkins is a CI/CD tool that can automate jobs on any specified Git repository. For this task my Organization Admins provided me and my mentors with a virtual machine for the installation. All thanks to this awesome post from Digital Ocean, My mentor Jack was able to run the installation in a bit.

PS: I never work alone. My awesome mentors work with me.

Problem 2: Getting Jenkins to run Psalm on CiviCRM Repositories

Psalm is a static analysis tool that checks a code base for errors without actually running the code. If integrated into a projects continuous Integration tool chain psalm can detect subtle errors before they are a merged.

During the project proposal phase, my community admins mentioned that the problem with integrating quality assurance tools is that they always fail on large code bases. That did happen, as I had errors while running Psalm on the Civi-core repo.

PS: It is easier to test CI/CD tools locally before moving to remote servers. I was always in a hurry to start working on my project directly on the remote server as I imagined working locally would be double the work, and I had little or no time, lol. My mentors did a good job of encouraging me to try out things locally first and that really eased my workflow.

Problem 3: Getting Psalm to run on Civi-core folder without errors

While choosing a static analysis tool for this project , I picked Psalm among other options because Psalm was under active development and the maintainers where always quick to fix issues raised. So I created issues to solve errors faced and the Psalm team was quick enough to fix the bugs.

PS: If you can help it, always choose tools under active development, that will save you a lot of work!

Wrap Up

I have been able to integrate Jenkins, Psalm, and Github to run without errors, now I have to work on integrating psalm to run on Pull requests to Civi-Core and also display run results. Incase you are looking to integrate any CI/CD tool to github you should check out this post, and this youtube Video.

And Yes, I passed the GSoC first Evaluation!

--

--

Ndubuisi Onyemenam
Studevs

Human @earth, PHP and Node.js Developer. Wait for more .... Hire me @onyemenamndu@gmail.com