<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Releasing Grafana Loki on Grafana Labs</title><link>https://grafana.com/docs/loki/v3.7.x/community/maintaining/release/</link><description>Recent content in Releasing Grafana Loki on Grafana Labs</description><generator>Hugo -- gohugo.io</generator><language>en</language><atom:link href="/docs/loki/v3.7.x/community/maintaining/release/index.xml" rel="self" type="application/rss+xml"/><item><title>Backport commits</title><link>https://grafana.com/docs/loki/v3.7.x/community/maintaining/release/backport-commits/</link><pubDate>Thu, 09 Apr 2026 02:28:18 +0000</pubDate><guid>https://grafana.com/docs/loki/v3.7.x/community/maintaining/release/backport-commits/</guid><content><![CDATA[&lt;h1 id=&#34;backport-commits&#34;&gt;Backport commits&lt;/h1&gt;
&lt;p&gt;Any PRs or commits not on the release branch that you want to include in the release must be backported to the release branch.&lt;/p&gt;
&lt;h2 id=&#34;before-you-begin&#34;&gt;Before you begin&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Determine the &lt;a href=&#34;../concepts/version/&#34;&gt;VERSION_PREFIX&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;If the release branch already has all the code changes on it, skip this step.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;steps&#34;&gt;Steps&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Pick a PR that you want to backport to &lt;code&gt;release-VERSION_PREFIX&lt;/code&gt; branch.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Add two labels to the PR. First, one of the &lt;code&gt;product-approved&lt;/code&gt;, &lt;code&gt;type/doc&lt;/code&gt; or &lt;code&gt;type/bug&lt;/code&gt; appropriately. This is to make sure the PRs that are backported are done with right intention. Second &lt;code&gt;backport release-VERSION_PREFIX&lt;/code&gt; label.
Now CI should automatically create backport PR to the correct release branch. Example &lt;a href=&#34;https://github.com/grafana/loki/pull/10333&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR&lt;/a&gt;&lt;/p&gt;


&lt;div class=&#34;admonition admonition-note&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Note&lt;/p&gt;&lt;p&gt;CI automation can fail sometimes if there are some merge conflicts in cherry picking the commits. In those cases, the original PR where you added the label should have additional comment explaining how to backport it manually.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;



&lt;div class=&#34;admonition admonition-note&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Note&lt;/p&gt;&lt;p&gt;The CI job that helps with backporting PR is &lt;code&gt;.github/workflows/backport.yml&lt;/code&gt;. Useful for debugging purposes.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Repeat the above steps for any PRs that need to be backported.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;backporting-release-prs&#34;&gt;Backporting Release PRs&lt;/h2&gt;
&lt;p&gt;If backporting a release PR, make sure you remove any &lt;code&gt;autorelease: pending&lt;/code&gt; or &lt;code&gt;autorelease: tagged&lt;/code&gt; labels before merging the backport PR. By default our backport action brings over all labels, but these labels are reserved for the release workflow and will cause future pipelines to fail if left of backport PRs.&lt;/p&gt;
]]></content><description>&lt;h1 id="backport-commits">Backport commits&lt;/h1>
&lt;p>Any PRs or commits not on the release branch that you want to include in the release must be backported to the release branch.&lt;/p></description></item><item><title>Create Release Branch</title><link>https://grafana.com/docs/loki/v3.7.x/community/maintaining/release/create-release-branch/</link><pubDate>Thu, 09 Apr 2026 02:28:18 +0000</pubDate><guid>https://grafana.com/docs/loki/v3.7.x/community/maintaining/release/create-release-branch/</guid><content><![CDATA[&lt;h1 id=&#34;create-release-branch&#34;&gt;Create Release Branch&lt;/h1&gt;
&lt;p&gt;A single release branch is created for every &lt;code&gt;major&lt;/code&gt; or &lt;code&gt;minor&lt;/code&gt; release (not for patch releases). That release
branch is then used for all the Stable Releases, and all Patch Releases for that &lt;code&gt;major&lt;/code&gt; and &lt;code&gt;minor&lt;/code&gt; versions of the Grafana Loki.&lt;/p&gt;
&lt;h2 id=&#34;before-you-begin&#34;&gt;Before you begin&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Determine the &lt;a href=&#34;../concepts/version/&#34;&gt;VERSION_PREFIX&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Announce about the upcoming release in &lt;code&gt;#loki-releases&lt;/code&gt; internal slack channel.&lt;/li&gt;
&lt;li&gt;Skip this announcement for a patch release. Create an issue to communicate beginning of the release process with the community. Example issue &lt;a href=&#34;https://github.com/grafana/loki/issues/10468&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;here&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;steps&#34;&gt;Steps&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Determine which commit should be used as a base for the release branch. Usually this is a &lt;code&gt;kxx&lt;/code&gt; weekly release branch.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Create and push the release branch from the selected base commit:&lt;/p&gt;
&lt;p&gt;The name of the release branch should be &lt;code&gt;release-VERSION_PREFIX&lt;/code&gt;, such as &lt;code&gt;release-2.9.x&lt;/code&gt;.&lt;/p&gt;


