Skip to content

Conversation

@andrinoff
Copy link
Contributor

@andrinoff andrinoff commented Jan 27, 2026

Pull Request

What? (description)

This pull requests includes a new workflow, which will do everything update.sh did, just automatically, while also creating a pull request to the repository.

Why? (reasoning)

This simplifies the process of maintaining the Sidero Labs tap, and was requested in #2148, #12063.

Acceptance

Please use the following checklist:

  • you linked an issue (if applicable)
  • you included tests (if applicable)
  • you ran conformance (make conformance)
  • you formatted your code (make fmt)
  • you linted your code (make lint)
  • you generated documentation (make docs)
  • you ran unit-tests (make unit-tests)

See make help for a description of the available targets.

Additional notes

This workflow requires a new secret HOMEBREW_TAP_TOKEN, which is a GitHub PAT of any user with permissions to create commits in the siderolabs/homebrew-tap repository.

This workflow can also be used in the siderolabs/omni with small changes required.

@github-project-automation github-project-automation bot moved this to To Do in Planning Jan 27, 2026
@talos-bot talos-bot moved this from To Do to In Review in Planning Jan 27, 2026
@rothgar
Copy link
Member

rothgar commented Jan 27, 2026

This is great! Thanks for the PR.

There is a homebrew command for bumping versions which might be more reliable and easier to use. It's called bump-formula-pr and you can read about it here https://docs.brew.sh/Manpage#bump-formula-pr-options-formula It should do a lot of this manual version changes automatically.

We also have a "meta" packages called sidero-tools which needs to be bumped when we make a release. You can see the forumla here https://github.com/siderolabs/homebrew-tap/blob/main/Formula/sidero-tools.rb and the only thing that needs to change is the version number. This lets people automatically try and fetch the latest version of our other tools.

@andrinoff
Copy link
Contributor Author

We also have a "meta" packages called sidero-tools which needs to be bumped when we make a release. You can see the forumla here siderolabs/homebrew-tap@main/Formula/sidero-tools.rb and the only thing that needs to change is the version number. This lets people automatically try and fetch the latest version of our other tools.

the version needs to be the same as talosctl? just saw that it was on v1.1.0, so supposed that it is something else

@andrinoff
Copy link
Contributor Author

There is a homebrew command for bumping versions which might be more reliable and easier to use. It's called bump-formula-pr and you can read about it here docs.brew.sh/Manpage#bump-formula-pr-options-formula It should do a lot of this manual version changes automatically.

I'll have to test this, but i'm pretty sure this won't work

@andrinoff
Copy link
Contributor Author

andrinoff commented Jan 27, 2026

There is a homebrew command for bumping versions which might be more reliable and easier to use. It's called bump-formula-pr and you can read about it here docs.brew.sh/Manpage#bump-formula-pr-options-formula It should do a lot of this manual version changes automatically.

I'll have to test this, but i'm pretty sure this won't work

as i said, this results in an error

Error: inreplace failed
/home/linuxbrew/.linuxbrew/Homebrew/Library/Taps/siderolabs/homebrew-tap/Formula/talosctl.rb:
  expected replacement of /https:\/\/github\.com\/siderolabs\/talos\/releases\/download\/v1\.12\.1\/talosctl\-linux\-amd64/ with "https://github.com/siderolabs/talos/releases/download/v1.12.2/talosctl-linux-amd64"

this is due to the file having the version as a variable:

url "https://github.com/siderolabs/talos/releases/download/v#{version}/talosctl-darwin-arm64"

and not plain text, i.e.

url "https://github.com/siderolabs/talos/releases/download/v1.12.1/talosctl-darwin-arm64",

This is 1 of the issues.

Also, I am not sure it would keep on going to replace for every architecture and OS

@rothgar
Copy link
Member

rothgar commented Jan 28, 2026

the version needs to be the same as talosctl? just saw that it was on v1.1.0, so supposed that it is something else

The version was just bumped arbitrarily to force clients to upgrade. It doesn't currently track any specific version because it includes talos and omni binaries which have different versions

as i said, this results in an error

Thanks for trying it, I wasn't sure if there would be problems

@andrinoff
Copy link
Contributor Author

the version needs to be the same as talosctl? just saw that it was on v1.1.0, so supposed that it is something else

