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
.libraryand 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
| Metric | Before 3.1.4024.55 | After |
|---|---|---|
| Full pipeline duration | 26-35 minutes | 15-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.
