Naming of tags and releases in the github-repo

for documentation and monitoring we check https://api.github.com/repos/n8n-io/n8n/releases/latest every hour and create issues in our internal ticket-system with the value of “tag_name” if there doesn’t exist one:

repo_url=“https://api.github.com/repos/n8n-io/n8n/releases/latest”

curl -s -L -H “Accept: application/vnd.github+json” -H “X-GitHub-Api-Version: 2022-11-28” ${repo_url} | jq .tag_name -r

normaly, we get

"tag-name": "n8n@2.17.3"

but sometimes (and at the moment, since 2.17.5) we get

"tag_name": "stable"

so we won’t get informed about new releases.

Why did you change the behaviour of the release-process - tag latest should not point to the relaase latest (as it does now), but to a specific relases-number so it can be identified, which release is the current stable.

I’ve found Older n8n version marked as "latest" on https://github.com/n8n-io/n8n/releases - which show’s a solution which seems to be also inconsistent and not reliable.

1 me gusta

welcome to the n8n community @mcg
This sounds like a valid feedback item. I’d add that the main issue is machine-readable version discovery for automation, not just naming preference. Many teams rely on /releases/latest for patch monitoring, ticketing, and compliance workflows, so returning a moving tag like stable instead of a semantic version can break downstream processes. If stable is needed for humans, keeping a separate channel tag while preserving versioned tags in the latest-release API response would be much more automation-friendly.

1 me gusta

strange… was ok for release 2.18.4, broken again for 2.18.5

first release 2.19.3 was fine again, but 1h later it was “broken again” and the latest-tag was attached to a “stable”-version (but internal refering to 2.19.3).

2.19.4 and 2.19.5 still broken.

at the moment - fine for 2.20.6

1 me gusta

and broken again for 2.20.7

@mcg
stay wirh 2.20.6
2.20.7 isn’t stable

1 me gusta

now “latest” goes to a “stable” vesion which is 2.20.7-exp.0 - wtf…

sorry, but your relase-tagging-process seems to be completely broken and inconsistent.

and “stay on a version not tagged as latest” or an older version is no option as in the past a lot of security-issues have been found in older versions - so for some reasons we are “forced” to install the latest version available and track the available updates.

1 me gusta

Hi @mcg ! Thanks for voicing your concerns with our current release process.

A few months back we did a major rework on how we do releases to increase velocity and give us better visibility into our releases. During this rework, we modified how we package our releases:

We introduced git pointer tags “beta” and “stable”, which point at the current version of the software published to npm and dockerhub under those tags.

What this meant for releases was that during a version release, we publish 2 releases: One with the semantic version as it’s name and one named stable . What this aims to achieve is that tooling can easily always pull the latest “stable” release of n8n, without having to parse through releases or manual effort: the URL always stays the same `releases/tag/stable`.

During this process, we also changed how we tag “latest” on GitHub releases and landed on having it point to the “stable” tag, whatever version that is. This was due to a narrow-sighted vision that it would help people find the stable release more easily. During further research, I’ve discovered that quite a lot of open source libraries in fact point to the semver version of the release as “Latest”.

As a part of this PR, we are changing the functionality, so that “Latest” should again point to the semantic version, not the “stable” version.

Thanks for your feedback and as we ship this change, I hope it resolves your issues as well.

3 Me gusta

we already have v2.20.12

the mentioned PR seems to work as expected - 2.21.4 looks fine.

ok, 2.21.5 broken again :frowning:

Hang tight, version 2.22.0 is on the way :woozy_face:

Ahhh, ok - i thouhgt - as n8n@2.22.0 is already available as a Pre-release ( Release n8n@2.22.0 · n8n-io/n8n · GitHub ) and 2.21.4 for example was released with the comment “No changelog generated. Likely points to fixes in our CI.” and the PR is merged the change is already productive and should work.

ok, so i will be patient and wait for 2.22.x marked as latest…

(btw - 2.21.7 is fine again :slight_smile: )

1 me gusta

thank you god! :star_struck:

I can see why this is causing problems. If someone is polling /releases/latest for automation, getting a proper version like n8n@2.17.3 is predictable and easy to track. Suddenly returning just stable breaks that workflow completely because there’s no unique release identifier anymore. From an automation/monitoring perspective, stable feels more like an alias than an actual release tag.

I think it would make more sense if the latest release kept the real version tag, and stable existed separately for people who want a floating reference. Right now it’s hard to know which exact release is actually current without adding extra logic/workarounds. :face_blowing_a_kiss: