Prevent accidental commits with DO NOT SUBMIT

One of the teeny tiny features I miss from the Google development stack is something called DO NOT SUBMIT. Here is what it is and how to replicate it in your projects.

January 11, 2021 · Tags: <a href="/tags/automation">automation</a>, <a href="/tags/ci">ci</a>, <a href="/tags/google">google</a>
Continue reading (about 5 minutes)

Enforcing code health via GitHub Actions

It is no secret that, in software development, the edit+build+test cycle must be as short as possible. The delay between saving a file and seeing the results has to be minimal and in the order of a few seconds, or else developers lose focus and productivity suffers. It’s equally important to ensure that the code is held to certain quality standards. Compiler warnings, for example, are part of any compilation and catch a set of common problems. But there are a lot more health checks that can be performed, such as ensuring that the code matches predefined coding guidelines, running a more aggressive linter to catch bugs that compiler warnings don’t notice, or even using ASAN or TSAN to validate the code’s memory and thread safety.

January 8, 2021 · Tags: <a href="/tags/automation">automation</a>, <a href="/tags/ci">ci</a>, <a href="/tags/rust">rust</a>
Continue reading (about 9 minutes)

Offloading maintenance tasks to Travis CI

From day one, the Kyua source tree has had docstring annotations for all of its symbols. The goal of such docstrings is to document the code for the developers of Kyua: these docstrings were never intended to turn into pre-generated HTML documentation because Kyua does not offer an API once installed. As you might have noticed, Doxygen is an optional component of the build and it used to run on each make invocation. This changed “recently”. Nowadays, Doxygen is only run asynchronously on Travis CI to report docstring inconsistencies post-submission (see the DO=apidocs matrix entry if you are impatient). Combined with feature branches that are only merged into master when green, this is as good as the previous approach of running Doxygen along the build. Scratch that: this is even better because running Doxygen locally on each build took significant resources and penalized edit/build/test cycles.

May 21, 2015 · Tags: <a href="/tags/automation">automation</a>, <a href="/tags/ci">ci</a>, <a href="/tags/kyua">kyua</a>, <a href="/tags/travis">travis</a>
Continue reading (about 8 minutes)