The version was just bumped arbitrarily to force clients to upgrade. It doesn't currently track any specific version because it includes talos and omni binaries which have different versions

@rothgar i still don't get this. this downloads nothing, except for kube and the omnictl & talosctl packages. Why does it need to be bumped? it will appear as any other Brew package that is outdated, where it would prompt users to use brew upgrade.

@andrinoff
Copy link
Contributor Author

added a check for the "latest" version, i.e.

> gh release view --repo git@github.com:siderolabs/omni --json tagName -q '.tagName'
v1.4.7

@rothgar
Copy link
Member

rothgar commented Jan 29, 2026

@rothgar i still don't get this. this downloads nothing, except for kube and the omnictl & talosctl packages. Why does it need to be bumped? it will appear as any other Brew package that is outdated, where it would prompt users to use brew upgrade.

When you first install the meta package via brew install siderolabs/tap/sidero-tools the 4 packages get installed as dependencies (talosctl, omnictl, kubectl, kubelogin). I haven't figured out why but if one of those tools has an update (e.g. talosctl) and you do brew update && brew upgrade it doesn't pull in the latest version of talosctl unless you bump the version of sidero-tools.

That wasn't intended behavior (and maybe it has changed). Ideally we could install the meta package once and all tools will be kept up to date without updating sidero-tools.

@andrinoff
Copy link
Contributor Author

andrinoff commented Jan 29, 2026

That wasn't intended behavior (and maybe it has changed). Ideally we could install the meta package once and all tools will be kept up to date without updating sidero-tools.

Hm, well, when i install, it automatically uses the latest versions of formulas

brew install siderolabs/tap/sidero-tools
==> Fetching downloads for: sidero-tools
✔︎ Bottle Manifest kubelogin (1.35.2)                                                                                                                                                                                                                                                       Downloaded    7.5KB/  7.5KB
✔︎ Bottle Manifest kubernetes-cli (1.35.0)                                                                                                                                                                                                                                                  Downloaded    7.5KB/  7.5KB
✔︎ Formula sidero-tools (1.1.0)
✔︎ Bottle kubernetes-cli (1.35.0)                                                                                                                                                                                                                                                           Downloaded   17.5MB/ 17.5MB
✔︎ Bottle kubelogin (1.35.2)                                                                                                                                                                                                                                                                Downloaded    5.9MB/  5.9MB
✔︎ Formula talosctl (1.12.1)                                                                                                                                                                                                                                                                Verified     97.6MB/ 97.6MB
✔︎ Formula omnictl (1.4.7)                                                                                                                                                                                                                                                                  Verified     44.7MB/ 44.7MB

(the latest bump of sidero-tools was 2 months ago)

It also, just adds the new dependencies to the Cellar, so they will be updated with brew upgrade

There is no auto-upgrade, sadly, though

you do brew update && brew upgrade it doesn't pull in the latest version of talosctl unless you bump the version of sidero-tools.

this is weird though, it should, as it adds the new formulas the same way as brew install does

@andrinoff
Copy link
Contributor Author

this is weird though, it should, as it adds the new formulas the same way as brew install does

This is easy to check though, i installed only via the sidero-tools and opened a PR at siderolabs/homebrew-tap#160 with a bump. I can check if the brew update && brew upgrade will work

@andrinoff
Copy link
Contributor Author

pr got merged (thx, noel), will check when i get home

@andrinoff
Copy link
Contributor Author

andrinoff commented Jan 30, 2026

@rothgar it does update it without having to bump sidero-tools

brew update
==> Updating Homebrew...
==> Updated Homebrew from 948c9bc856 to 024ad4fe06.
Updated 3 taps (siderolabs/tap, homebrew/core and homebrew/cask).
==> New Formulae
clawdbot-cli: Your own personal AI assistant
codex-acp: Use Codex from ACP-compatible clients such as Zed!
litra: Control Logitech Litra lights from the command-line
tpix: Simple terminal image viewer using the Kitty graphics protocol
==> Outdated Formulae
talosctl

not sure if the problem was fixed, or ever there, but it works, without having to install talosctl separately, or bumping the versions

@frezbo
Copy link
Member

frezbo commented Jan 30, 2026

@rothgar it does update it without having to bump sidero-tools

brew update
==> Updating Homebrew...
==> Updated Homebrew from 948c9bc856 to 024ad4fe06.
Updated 3 taps (siderolabs/tap, homebrew/core and homebrew/cask).
==> New Formulae
clawdbot-cli: Your own personal AI assistant
codex-acp: Use Codex from ACP-compatible clients such as Zed!
litra: Control Logitech Litra lights from the command-line
tpix: Simple terminal image viewer using the Kitty graphics protocol
==> Outdated Formulae
talosctl

not sure if the problem was fixed, or ever there, but it works, without having to install talosctl separately, or bumping the versions

Is it talosctl from the tap?

brew info talosctl?

@andrinoff
Copy link
Contributor Author

@rothgar it does update it without having to bump sidero-tools

brew update
==> Updating Homebrew...
==> Updated Homebrew from 948c9bc856 to 024ad4fe06.
Updated 3 taps (siderolabs/tap, homebrew/core and homebrew/cask).
==> New Formulae
clawdbot-cli: Your own personal AI assistant
codex-acp: Use Codex from ACP-compatible clients such as Zed!
litra: Control Logitech Litra lights from the command-line
tpix: Simple terminal image viewer using the Kitty graphics protocol
==> Outdated Formulae
talosctl

not sure if the problem was fixed, or ever there, but it works, without having to install talosctl separately, or bumping the versions

Is it talosctl from the tap?

brew info talosctl?

it is

talosctl ✔: stable 1.12.2 (bottled), HEAD
CLI for out-of-band management of Kubernetes nodes created by Talos
https://www.talos.dev/
Installed
/home/linuxbrew/.linuxbrew/Cellar/talosctl/1.12.2 (7 files, 97.8MB) *
  Built from source on 2026-01-30 at 17:38:45
From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/t/talosctl.rb
License: MPL-2.0
==> Dependencies
Build: go ✘
==> Options
--HEAD
        Install HEAD version
==> Downloading https://formulae.brew.sh/api/formula/talosctl.json
==> Analytics
install: 2,259 (30 days), 5,975 (90 days), 23,500 (365 days)
install-on-request: 2,259 (30 days), 5,826 (90 days), 22,635 (365 days)
build-error: 1 (30 days)

@frezbo
Copy link
Member

frezbo commented Jan 30, 2026

From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/t/talosctl.rb

seems it's from homebrew not the tap:

From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/t/talosctl.rb

@andrinoff
Copy link
Contributor Author

andrinoff commented Jan 30, 2026

From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/t/talosctl.rb

seems it's from homebrew not the tap:

From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/t/talosctl.rb

yes, just noticed

this was the log from brew upgrade i ran

brew upgrade
==> Upgrading 1 outdated package:
siderolabs/tap/talosctl 1.12.1 -> 1.12.2
==> Fetching downloads for: talosctl
✔︎ Formula talosctl (1.12.2)                                                                                                                                                                                                                                                                 Verified     97.6MB/ 97.6MB
==> Upgrading siderolabs/tap/talosctl
  1.12.1 -> 1.12.2
🍺  /home/linuxbrew/.linuxbrew/Cellar/talosctl/1.12.2: 7 files, 97.8MB, built in 2 seconds
==> Running `brew cleanup talosctl`...
Disable this behaviour by setting `HOMEBREW_NO_INSTALL_CLEANUP=1`.
Hide these hints with `HOMEBREW_NO_ENV_HINTS=1` (see `man brew`).
Removing: /home/linuxbrew/.linuxbrew/Cellar/talosctl/1.12.1... (7 files, 97.8MB)
Removing: /home/andrinoff/.cache/Homebrew/talosctl--1.12.1... (97.6MB)

Also, full log (ran those 2 in the span of 2 minutes)

andrinoff  ~  ♥ 23:52  brew update
==> Updating Homebrew...
==> Updated Homebrew from 948c9bc856 to 024ad4fe06.
Updated 3 taps (siderolabs/tap, homebrew/core and homebrew/cask).
==> New Formulae
clawdbot-cli: Your own personal AI assistant
codex-acp: Use Codex from ACP-compatible clients such as Zed!
litra: Control Logitech Litra lights from the command-line
tpix: Simple terminal image viewer using the Kitty graphics protocol
==> Outdated Formulae
talosctl

You have 1 outdated formula installed.
You can upgrade it with brew upgrade
or list it with brew outdated.

