@@ -1653,3 +1653,47 @@ for more details.
16531653
16541654A complete project source code you can find in
16551655[step-7-webserver](step-7-webserver) directory.
1656+
1657+ ## Automatic software and hardware tests
1658+
1659+ It is a good practice for a software project to have a continuous
1660+ integration (CI) test. On every change pushed to the
1661+ repository, CI automatically rebuilds and tests all components.
1662+
1663+ Github makes it easy to do. We can create a `.github/workflows/test.yml` file
1664+ which is a CI configuration file. In that file, we can install ARM GCC
1665+ and run `make` in every example directory to build respective firmwares.
1666+
1667+ Long story short! This tells Github to run on every repo push:
1668+ https://github.com/cpq/bare-metal-programming-guide/blob/b0820b5c62b74a9b4456854feb376cda8cde4ecd/.github/workflows/test.yml#L1-L2
1669+
1670+ This installs ARM GCC compiler:
1671+ https://github.com/cpq/bare-metal-programming-guide/blob/b0820b5c62b74a9b4456854feb376cda8cde4ecd/.github/workflows/test.yml#L9
1672+
1673+ This builds a firmware in every example directory:
1674+ https://github.com/cpq/bare-metal-programming-guide/blob/b0820b5c62b74a9b4456854feb376cda8cde4ecd/.github/workflows/test.yml#L10-L18
1675+
1676+ That' s it! Extremely simple and extremely powerful. Now if we push a change to
1677+ the repo which breaks a build, Github will notify us. On success, Github will
1678+ keep quiet. See an [example successful
1679+ run](https://github.com/cpq/bare-metal-programming-guide/actions/runs/3840030588).
1680+
1681+ Would it be great to also test built firmware binaries on a real hardware, to
1682+ test not only the build process, but that the built firmware is correct and
1683+ functional? Easy. See my other guide [COMING SOON] for detailed instructions.
1684+
1685+ # # About the author
1686+
1687+ I am Sergey Lyubka, an engineer and entrepreneur. I am a director and
1688+ co-founder at Cesanta - a technology company based in Dublin, Ireland. I hold
1689+ MSc in RadioPhysics and Electronics from Kyiv State University, Ukraine.
1690+
1691+ My passion is bare metal embedded programming and embedded network
1692+ programming. My company develops an open source, embedded [HTTP/MQTT/Websocket
1693+ network library](https://github.com/cesanta/mongoose).
1694+
1695+ I am open to give talks on embedded network programming - so [please
1696+ contact](https://mongoose.ws/contact/) if you' d like me to talk for your
1697+ company' s development team, or at your university.
1698+
1699+ Thank you!
0 commit comments