&lt;div class=&#34;admonition admonition-note&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Note&lt;/p&gt;&lt;p&gt;Branches are only made for VERSION_PREFIX; do not create branches for the full VERSION such as &lt;code&gt;release-2.9.1&lt;/code&gt;.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;



&lt;div class=&#34;admonition admonition-note&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Note&lt;/p&gt;&lt;p&gt;Don&amp;rsquo;t create any other branches that are prefixed with &lt;code&gt;release&lt;/code&gt; when creating PRs or those branches will collide with our automated release build publish rules.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Create a label to make backporting PRs to this branch easy.&lt;/p&gt;
&lt;p&gt;The name of the label should be &lt;code&gt;backport release-VERSION_PREFIX&lt;/code&gt;, such as &lt;code&gt;backport release-2.9.x&lt;/code&gt;.&lt;/p&gt;


&lt;div class=&#34;admonition admonition-note&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Note&lt;/p&gt;&lt;p&gt;Note there is space in the label name. The label name must follow this naming convention to trigger CI related jobs.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;/li&gt;
&lt;/ol&gt;
]]></content><description>&lt;h1 id="create-release-branch">Create Release Branch&lt;/h1>
&lt;p>A single release branch is created for every &lt;code>major&lt;/code> or &lt;code>minor&lt;/code> release (not for patch releases). That release
branch is then used for all the Stable Releases, and all Patch Releases for that &lt;code>major&lt;/code> and &lt;code>minor&lt;/code> versions of the Grafana Loki.&lt;/p></description></item><item><title>Document metrics and configurations changes</title><link>https://grafana.com/docs/loki/v3.7.x/community/maintaining/release/document-metrics-configurations-changes/</link><pubDate>Thu, 09 Apr 2026 02:28:18 +0000</pubDate><guid>https://grafana.com/docs/loki/v3.7.x/community/maintaining/release/document-metrics-configurations-changes/</guid><content><![CDATA[&lt;h1 id=&#34;document-metrics-and-configurations-changes&#34;&gt;Document metrics and configurations changes&lt;/h1&gt;
&lt;p&gt;Any metrics and configurations that are removed or modified need to be documented in the upgrade guide. Configurations whose default values changed should also be documented in the upgrade guide.&lt;/p&gt;
&lt;h2 id=&#34;before-you-begin&#34;&gt;Before you begin&lt;/h2&gt;
&lt;p&gt;All the steps are performed on &lt;code&gt;release-VERSION_PREFIX&lt;/code&gt; branch.&lt;/p&gt;
&lt;h2 id=&#34;steps&#34;&gt;Steps&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Check which configs changed, including whose default values changed.&lt;/p&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;$ OLD_VERSION=X.Y.Z ./tools/diff-config.sh&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Record configurations that are modified (either renamed or had its default value changed) in the &lt;a href=&#34;../prepare-upgrade-guide/&#34;&gt;upgrade guide&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Check if any metrics have changed.&lt;/p&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;$ OLD_VERSION=X.Y.Z ./tools/diff-metrics.sh&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Record metrics whose names have been modified in the &lt;a href=&#34;../prepare-upgrade-guide/&#34;&gt;upgrade guide&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
]]></content><description>&lt;h1 id="document-metrics-and-configurations-changes">Document metrics and configurations changes&lt;/h1>
&lt;p>Any metrics and configurations that are removed or modified need to be documented in the upgrade guide. Configurations whose default values changed should also be documented in the upgrade guide.&lt;/p></description></item><item><title>Merge Release PR</title><link>https://grafana.com/docs/loki/v3.7.x/community/maintaining/release/merge-release-pr/</link><pubDate>Thu, 09 Apr 2026 02:28:18 +0000</pubDate><guid>https://grafana.com/docs/loki/v3.7.x/community/maintaining/release/merge-release-pr/</guid><content><![CDATA[&lt;h1 id=&#34;merge-release-pr&#34;&gt;Merge Release PR&lt;/h1&gt;
&lt;p&gt;To release Loki, merge the release PR. This PR will have the title &lt;code&gt;chore(&amp;lt;BRANCH&amp;gt;): release &amp;lt;VERSION&amp;gt;&lt;/code&gt;. Here&amp;rsquo;s what the 3.0 release PR looked like.&lt;/p&gt;
&lt;p&gt;&lt;img
  class=&#34;lazyload d-inline-block&#34;
  data-src=&#34;.3.0-release-pr.png&#34;
  alt=&#34;3.0 release PR&#34;/&gt;&lt;/p&gt;
