|
| 1 | +--- |
| 2 | +title: "Updatecli v0.110.0 Released: GitHub Search SCM, Git branch cleanup & Dockerfile matching, and More!" |
| 3 | +date: 2025-11-05T00:00:00+00:00 |
| 4 | +draft: false |
| 5 | +weight: 50 |
| 6 | +images: [""] |
| 7 | +contributors: ["olblak"] |
| 8 | +--- |
| 9 | + |
| 10 | +We’re excited to ship v0.110.0 — this release introduces a GitHub search SCM to target multiple repositories, improved Git branch handling (including optional cleanup of working branches), better Dockerfile matching behavior, and a handful of bug fixes and quality-of-life improvements. |
| 11 | + |
| 12 | +## Highlights |
| 13 | + |
| 14 | +- New `githubsearch` SCM kind to discover and operate on repositories matching a GitHub search query. |
| 15 | +- New `--clean-git-branches` flag to remove Updatecli working branches that have no divergent changes. |
| 16 | +- Git pushes are now collected and executed once (after all targets) to reduce CI noise and enable reliable branch cleanup. |
| 17 | +- Improved Dockerfile image matching (exact match instead of prefix). |
| 18 | +- Autodiscovery now supports GitHub composite actions. |
| 19 | + |
| 20 | +--- |
| 21 | + |
| 22 | +## Git branch improvements |
| 23 | + |
| 24 | +We changed when Updatecli pushes commits and added optional branch cleanup: |
| 25 | + |
| 26 | +- Push behavior |
| 27 | + - Instead of pushing after each target, Updatecli now collects pushes and performs them once after all targets are processed and just before running actions. This reduces CI runs and groups related changes into a single push. |
| 28 | + - Benefits: |
| 29 | + - Only one push per pipeline run (less CI churn). |
| 30 | + - Easier to reason about leftover vs. newly created commits. |
| 31 | + - Enables reliable cleanup of transient working branches. |
| 32 | + |
| 33 | +- Branch cleanup |
| 34 | + - New flag: `--clean-git-branches` |
| 35 | + - When enabled, Updatecli will remove working branches that did not diverge from the target change (useful to keep repositories tidy). |
| 36 | + - Example: |
| 37 | + |
| 38 | + ```bash |
| 39 | + updatecli apply --clean-git-branches=true |
| 40 | + ``` |
| 41 | + |
| 42 | + - Note: Cleanup only runs if pushing is enabled and not in dry-run mode. |
| 43 | + |
| 44 | +--- |
| 45 | + |
| 46 | +## GitHub search SCM: apply manifests to many repositories |
| 47 | + |
| 48 | +We added an SCM kind `githubsearch` that generates SCM configurations from a GitHub search query. That allows running the same Updatecli manifest across many repositories discovered via GitHub's advanced search. |
| 49 | +
|
| 50 | +Example updatecli.yaml using `githubsearch`: |
| 51 | +
|
| 52 | +```yaml |
| 53 | +name: Update all Golang versions |
| 54 | +scms: |
| 55 | + default: |
| 56 | + kind: githubsearch |
| 57 | + spec: |
| 58 | + search: 'org:updatecli language:Go archived:false' |
| 59 | + limit: 0 # 0 = no limit |
| 60 | + branch: '^main$' # regex to match branch names |
| 61 | +
|
| 62 | +sources: |
| 63 | + golang: |
| 64 | + name: Get the latest Golang version |
| 65 | + kind: golang |
| 66 | + spec: |
| 67 | + versionfilter: |
| 68 | + kind: semver |
| 69 | + pattern: 1.23.x |
| 70 | +
|
| 71 | +targets: |
| 72 | + gomod: |
| 73 | + name: 'Update Golang version in go.mod to {{ source "golang" }}' |
| 74 | + kind: golang/gomod |
| 75 | + spec: |
| 76 | + file: go.mod |
| 77 | +
|
| 78 | + github-action: |
| 79 | + name: 'deps(github-action): Bump Golang version to {{ source "golang" }}' |
| 80 | + kind: yaml |
| 81 | + spec: |
| 82 | + engine: yamlpath |
| 83 | + files: |
| 84 | + - ".github/workflows/*" |
| 85 | + key: '$.jobs.build.steps[?(@.uses =~ /^actions\/setup-go/)].with.go-version' |
| 86 | + searchpattern: true |
| 87 | +``` |
| 88 | +
|
| 89 | +Notes: |
| 90 | +
|
| 91 | +- `githubsearch` expands into multiple generated Git SCM entries at runtime. Use it carefully (limit, branch filters) to control scope. |
| 92 | +- This concept could be extended to other SCM providers (GitLab, Gitea); please open an issue if you need support for additional providers. |
| 93 | +- The branch filter uses regex syntax to match branch names. |
| 94 | +
|
| 95 | +--- |
| 96 | +
|
| 97 | +## Autodiscovery: GitHub composite actions |
| 98 | +
|
| 99 | +Autodiscovery now recognizes and can update GitHub composite actions. Thanks to [Lois](https://github.com/loispostula) for this contribution. |
| 100 | +
|
| 101 | +If you aren’t familiar with composite actions, see GitHub’s docs: |
| 102 | +https://docs.github.com/en/actions/creating-actions/creating-a-composite-action |
| 103 | +
|
| 104 | +--- |
| 105 | +
|
| 106 | +## Bug fixes & small improvements |
| 107 | +
|
| 108 | +- Don’t require `query` + `versionFilter` with dasel/v2 in the JSON plugin — thanks [refi64](https://github.com/refi64). |
| 109 | +- Dockerfile image matching now uses exact match rather than prefix, preventing accidental updates of similar image names. |
| 110 | +- Correct target/condition IDs in missing-source errors — thanks [Shristy Chaudhary](https://github.com/srishtea-22). |
| 111 | +- Other small cleanups and stability fixes. |
| 112 | +
|
| 113 | +--- |
| 114 | +
|
| 115 | +## Upgrade notes |
| 116 | +
|
| 117 | +- No breaking changes expected for typical manifests. |
| 118 | +- To enable branch cleanup, run with `--clean-git-branches=true` and ensure `--push` is enabled (and not in dry-run). |
| 119 | +
|
| 120 | +--- |
| 121 | +
|
| 122 | +## Contributors |
| 123 | +
|
| 124 | +Thanks to everyone who contributed to this release: |
| 125 | +
|
| 126 | +- Lois (composite action autodiscovery) |
| 127 | +- refi64 (dasel v2 fixes) |
| 128 | +- Shristy Chaudhary (error message fix) |
| 129 | +- and all community contributors |
| 130 | +
|
| 131 | +--- |
| 132 | +
|
| 133 | +If you hit any issue or have feedback, please open an issue on GitHub: https://github.com/updatecli/updatecli/issues |
| 134 | +
|
| 135 | +## How to Upgrade |
| 136 | +
|
| 137 | +Updatecli v0.109.0 is available now on [GitHub Releases](https://github.com/updatecli/updatecli/releases), Docker Hub, and as a Go binary. |
| 138 | +
|
| 139 | +```sh |
| 140 | +# Upgrade via Homebrew |
| 141 | +brew upgrade updatecli |
| 142 | +
|
| 143 | +# Or pull the latest Docker image |
| 144 | +docker pull ghcr.io/updatecli/updatecli:v0.110.0-slim |
| 145 | +``` |
| 146 | +
|
| 147 | +More installation options can be found in our [Installation page](https://www.updatecli.io/docs/prologue/installation/). |
| 148 | +
|
| 149 | +--- |
| 150 | +
|
| 151 | +## Feedback & Community |
| 152 | +
|
| 153 | +We love hearing from our users! |
| 154 | +If you have feedback, or want to share how you use Updatecli, join us on [GitHub Discussions](https://github.com/updatecli/updatecli/discussions) or [Chat](https://app.gitter.im/#/room/#Updatecli_community:gitter.im). |
0 commit comments