@@ -1653,3 +1653,47 @@ for more details.
1653
1653
1654
1654
A complete project source code you can find in
1655
1655
[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