&lt;p&gt;3.0 was the first major release using this new process, and enforcing conventional commits was relatively new. Going forward the release notes in the release PR will be much more thorough, as we&amp;rsquo;re now enforcing that every PR has a conventional commit message.&lt;/p&gt;
&lt;p&gt;To test the artifacts before releasing, you can download the artifacts from the link in the footer of the PR description. Merging the PR will:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Fetch the built artifacts.&lt;/li&gt;
&lt;li&gt;Create a draft GitHub release with the release notes in the PR description.&lt;/li&gt;
&lt;li&gt;Upload fetched binareis to the draft release.&lt;/li&gt;
&lt;li&gt;Publish fetched images to Docker Hub as multi-arch images.&lt;/li&gt;
&lt;li&gt;Publish the draft release and create the GitHub tag.&lt;/li&gt;
&lt;li&gt;(Optionally) Mark the release as the latest if it represents the newest version of Loki.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;troubleshooting--retrying-release&#34;&gt;Troubleshooting / Retrying Release&lt;/h2&gt;
&lt;p&gt;If something goes wrong with the release automation, you may need to rerun the job. This may require updating the release code in the &lt;code&gt;grafana/loki&lt;/code&gt; repo via a PR, or it may include updating the code in &lt;code&gt;grafana/loki-release&lt;/code&gt; that the release pipeline fetches. In either case, if you need to re-release a merge release PR, you&amp;rsquo;ll need to remove the &lt;code&gt;autorelease: tagged&lt;/code&gt; label from that PR and add the &lt;code&gt;autorelease: pending&lt;/code&gt; label. The automation relies on these labels to determine which merged PRs have and have not yet been released. After fixing the labels, re-run the release workflow, and it should correctly get passed the &lt;code&gt;should-release&lt;/code&gt; step. The release process is idempotent, so if a draft release has already been created via a previously failed release, the process will continue, re-upload the binaries, and re-publish the images.&lt;/p&gt;
&lt;p&gt;Once the release is finished, you may need to manually flip the label back to &lt;code&gt;autorelease: tagged&lt;/code&gt;.&lt;/p&gt;
]]></content><description>&lt;h1 id="merge-release-pr">Merge Release PR&lt;/h1>
&lt;p>To release Loki, merge the release PR. This PR will have the title &lt;code>chore(&amp;lt;BRANCH&amp;gt;): release &amp;lt;VERSION&amp;gt;&lt;/code>. Here&amp;rsquo;s what the 3.0 release PR looked like.&lt;/p></description></item><item><title>Patch Go version</title><link>https://grafana.com/docs/loki/v3.7.x/community/maintaining/release/patch-go-version/</link><pubDate>Thu, 09 Apr 2026 02:28:18 +0000</pubDate><guid>https://grafana.com/docs/loki/v3.7.x/community/maintaining/release/patch-go-version/</guid><content><![CDATA[&lt;h1 id=&#34;patch-go-version&#34;&gt;Patch Go version&lt;/h1&gt;
&lt;p&gt;Update vulnerable Go version to non-vulnerable Go version to build Grafana Loki binaries.&lt;/p&gt;
&lt;h2 id=&#34;before-you-begin&#34;&gt;Before you begin.&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Determine the &lt;a href=&#34;../concepts/version/&#34;&gt;VERSION_PREFIX&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Need to sign-in to Docker hub to be able to push Loki build image.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;steps&#34;&gt;Steps&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Find Go version to which you need to update. Example &lt;code&gt;1.20.5&lt;/code&gt; to &lt;code&gt;1.20.6&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Update Go version in the Grafana Loki build image (&lt;code&gt;loki-build-image/Dockerfile&lt;/code&gt;) on the &lt;code&gt;main&lt;/code&gt; branch.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;../../release-loki-build-image/&#34;&gt;Release a new Loki Build Image&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;../backport-commits/&#34;&gt;Backport&lt;/a&gt; the Dockerfile change to &lt;code&gt;release-VERSION_PREFIX&lt;/code&gt; branch.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;../backport-commits/&#34;&gt;Backport&lt;/a&gt; the Loki Build Image version change from &lt;code&gt;main&lt;/code&gt; to &lt;code&gt;release-VERSION_PREFIX&lt;/code&gt; branch.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
]]></content><description>&lt;h1 id="patch-go-version">Patch Go version&lt;/h1>
&lt;p>Update vulnerable Go version to non-vulnerable Go version to build Grafana Loki binaries.&lt;/p>
&lt;h2 id="before-you-begin">Before you begin.&lt;/h2>
&lt;ol>
&lt;li>
&lt;p>Determine the &lt;a href="../concepts/version/">VERSION_PREFIX&lt;/a>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Need to sign-in to Docker hub to be able to push Loki build image.&lt;/p></description></item><item><title>Patch vulnerabilities</title><link>https://grafana.com/docs/loki/v3.7.x/community/maintaining/release/patch-vulnerabilities/</link><pubDate>Thu, 09 Apr 2026 02:28:18 +0000</pubDate><guid>https://grafana.com/docs/loki/v3.7.x/community/maintaining/release/patch-vulnerabilities/</guid><content><![CDATA[&lt;h1 id=&#34;patch-vulnerabilities&#34;&gt;Patch vulnerabilities&lt;/h1&gt;
&lt;p&gt;This step patches vulnerabilities in Grafana Loki binaries and Docker images.&lt;/p&gt;
&lt;h2 id=&#34;before-you-begin&#34;&gt;Before you begin&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Determine the &lt;a href=&#34;../concepts/version/&#34;&gt;VERSION_PREFIX&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Vulnerabilities can be from two main sources.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Grafana Loki source code.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Grafana Loki dependencies.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Grafana Loki dependencies can be&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Go dependencies in &lt;code&gt;go.mod&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The Go compiler itself&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Grafana Loki Docker dependencies, for example, the base images&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Before start patching vulnerabilities, know what are you patching. It can be one or more from sources mentioned above. Use &lt;code&gt;#security-go&lt;/code&gt;, &lt;code&gt;#security&lt;/code&gt; slack channels to clarify.&lt;/p&gt;
&lt;h2 id=&#34;steps&#34;&gt;Steps&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Patch Grafana Loki source code.&lt;/p&gt;
&lt;p&gt;Means, there are vulnerabilities in Grafana Loki source code itself.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Patch it on &lt;code&gt;main&lt;/code&gt; branch&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;../backport-commits/&#34;&gt;Backport&lt;/a&gt; to &lt;code&gt;release-$VERSION_PREFIX&lt;/code&gt; branch.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Patch Go dependencies.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Pick all the Go dependencies that need to be patched.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Check if &lt;a href=&#34;https://github.com/grafana/loki/pulls?q=is%3Apr&amp;#43;label%3Adependencies&amp;#43;is%3Aclosed&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;dependabot already patched the dependency&lt;/a&gt; or &lt;a href=&#34;https://github.com/grafana/loki/pulls?q=is%3Apr&amp;#43;is%3Aopen&amp;#43;label%3Adependencies&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;have a PR opened to patch&lt;/a&gt; . If not, manually upgrade the package on the &lt;code&gt;main&lt;/code&gt; branch as follows.&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;shell&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-shell&#34;&gt;go get -u -v &amp;lt;PACKAGE_PATH&amp;gt;@&amp;lt;PATCHED_VERSION&amp;gt;
go mod tidy
go mod vendor&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;../backport-commits/&#34;&gt;Backport&lt;/a&gt; it to &lt;code&gt;release-$VERSION_PREFIX&lt;/code&gt; branch.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Repeat for each Go dependency&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;../patch-go-version/&#34;&gt;Patch Go compiler&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Patch Grafana Loki Docker dependencies, for example: Alphine Linux base images).&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Update Docker image version. &lt;a href=&#34;https://github.com/grafana/loki/pull/10573&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Example PR&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;../backport-commits/&#34;&gt;Backport&lt;/a&gt; to &lt;code&gt;release-$VERSION_PREFIX&lt;/code&gt; branch&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
]]></content><description>&lt;h1 id="patch-vulnerabilities">Patch vulnerabilities&lt;/h1>
&lt;p>This step patches vulnerabilities in Grafana Loki binaries and Docker images.&lt;/p>
&lt;h2 id="before-you-begin">Before you begin&lt;/h2>
&lt;ol>
&lt;li>Determine the &lt;a href="../concepts/version/">VERSION_PREFIX&lt;/a>.&lt;/li>
&lt;/ol>
&lt;p>Vulnerabilities can be from two main sources.&lt;/p></description></item><item><title>Prepare Major Release</title><link>https://grafana.com/docs/loki/v3.7.x/community/maintaining/release/major-release/</link><pubDate>Thu, 09 Apr 2026 02:28:18 +0000</pubDate><guid>https://grafana.com/docs/loki/v3.7.x/community/maintaining/release/major-release/</guid><content><![CDATA[&lt;h1 id=&#34;prepare-major-release&#34;&gt;Prepare Major Release&lt;/h1&gt;
&lt;p&gt;A major release follows the same process as &lt;a href=&#34;../prepare-release/&#34;&gt;minor and patch releases&lt;/a&gt;, but requires a custom workflow to be created to run on the branch we want to release from. The reason for this is that we don&amp;rsquo;t do major releases very often, so it is not economical to keep those workflows running all the time.&lt;/p&gt;
&lt;p&gt;To create a major release workflow, follow the steps below.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Edit &lt;code&gt;./github/release-workflows.jsonnet&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Add a new workflow for the major release. For example, the 3.0 release looked like the following:&lt;/li&gt;
&lt;/ol&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;jsonnet&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-jsonnet&#34;&gt;  &amp;#39;three-zero-release.yml&amp;#39;: std.manifestYamlDoc(
    lokiRelease.releasePRWorkflow(
      branches=[&amp;#39;release-3.0.0&amp;#39;],
      buildImage=buildImage,
      checkTemplate=checkTemplate,
      golangCiLintVersion=golangCiLintVersion,
      imageBuildTimeoutMin=imageBuildTimeoutMin,
      imageJobs=imageJobs,
      imagePrefix=imagePrefix,
      releaseLibRef=releaseLibRef,
      releaseRepo=&amp;#39;grafana/loki&amp;#39;,
      skipArm=false,
      skipValidation=false,
      useGitHubAppToken=true,
      releaseAs=&amp;#39;3.0.0&amp;#39;,
    ) &amp;#43; {
      name: &amp;#39;Prepare Loki 3.0 release&amp;#39;,
    }, false, false
  ),&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;Make sure the &lt;code&gt;branches&lt;/code&gt; field is set to the release branch you want to release from.&lt;/li&gt;
&lt;li&gt;Make sure the &lt;code&gt;releaseAs&lt;/code&gt; field is set to the version you want to release.&lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;make release-workflows&lt;/code&gt; to generate the new workflow. Merge this change to both the main and release branch. You may also want to disable the patch release workflow as part of this PR, see below.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;race-condition-with-patch-release&#34;&gt;Race Condition with Patch Release&lt;/h2&gt;
&lt;p&gt;Once this new workflow is created there is a bit of a race condition with the patch workflow. This can be resolved in 1 of 2 ways:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Disable the patch release workflow until after the major release is complete.&lt;/li&gt;
&lt;li&gt;Watch all actions for the release branch (ie. &lt;a href=&#34;https://github.com/grafana/loki/actions?query=branch%3Arelease-3.0.x&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;https://github.com/grafana/loki/actions?query=branch%3Arelease-3.0.x&lt;/a&gt;) and cancel and patch release runs.&lt;/li&gt;
&lt;/ol&gt;
]]></content><description>&lt;h1 id="prepare-major-release">Prepare Major Release&lt;/h1>
&lt;p>A major release follows the same process as &lt;a href="../prepare-release/">minor and patch releases&lt;/a>, but requires a custom workflow to be created to run on the branch we want to release from. The reason for this is that we don&amp;rsquo;t do major releases very often, so it is not economical to keep those workflows running all the time.&lt;/p></description></item><item><title>Prepare Release</title><link>https://grafana.com/docs/loki/v3.7.x/community/maintaining/release/prepare-release/</link><pubDate>Thu, 09 Apr 2026 02:28:18 +0000</pubDate><guid>https://grafana.com/docs/loki/v3.7.x/community/maintaining/release/prepare-release/</guid><content><![CDATA[&lt;h1 id=&#34;prepare-release&#34;&gt;Prepare Release&lt;/h1&gt;
&lt;p&gt;Releasing Grafana Loki consists of merging a long-running release PR. Two workflows keep these PRs up to date, one for patch releases (which runs on commits to branches matching &lt;code&gt;release-[0-9]&#43;.[0-9]&#43;.x&lt;/code&gt;) and one for minor releases (which runs on commits to branches matching &lt;code&gt;k[0-9]&#43;&lt;/code&gt;). These pipelines use release please to do the following:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Run tests and linting&lt;/li&gt;
&lt;li&gt;Build binaries and images for the proposed release version&lt;/li&gt;
&lt;li&gt;Generate release notes based on conventional commits since the last release&lt;/li&gt;
&lt;li&gt;Create or update the long-running release PR for that release, indicating which commit will be released if the PR is merged with a link to the built artifacts that will be published.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;major-releases&#34;&gt;Major releases&lt;/h2&gt;
&lt;p&gt;Major releases follow the same process as minor and patch releases, but require a custom workflow to be created to run on the branch we want to release from. The reason for this is that we don&amp;rsquo;t do major releases very often, so it is not economical to keep those workflows running all the time.To create a major release workflow, follow the steps in the &lt;a href=&#34;../major-release/&#34;&gt;major release workflow&lt;/a&gt; document.&lt;/p&gt;
]]></content><description>&lt;h1 id="prepare-release">Prepare Release&lt;/h1>
&lt;p>Releasing Grafana Loki consists of merging a long-running release PR. Two workflows keep these PRs up to date, one for patch releases (which runs on commits to branches matching &lt;code>release-[0-9]+.[0-9]+.x&lt;/code>) and one for minor releases (which runs on commits to branches matching &lt;code>k[0-9]+&lt;/code>). These pipelines use release please to do the following:&lt;/p></description></item><item><title>Prepare Upgrade guide</title><link>https://grafana.com/docs/loki/v3.7.x/community/maintaining/release/prepare-upgrade-guide/</link><pubDate>Thu, 09 Apr 2026 02:28:18 +0000</pubDate><guid>https://grafana.com/docs/loki/v3.7.x/community/maintaining/release/prepare-upgrade-guide/</guid><content><![CDATA[&lt;h1 id=&#34;prepare-upgrade-guide&#34;&gt;Prepare Upgrade guide&lt;/h1&gt;
&lt;p&gt;The upgrade guide records changes that require user attention or interaction to upgrade to specific Loki version from previous versions.&lt;/p&gt;
&lt;h2 id=&#34;before-you-begin&#34;&gt;Before you begin&lt;/h2&gt;
&lt;p&gt;The upgrade guide in Grafana Loki works as follows.&lt;/p&gt;
&lt;p&gt;We have a &lt;code&gt;setup/upgrade/_index.md&lt;/code&gt; file that records upgrade information for all Loki releases.&lt;/p&gt;
&lt;h2 id=&#34;steps&#34;&gt;Steps&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Make sure the upgrade guide is up to date on the &lt;code&gt;release-VERSION_PREFIX&lt;/code&gt; branch under the &lt;code&gt;Main/Unreleased&lt;/code&gt; section.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;On the &lt;code&gt;release-VERSION_PREFIX&lt;/code&gt; branch promote &lt;code&gt;Main/Unreleased&lt;/code&gt; to &lt;code&gt;VERSION&lt;/code&gt;. Example &lt;a href=&#34;https://github.com/grafana/loki/pull/10470&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;On the &lt;code&gt;main&lt;/code&gt; branch remove entries from &lt;code&gt;Main/Unreleased&lt;/code&gt; that are already part of &lt;code&gt;VERSION (YYY-MM-DD)&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
]]></content><description>&lt;h1 id="prepare-upgrade-guide">Prepare Upgrade guide&lt;/h1>
&lt;p>The upgrade guide records changes that require user attention or interaction to upgrade to specific Loki version from previous versions.&lt;/p>
&lt;h2 id="before-you-begin">Before you begin&lt;/h2>
&lt;p>The upgrade guide in Grafana Loki works as follows.&lt;/p></description></item><item><title>Update version numbers</title><link>https://grafana.com/docs/loki/v3.7.x/community/maintaining/release/update-version-numbers/</link><pubDate>Thu, 09 Apr 2026 02:28:18 +0000</pubDate><guid>https://grafana.com/docs/loki/v3.7.x/community/maintaining/release/update-version-numbers/</guid><content><![CDATA[&lt;h1 id=&#34;update-version-numbers&#34;&gt;Update version numbers&lt;/h1&gt;
&lt;p&gt;Upgrade the Loki version to the new release version in documents, examples, jsonnets, etc.&lt;/p&gt;
&lt;h2 id=&#34;before-you-begin&#34;&gt;Before you begin&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Determine the &lt;a href=&#34;../concepts/version/&#34;&gt;VERSION_PREFIX&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Skip this step if you are doing a patch release on old release branch.&lt;/p&gt;
&lt;p&gt;Example: Latest release branch is &lt;code&gt;release-2.9.x&lt;/code&gt; but you are releasing patch version in &lt;code&gt;release-2.8.x&lt;/code&gt; (or older)&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;steps&#34;&gt;Steps&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Upgrade the versions in the &lt;code&gt;release-VERSION_PREFIX&lt;/code&gt; branch.&lt;/p&gt;
&lt;p&gt;Example commands:&lt;/p&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;LOKI_NEW_VERSION=$VERSION ./tools/release_update_tags.sh&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;div class=&#34;admonition admonition-note&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Note&lt;/p&gt;&lt;p&gt;Do not upgrade the version numbers in the &lt;code&gt;operator/&lt;/code&gt; directory as @periklis and team have a different process to upgrade the Operator version.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;/li&gt;
&lt;/ol&gt;
]]></content><description>&lt;h1 id="update-version-numbers">Update version numbers&lt;/h1>
&lt;p>Upgrade the Loki version to the new release version in documents, examples, jsonnets, etc.&lt;/p>
&lt;h2 id="before-you-begin">Before you begin&lt;/h2>
&lt;ol>
&lt;li>
&lt;p>Determine the &lt;a href="../concepts/version/">VERSION_PREFIX&lt;/a>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Skip this step if you are doing a patch release on old release branch.&lt;/p></description></item><item><title>Version</title><link>https://grafana.com/docs/loki/v3.7.x/community/maintaining/release/concepts/version/</link><pubDate>Thu, 09 Apr 2026 02:28:18 +0000</pubDate><guid>https://grafana.com/docs/loki/v3.7.x/community/maintaining/release/concepts/version/</guid><content><![CDATA[&lt;h1 id=&#34;version&#34;&gt;Version&lt;/h1&gt;
&lt;p&gt;Grafana Loki uses Semantic Versioning. The next version can be determined
by looking at the current version and incrementing it. When the release is a new &lt;code&gt;major&lt;/code&gt; version (for example, after 2.9.1 we decide to go 3.0.0 instead of 2.9.2) this should not be done.&lt;/p&gt;
&lt;p&gt;You need to set two environmental values &lt;code&gt;VERSION&lt;/code&gt; and &lt;code&gt;VERSION_PREFIX&lt;/code&gt; to do the release process.&lt;/p&gt;
&lt;h2 id=&#34;version-1&#34;&gt;Version&lt;/h2&gt;
&lt;p&gt;To determine the &lt;code&gt;VERSION&lt;/code&gt; for a Stable Release or Patch Release, use the Semantic Version &lt;code&gt;A.B.C&lt;/code&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Examples
&lt;ul&gt;
&lt;li&gt;For example, &lt;code&gt;2.9.0&lt;/code&gt; is the Stable Release &lt;code&gt;VERSION&lt;/code&gt; for the v2.9.0 release.&lt;/li&gt;
&lt;li&gt;For example, &lt;code&gt;2.9.1&lt;/code&gt; is the first Patch Release &lt;code&gt;VERSION&lt;/code&gt; for the v2.9.0 release.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;version-prefix&#34;&gt;Version Prefix&lt;/h2&gt;
&lt;p&gt;To determine the &lt;code&gt;VERSION PREFIX&lt;/code&gt;, use only the major and minor version &lt;code&gt;A.B.x&lt;/code&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Examples
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;2.9.x&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
]]></content><description>&lt;h1 id="version">Version&lt;/h1>
&lt;p>Grafana Loki uses Semantic Versioning. The next version can be determined
by looking at the current version and incrementing it. When the release is a new &lt;code>major&lt;/code> version (for example, after 2.9.1 we decide to go 3.0.0 instead of 2.9.2) this should not be done.&lt;/p></description></item></channel></rss>