Wednesday, June 1, 2022

Colby Peck - Gateware Week 8: Incremental Progress

To be perfectly honest, my 8th week on the Gateware team was much slower than I would have liked. Some outside life stuff came up which threw a bit of a wrench into my productivity. Still, I was able to make progress on the pipeline refactor. 

The big important thing that happened this week was a long discussion between myself and Lari of what exactly we wanted the end product to look like. When I say long, I mean it; I think that talk was multiple hours. The end goal we landed on was having the single header live in its own ‘release’ repo, alongside the doxygen documentation and any other user-facing documents. Any time a merge request into master is approved, the pipeline would then run all of the unit tests on source. If they pass, it will generate and test a single header. If those tests pass as well, it will automatically push a new single header to the repo, as well as generate and push fresh doxygen documentation.


I made a diagram of the current build pipeline for the discussion (it’s run three times; once on mac, once on windows, and once on linux).



In the meeting, we discovered that the next big hurdle to surmount in moving towards this pipeline is navigating the security concerns that come with trying to push changes from inside a publicly-accessible .yaml file. That’s still currently in the research phase. 


In the meantime, I made the single-header test project update the local single header any time it runs and all tests pass. This allowed me to clean up the existing unit test project and dummy main test project (they no longer generate or use a single header). As a result, our pipeline now only runs the single header compiler twice instead of six times. I’d love to cut that down to once, but that will require a bit more work. Presently, the single header test project is built twice; once in debug mode and once in release. I could probably make one of those builds reliant upon the other (at least in the pipeline), but that introduces some issues to manually updating the single header (which is what will have to be done if the pipeline cannot be fully automated).

No comments:

Post a Comment