You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Presently the logic of the build process is split between the CI automation (gitlab pipeline) and a series of shell scripts. This logic is complex and involves building binaries for multiple targets, as well as building and publishing docker images for the main branch and for release branches.
Besides, a simpler version of this build logic is also duplicated in a Makefile created and maintained for the convenience of the developers. A Makefile is used to ensure some dependencies are maintained.
The current situation has multiple disadvantages:
Logis is hard to understand as it is scattered into multiple components
Impossibility of testing the release process locally
Logic is hard to debug as neither shell scripts nor ci pipelines provide tools for debugging
Some level of logic duplication with corresponding inconsistencies
One alternative to this situation could be adopting a pipeline-as-code approach using Golang as the programming language. Using a "regular" programming language has many advantages.
Use of regular development tools such as IDE
Makes it easier to reuse logic
Facilitates developing tests
Allows running the same process regardless of the environment (local or ci pipelines)
script package offers go functions similar to (but not 100% compatible with) many shell functionalities (e.g. pipes between commands) and common command (e.g sed, cut)
gorun tool that allows running scripts in go without previous compilation
The text was updated successfully, but these errors were encountered:
There's also https://github.com/magefile/mage, which has been around since 2018. I haven't used it personally but it's been around for a very long while so I'd expect some level of maturity as a result.
Presently the logic of the build process is split between the CI automation (gitlab pipeline) and a series of shell scripts. This logic is complex and involves building binaries for multiple targets, as well as building and publishing docker images for the main branch and for release branches.
Besides, a simpler version of this build logic is also duplicated in a
Makefile
created and maintained for the convenience of the developers. AMakefile
is used to ensure some dependencies are maintained.The current situation has multiple disadvantages:
One alternative to this situation could be adopting a pipeline-as-code approach using Golang as the programming language. Using a "regular" programming language has many advantages.
Some tools to consider are
The text was updated successfully, but these errors were encountered: