In short: we run automated build, test, and deploy pipelines on TwinCAT - built entirely ourselves. Recently, Beckhoff released TwinCAT 3.1.4024.55. After updating our build nodes we couldn’t believe what we saw: the entire pipeline is 50-60% faster.

What our build pipeline does

Every commit to Zeugwerk Framework triggers a pipeline that:

  • Clones all necessary software from the repository and determines the version number for the new build
  • Fetches all dependencies through Twinpack - including external dependencies like TcUnit and Struckig, fully automated
  • Builds each library, once as .library and once as .compiled-library (zkbuild)
  • Extracts and runs all unit tests (zkbuild with unit test mode)
  • Generates binding code for the Quickstart HMI (zkbindings)
  • Generates library API documentation (zkdoc)
  • Deploys all generated artifacts and the new documentation to our servers

This currently covers 7 library files, each built and installed twice and unit-tested.

The numbers

MetricBefore 3.1.4024.55After
Full pipeline duration26-35 minutes15-17 minutes
Improvement-~50-60%

Thanks, Beckhoff.

Available to everyone

The GitHub Actions mentioned above - zkbuild, zkbindings, and zkdoc - use the same mechanisms we use internally and are freely available for open-source projects hosted on GitHub, GitLab, and Bitbucket. 30 builds per month are included at no cost. See Struckig as a working example.

Contact us if you want to know more about our development workflow or DevTools.