In short: We are working with automated build, test and deploy pipelines on TwinCAT which we had to develop completely for ourselves. This was necessary to speed up development and ensure code quality throughout all development stages. Recently, Beckhoff released a new TwinCAT build for the 3.1.4024 branch version 3.1.4024.55. In order to always stay on top with TwinCATs latest version we updated our Build nodes and couldn`t believe what we saw. The whole pipeline is a lot faster, with a lot I mean the whole action has improved in duration about 50-60%.
But wait a minute, what are we doing with our build pipeline. I can assure you, there are many steps and it is a lot of software which we had to develop and some of it is already available as a testing version and some is already releasee (e.g. Twinpack). Lets dive in a little bit deeper.
What does our build pipeline do:
- Clone all necessary software from the repository and determine which version number will be present for the new build
- Fetch all dependencies through Twinpack, here also external dependencies like TcUnit or Struckig are possible (fully automated)
- Build each library, once as .library and once as .compiled-library (zkbuild)
- Extract all Unit tests and test those libraries (zkbuild including unit-tests)
- Generate bindings for Quickstart-HMI (zkbindings)
- generate Library – API-documentation (zkdoc)
- deploy all generated artifacts to our servers and also deploy the newly generated documentation
For now this includes 7 library files, build and installed twice and also unit-tested. The new TwinCAT build reduces the build time for all steps above from about 26 – 35 minutes to roughly 15-17 minutes.
Thanks Beckhoff, for this change!
The Github-Actions mentioned above (zkbuild, zkbindings and zkdoc) are using the same mechanisms as we use internally and these are also freely available to use in OpenSource projects hosted on Github, Gitlab and Bitbucket (see Struckig as an example). The artifacts are directly deployed into the Github repository and there are 30 builds included for now.
If someone wants to know what our development workflow looks like or if you are interested in our Zeugwerk Operations product line, just contact us.