2022 is over and what a year!

Posted December 19, 2022 by olblak ‐ 3 min read

2022 is over and what a year!

2022 has been awesome for the Updatecli project. Updatecli went from a tool mainly used within the Jenkins project to a project that others organizations could rely on to keep their git repositories up to date.

Firstly, with HackerNews, then with CDcon, the project received many feedback and evolved a lot. 2022 was rich in opportunities to understand how project maintainers benefit from Updatecli.

With the user base growing came many feature requests and new update scenarios.

Updatecli over this year:

  • 45 releases

  • 15 new contributors

  • Many plugins additions and improvements

  • A project Logo!

  • First (unexpected) blog posts

Promaton

Several major ideas also came to life:

Manifest validation

For decades, software projects maintained scripts written in many different languages to automate their project updates. All Updatecli’s contributors maintained scripts like those. They also saw them being copy-pasted across repositories up to a point where most of the logic was just technical debt that nobody knew about anymore.

With Updatecli, the initial goal was to get a declarative way of describing those updates to reduce the complexity of maintaining these scripts by creating a specific DSL. Unfortunately, with each new DSL comes some learning curve. Using this Updatecli new DSL was error-prone and maintaining the documentation was time-consuming.

The project started generating and publishing a JSON Schema on the JSON Schema Store so everybody could benefit from validation and documentation right from their IDE without any additional configuration. The only requirement for the IDE integration is to have Updatecli manifest(s) located in the updatecli.d directory. The documentation website also benefits from the JSON Schema, which means fewer things to maintain!

PR1000

GitHub action

Updatecli works great from a local machine, but it works even better when executed from a CI environment.

CI tooling offers many kinds of trigger mechanisms that benefit Updatecli.

Here are some examples:

  • GitOps - triggered by a scheduler: Updatecli keeps GitOps repository up to date.

  • Release - triggered by a release event: Updatecli can quickly propagate a new release version to downstream git repositories.

Many thanks to Joseph Petersen who made the Updatecli GitHub Action what it is today.

twitter

Autodiscovery

Updatecli started as a way to describe advanced update scenarii using manifests. Of course for standard update scenario, a manifest can be redundant and sometimes a project needs a mix of both. That’s what Updatecli "Autodiscovery" is about. The purpose is to let Updatecli analyzes files from a directory and then generate standard update manifests before applying them. Autodiscovery is complementary to the manifest approach.

Over the year, Updatecli started supporting automatic update for Dockerfile, Docker Compose file, Helm, Helmfile, Rancher Fleet, and Maven.

Users can run one of the following commands from the directory of their choice to see what manifest(s) would be generated:

  • updatecli diff

  • updatecli manifest show

  • updatecli apply

Updatemonitor

The Updatemonitor app is another well received experiment. While still in an early stage, the Updatemonitor app is a long-running service that leverages Updatecli plugins to monitor all kinds of information.

Updatemonitor

Thank you all

This year wouldn’t have been possible without the many people who contributed to Updatecli. Thanks to Damien Duportal and Hervé Le Meur for those endless discussions. Thanks to Joseph Petersen for being an early adopter and contributor of Updatecli. Thanks to everybody who has been part of the journey.

2022 is over, see you in 2023!

Cheers, Olblak

Top