Updatecli
Update anything, anywhere
Updatecli reads a YAML manifest, fetches a value from any source, checks your conditions, then writes the value into any file and opens the pull request. One binary, on a laptop or in any CI, with no server and no database.
brew tap updatecli/updatecli && brew install updatecli
Other platforms
Open source, Apache-2.0 licensed.
How it works
A manifest declares what to update, where, and under which conditions. Each pipeline runs three stages, always in this order:
Source
Retrieves the value an update is based on, such as the latest release of a dependency. A source never modifies anything.
Condition
Checks that everything required to apply the update holds true. If a condition is not met, the targets are skipped.
Target
Writes the source value where it belongs, such as a key in a YAML file or a line in a Dockerfile.
An SCM block and an action then commit the change to a working branch and open the pull or merge request.
name: QuickStart example
# "sources" describe where the information to use comes from.
# Here: the latest Jenkins weekly version.
sources:
jenkinsVersion:
name: Get the latest Jenkins weekly version
kind: jenkins
spec:
release: weekly
# "conditions" describe what must be true before any target is updated.
# Here: the matching Docker image must exist on DockerHub.
conditions:
dockerimage:
name: Is the Jenkins weekly tag published on DockerHub
kind: dockerimage
spec:
image: jenkins/jenkins
# "targets" describe what to update with the source value.
# Here: the key "$.container.tag" of the file "data.yaml".
targets:
dataFile:
name: Bump the Jenkins Docker image tag
kind: yaml
spec:
file: data.yaml
key: $.container.tag
$ updatecli diff
source: jenkinsVersion
✔ version "2.575" found for the Jenkins weekly release
condition: dockerimage
✔ docker image jenkins/jenkins:2.575 found
target: dataFile
⚠ - change detected:
* key "$.container.tag" should be updated from "2.475" to "2.575", in file "data.yaml"Why Updatecli
Any value, in any file
A YAML key, a Dockerfile, a Helm chart, go.mod, or a line in a text file. Values come from container registries, Maven repositories, Git, HTTP APIs, and more.
Checks before it changes
Conditions validate your assumptions first, so a version that is not published yet, or has known vulnerabilities, never reaches a pull request.
No server, no database
The same binary runs on a laptop or in any CI. The manifest and the files it updates are the only state.
Updatecli updates related files together, in the order you choose, including the ones no package manager knows about. Why Updatecli exists
Documentation
Start here
- Quick StartYour first update pipeline, in two files and two commands.
- InstallationHomebrew, Linux packages, Windows, Docker, Go, and more.
- PluginsEvery source, condition, target, SCM, and action.
- ChangelogsWhat changed in each release.
Go further
- AutodiscoveryLet Updatecli scan a repository and generate the manifests.
- PoliciesPackage a manifest as an OCI artifact and reuse it across repositories.
- ComposeRun several policies together from one file.
- Udash A dashboard for the reports your pipelines publish.