Skip to content

Commit b47aa21

Browse files
committed
Add a blog post about multiple release streams support
Signed-off-by: Nikola Forró <nforro@redhat.com>
1 parent ae74f6b commit b47aa21

2 files changed

Lines changed: 96 additions & 0 deletions

File tree

docs/configuration/index.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -656,6 +656,14 @@ The value requires a Python regex pattern and is used with `re.match` function.
656656
branch. If there is an *3.8.1* release, the matched values (=`3.8`) are the same and pull request is created.
657657

658658

659+
#### version_update_specifiers
660+
(*string*) Similarly to `version_update_mask`, this field can be used to filter upstream versions when syncing releases.
661+
Unlike `version_update_mask` it runs for all branches and accepts
662+
[PEP440-style version specifiers](https://peps.python.org/pep-0440/#version-specifiers),
663+
for example `>=3.11.0, <3.12.0`, or a shorthand version of the same: `~=3.11.0`.
664+
If the released upstream version doesn't match, Packit will not sync the release downstream.
665+
666+
659667
#### test_command
660668
##### default_identifier
661669
The identifier (refer to [`identifier`](/docs/configuration/upstream/tests#optional-parameters)) utilised by default when
Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
---
2+
title: "Packit now supports multiple release streams"
3+
date: 2026-04-08T08:00:00+00:00
4+
authors: nforro
5+
tags:
6+
- Upstream Release Monitoring
7+
- pull-from-upstream
8+
- downstream
9+
- configuration
10+
---
11+
12+
There are upstream projects that have multiple release streams and, for example, regularly release
13+
patch versions for every active minor version. With
14+
[`pull-from-upstream`](/docs/configuration/downstream/pull_from_upstream) you have been able
15+
to follow only the highest stream, but that now changes. By switching
16+
[`Monitoring status`](https://the-new-hotness.readthedocs.io/en/stable/user-guide.html#notifications-settings-legacy)
17+
of your package from `Monitoring` to `Monitoring all`, you enable triggering
18+
[`pull-from-upstream`](/docs/configuration/downstream/pull_from_upstream)
19+
for every released version, not only the highest. This means you can use options such as
20+
[`version_update_mask`](/docs/configuration/#version_update_mask),
21+
[`upstream_tag_include`](/docs/configuration/#upstream_tag_include) or
22+
[`upstream_tag_exclude`](/docs/configuration/#upstream_tag_exclude) (those require
23+
[`upstream_project_url`](/docs/configuration/#upstream_project_url) to be set)
24+
to filter a specific release stream you want to follow, or have multiple
25+
[`pull-from-upstream`](/docs/configuration/downstream/pull_from_upstream) jobs,
26+
each matching different releases and targeting different dist-git branches.
27+
28+
<!--truncate-->
29+
30+
:::tip
31+
32+
Instead of changing `Monitoring status` in the dist-git web UI, you can have a
33+
[`monitoring.toml`](https://the-new-hotness.readthedocs.io/en/stable/user-guide.html#notifications-settings)
34+
file in the `rawhide` branch in dist-git and set `all_versions = true` to trigger
35+
[`pull-from-upstream`](/docs/configuration/downstream/pull_from_upstream) for all released versions.
36+
37+
:::
38+
39+
## Configuration example
40+
41+
For an upstream project releasing 1.7.z and 1.6.z streams, you could configure the jobs like this:
42+
43+
```
44+
jobs:
45+
46+
- job: pull_from_upstream
47+
trigger: release
48+
upstream_tag_exclude: ^v1\.6\.\d+$
49+
dist_git_branches:
50+
- fedora-rawhide
51+
52+
- job: pull_from_upstream
53+
trigger: release
54+
upstream_tag_include: ^v1\.6\.\d+$
55+
dist_git_branches:
56+
- fedora-branched
57+
```
58+
59+
With this configuration security backports to the 1.6 upstream branch would result in Packit opening dist-git PRs
60+
against branched Fedoras while for any other release Packit would open dist-git PRs in Rawhide.
61+
62+
:::tip
63+
64+
We have introduced a new configuration option
65+
[`version_update_specifiers`](/docs/configuration/#version_update_specifiers).
66+
It borrows syntax of
67+
[PEP440 version specifiers](https://peps.python.org/pep-0440/#version-specifiers)
68+
and gives you more flexibility when filtering release streams. For example:
69+
70+
```
71+
jobs:
72+
73+
- job: pull_from_upstream
74+
trigger: release
75+
# 3.y.z or higher versions go to Rawhide
76+
version_update_specifiers: >=3.0
77+
dist_git_branches:
78+
- fedora-rawhide
79+
80+
- job: pull_from_upstream
81+
trigger: release
82+
# versions 2.y.z go to stable Fedoras, excluding a known broken version
83+
version_update_specifiers: ~=2.0, !2.5.4
84+
dist_git_branches:
85+
- fedora-branched
86+
```
87+
88+
:::

0 commit comments

Comments
 (0)