andrinoff  ~  ♥ 17:37  brew upgrade
==> Upgrading 1 outdated package:
siderolabs/tap/talosctl 1.12.1 -> 1.12.2
==> Fetching downloads for: talosctl
✔︎ Formula talosctl (1.12.2)                                                                                                                                                                                                                                                                 Verified     97.6MB/ 97.6MB
==> Upgrading siderolabs/tap/talosctl
  1.12.1 -> 1.12.2
🍺  /home/linuxbrew/.linuxbrew/Cellar/talosctl/1.12.2: 7 files, 97.8MB, built in 2 seconds
==> Running `brew cleanup talosctl`...
Disable this behaviour by setting `HOMEBREW_NO_INSTALL_CLEANUP=1`.
Hide these hints with `HOMEBREW_NO_ENV_HINTS=1` (see `man brew`).
Removing: /home/linuxbrew/.linuxbrew/Cellar/talosctl/1.12.1... (7 files, 97.8MB)
Removing: /home/andrinoff/.cache/Homebrew/talosctl--1.12.1... (97.6MB)

@andrinoff
Copy link
Contributor Author

From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/t/talosctl.rb

seems it's from homebrew not the tap:

From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/t/talosctl.rb
brew formula talosctl
/home/linuxbrew/.linuxbrew/Homebrew/Library/Taps/siderolabs/homebrew-tap/Formula/talosctl.rb

🤷‍♂

@andrinoff
Copy link
Contributor Author

@frezbo found the issue, brew info just pulls the Homebrew's JSON API, it doesnt check what version is installed (unless there is no formulae in the JSON API, and you have it installed)

@rothgar
Copy link
Member

rothgar commented Jan 30, 2026

Great to hear and thanks a ton for testing/verifying.

Just so I understand correctly, the fact that talosctl exists in the upstream homebrew tap shouldn't interfere with updates from our tap, right?

We've debating putting everything in the upstream repo, but we were unsure if omnictl would be accepted since other similarly licensed tools sometimes got removed.

@andrinoff
Copy link
Contributor Author

andrinoff commented Jan 30, 2026

Just so I understand correctly, the fact that talosctl exists in the upstream homebrew tap shouldn't interfere with updates from our tap, right?

yes, if you dont install the Homebrew/core/talosctl, the package will be updated from the sidero tap.

We've debating putting everything in the upstream repo, but we were unsure if omnictl would be accepted since other similarly licensed tools sometimes got removed.

well, this would be one way to solve the problem of having the workflow. but, omni got rejected a while back for unknown reasons (Homebrew/homebrew-core#201182). IMO i'd re-try to open a pr to the homebrew core repo, and, for now at least, get omnictl to update automatically. There is no need in having the sidero tap for talosctl, as it doesnt currently get updated automatically/often

@andrinoff
Copy link
Contributor Author

Edit:

There is a homebrew command for bumping versions which might be more reliable and easier to use. It's called bump-formula-pr and you can read about it here docs.brew.sh/Manpage#bump-formula-pr-options-formula It should do a lot of this manual version changes automatically.

Brew Core formulae is not updated automatically, and requires the brew bump, along with a manual (even though the Brew team is quick) approve from maintainers. I.e. Homebrew/homebrew-core#264002

Managing Sidero's own tap would be better in a sense of fast and up-to-date updates, along with complete control of versions (in a case of the need to lower the brew version)

@github-project-automation github-project-automation bot moved this from In Review to Approved in Planning Feb 2, 2026
@smira
Copy link
Member

smira commented Feb 3, 2026

@andrinoff can you please add DCO (git commit --amend -s) and squash the commits?

@andrinoff andrinoff force-pushed the ci/update-brew-automatically branch from b3cf0c9 to cc4199b Compare February 3, 2026 18:26
Trigger an automatic PR to Homebrew on a release.

Signed-off-by: drew <me@andrinoff.com>
Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
@smira smira force-pushed the ci/update-brew-automatically branch from cc4199b to 6995bc1 Compare February 9, 2026 15:41
@smira
Copy link
Member

smira commented Feb 10, 2026

/m

@talos-bot talos-bot merged commit 6995bc1 into siderolabs:main Feb 10, 2026
103 of 104 checks passed
@github-project-automation github-project-automation bot moved this from Approved to Done in Planning Feb 10, 2026
@andrinoff andrinoff deleted the ci/update-brew-automatically branch February 10, 2026 12:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

5 participants