We no longer have branches in extended maintenance state, these have
been switched to Unmaintained (eom). So we need to check for the latter
state when listing branches that could be deleted since the are EOLed.
Add oslo.utils to requirements since it is now needed by the
tools/delete_stable_branch.py script.
Change-Id: Ib948befa6f2706dc5dc50009b021af3a1bb389a8
To delete stable/<series> branches first we have to abandon all open
changes otherwise gerrit does not allow to delete the branch.
This script abandons all the open patches on a given project on a
specific branch.
Change-Id: I431fb305f998608889510f8ed2914583891d2167
This is based on the list_eol_stale_branches.sh script to make it
possible to delete stable/<series> branches where there are
<series>-eom tag already.
Change-Id: Iaaa9702c5b304152492ed2afc56ac07fb9c9fb98
With the new TC resolution the community replaces Extended Maintenance
with Unmaintained status [1].
This patch introduces the new <series>-eom tag option in the
transition_series.sh script. The tag applies at the tip of the given
stable/<series> branch and the new unmaintained/<series> branch can be
cut from that tag.
[1] https://governance.openstack.org/tc/resolutions/20230724-unmaintained-branches.html
Change-Id: Ia7064e36a2d92ef02f60b7371ebf3e4772abcc80
Teams with distributed leadership type have release liaisons listed
in governance repository's projects.yaml file instead of a single PTL.
This was introduced in the check_approval.py script, but it did not
work (though we did not realise this as usually releases repository's
release_liaisons.yaml also contains the release liaisons). This patch
fixes the check for distributed leadership type.
Change-Id: I93fbf2be0f0da85dedfe9b9f8d5876ca5b9e4b2e
list unbranched deliverables is not designed to work with new release
id.
These changes add a command to allow to retrieve series id from a shell
script by passing the name of the series.
This new command is called by the list unbranched deliverables to check
if the corresponding stable branch exists (based on the release id).
Change-Id: I102b90c5221e57dd5697e2e81aa7edb8615ce445
Ironic team has several exception rules in their deliverables ACLs, in
order to be able to tag bugfixes releases amongst other things. This
change adds the Ironic team to the exception list (and removes the
Infrastructure team exception since they are no longer listed in the
governance file).
Change-Id: I33e3ecf66c66faac3e65fc8d07bdf2a6cdc022ac
It's a little more verbose but this is essentially the same as running
format-yaml over the generated file. While this isn't "needed" it
isn't a functional change and makes it easier to write a tool for the
elections repo to generate changes like:
https://review.opendev.org/q/I954afb4aad4286a8a6641ef8800541a8822a38f2
Change-Id: Iae5a79e362ea30396c70708a48005b44ec67fd62
Some package's README.rst causes metadata parsing to fail and thus
the announce job to fail. This patch looks directly for the 'name'
in metadata to avoid such failure.
Change-Id: I5dbe6bcd68bd927f28ea167f791aefea7c229a99
Originally 'python setup.py --description' was used, and we replaced
it to the 'description' field of importlib's metadata, but that is
actually the long description ('python setup.py --long-description').
To get the previously used 'description', the 'summary' field have to
be used.
Change-Id: I6120255dcbd9ed16c6d4fabb85f6aaad12ab01b5
With release of new setuptools running setup.py started
returining extra line. Eventually, running setup.py as a script is not
considered as good practice and we should not rely on it's output much.
Instead, we can leverage importlib.metadata as it should be more
reliable in long run.
Also it allow us to remove our previous workaround:
https://review.opendev.org/c/openstack/releases/+/879065
Change-Id: I52714ae92458efc0628091762cb77cf3ddb058f9
With latest gerrit the open changes list format has changed:
'commitMessage' title is replaced to 'subject'. Also the ordering of
the fields is replaced. With this patch we get back the originally
used formatting: '<link_to_change> -- <commit_message_title>'
Change-Id: I84e23db4ca79956b37bf4864b08f840e0d653a42
Somewhere between today and March 23rd, 2023, pbr started to print a
log.info line when we try to fetch a package's name from setup.py, e.g:
$ python3 setup.py --name 2>/dev/null
[pbr] Generating ChangeLog
openstack_releases
A workaround is now added to our announce script to avoid garbled
announce mails [1].
[1] https://lists.openstack.org/pipermail/release-announce/2023-March/014246.html
Change-Id: I6233bb8d12a12efd3cb02abd29d8d43d7fd91da2
With the new release identification / naming schema [1] (like:
2023.1 Antelope) new stable branch naming was introduced (like:
stable/2023.1). list_rc_updates.sh script was not updated to this
new branch naming.
[1] https://governance.openstack.org/tc/reference/release-naming.html
Change-Id: If7027d462324d705e18c4a579316175a700e0548
In some cases [1] <series>-eol tag exists but it is not on the last
patch of a branch and we still need to delete them. Originally the
script skips these cases and doesn't allow to delete the branch. This
patch makes it possible to delete the branch anyway (only when the tag
exists!).
[1] for example when:
* patches were merged after EOL tagging
* branch was accidently recreated with new patches
Change-Id: If9491ddb292e2eebcc4c713140ce02c2d89c80a3
The script originally clones every repository and branch, which takes
long time. This patch queries GITEA instead whether the branch exists
there and only clones a repository if it is necessary.
Change-Id: I0e164e15a5157f6e6a42ef7ca154f207308641b7
As the script runs it takes time to process every branches. This patch
changes the script to show the current repository being processed.
Also fixes variable name.
Change-Id: Ifde9aa5bec30e18a12a9c5107888943a4af3e271
The TC tags framework is discontinued [1], so all references to TC tags
will be invalidated once TC passes the change.
This patch removes the use of '--tag stable:follows-policy' from helper
scripts.
[1] http://lists.openstack.org/pipermail/openstack-discuss/2022-February/027214.html
Change-Id: I30645f45c270f436605ef5024557e341a6851dce
There are multiple problems with it:
* the --reviewers options works differently, as it should be added only
once and then listed the emails
* in case of dummy contacts or not registered contacts the git-review
command fails
Since we have already a script [1] to add reviewers to *every* open
patch, it is easier to run that *after* we finished the bulk uploading
of patches.
[1] tools/add_reviewers.sh
Change-Id: I2942033134adb30db0cd7e955f7bf8aefbbb3c5b
When running this bulk command it is always good to double check what
we are pushing to gerrit. This patch shows the commit message with
changed files list with 'git show --stat' command and then waits for an
Enter. This also makes it more visible if a git push has failed.
Note: when aborting the script the branches will remain in our local
git repository and that needs to be cleaned if we want to run the
script again. Though this is also valid if we don't cancel the script.
Change-Id: If23202be15493d2ac9bccd3e2d1af04395b18a23
These teams are PTL-less and not necessary define their
release liaison in openstack/release/data/release_liaison.yaml.
The problem is that their release liaison approval is not
necessarily detected.
These changes allow to consider these release liaisons folks.
Furthermore, patch Id0d6eeaf66394806374781d1cf26c087a6e90f87,
from the similar script in project-config repository, also applied
here in this script to avoid exception in case of DPL teams.
Change-Id: Ieaf1eafc6a8e3ce443d73876e525f738e51dea67
Without knowing which releases have been made within the given
series either we shoots in dark in choising the kind of release
(bugfix, feature, major, etc...) or we need to check manually
what are the existing versions. That's time consuming.
These changes simply display the current versions available in
the given series.
Change-Id: Idb160198d52d3bc6b0fa00095b143b19a1f130eb
clone_repo script does not fail if the branch does not exist, but
checks out the master branch [1], so we have to make sure the required
branch exists.
This patch also adds a check that there were no more patches merged
after the given branch was tagged EOL.
[1] https://opendev.org/openstack/releases/src/branch/master/tools/clone_repo.sh#L187
Change-Id: Ia1ededfc3cebbae807719750dc5e2d5949ce9a21
The branch to use in process_auto_release is determined by the
branch linked to a series's status, however, at some point during
a series projects are branched and the status isn't yet updated
so used branch refer to master, and so, to the next series.
During the final-rc delta of changes between RC1 and RC2 is
retrieved from master, which is wrong.
These changes allow to choose another branch if needed.
The default used branch will remain the series retrieved
by status.
Change-Id: Iff8df80aa6f3ba67c04e0674d7c72474f3a4e73a
Some traiing projects follow the cycle-with-rc model however our doc
and our tools doesn't differentiate them during RC1. These project
doesn't have to be released during RC1. These changes adapt our process
accordingly.
Change-Id: I44040bc040f19a75c468d385395323fe0a1f459a
This patch adds a question whether to delete a stale eol branch if it
does not contain open patches.
The deletion is done via Gerrit API, which requires 'delete reference'
access category for the user who is running this script.
Change-Id: Iea33c2bd4bd20dd0f92fd9a7e12008d841176974
This tool will be used in doc addition around the branching period
to ensure that we don't miss to create stable branches for project.
Also this tooling should be used around each trailing deadline to ensure
to not forget a trailing projects. Trailing projects are those who can
easily meet the conditions that lead to forget to branch them.
Adding usage of this tooling in our process to ensure to check that
point once a time at each new series.
Change-Id: I2a8bd25ecfe5bb1bde5af16b08f897a5bdc11cb7
When generating release patches with process_auto_releases.sh it could
be useful to have the list of changes in the commit message of the
release patch. This patch adds an extra question for that.
Change-Id: I8f26fb5655ef1cd280b243cadbb7b49d596e7d51
Since transition from the EOL model to the EM model eol branches
are no longer removed and this step is no longer in the release team
process.
Keep stale branches can be an issue in some situation especially with
zuul and our gates. To avoid this situation the release team propose
to reintroduce regular checks to ensure that we remove stale branches
that have been tagged eol previously.
As discussed during our previous meetings soon it will be possible to design
a new job and to trigger it to remove eol branches automatically.
This will possible when the infra would have been updated and when all
the needed pieces will be in place.
Change-Id: I53aeb3211bb3251a3278472a514a39afe825cdd2
The release team has a few cases now where we need to propose release
patches for a large set of deliverables. Due to differences in semver
choice based on actually merged commits, along with other decisions that
need to be made while doing these, this process can't be completely
automated. But this adds a script that will automate the majority of the
process to simplify it as much as possible.
Change-Id: I6ec9fa77baab58df93bdadc0ac3c3fa5d3e18804
Signed-off-by: Sean McGinnis <sean.mcginnis@gmail.com>
This updates the version of hacking we are using for our linting and
addresses various issues that the latest version flags.
Change-Id: I95ed73411e96451bc447e1b5858b0466fb8f10a9
Signed-off-by: Sean McGinnis <sean.mcginnis@gmail.com>
The load() call from PyYaml is considered a higher security risk in that
it uses the FullLoader. safe_loade() is considered more safe by using
the SafeLoader instead.
Since the 5.1 release of PyYaml added warning output when using load(),
this switches over to safe_load() to avoid the unnecessary noise.
Change-Id: I1949deed094822d2c2c56659eadb1fc5ea6a59e5
Signed-off-by: Sean McGinnis <sean.mcginnis@gmail.com>
Rewrite list_unreleased_changes as python format and add new features.
By default it will behave as the previous version of this command (the
shell script).
Few new feature have been added in these changes to allow us to more
easily handle outputs in scripts.
Features added:
- allow user to retrieve results in json format
- allow user to retrieve results in yaml format
- allow user to ignore project not yet released
The shell script entry-point (tools) is still there but it will call
the python command in a venv instead of directly implement features.
Also the python version allow us to more surround this tools with unit tests.
Change-Id: Iaf86ecb1589c40102acb621b23ea12d71ed453bb
This updates the script to not require a specific topic to make it
easier to automate a job that periodically makes sure all open reviews
have had the PTL and liaison added.
Also refactored the adding of teams because bash array handling can be a
bit wonky sometimes and not always append values. This makes sure no
teams are skipped.
This is slightly less optimized for large reviews like the final series
release since it loops through teams based on the deliverable files. As
a slight optimization, it will skip a team if it was the same team as
the last deliverable file. It just might be possible that the same team
will be processed multiple times if their deliverable files are not in
alphabetical order, but there is no harm in that other than taking
slightly longer to complete.
Change-Id: I9a9194ea276aa0120aef21a321f48a93419fb848
Signed-off-by: Sean McGinnis <sean.mcginnis@gmail.com>
If we miss something with this command we need to get the
python script's help to get how to use this tools, these changes
add the command to execute through the wrapper to get this help.
Change-Id: I1e9fceece6fee40722e21e49ca5689faacefdf93
If we run in CI, rather than prioritizing using 'python setup.py --name'
as the project name to be used in release announcements, use the
repository name as provided by Zuul.
This should fix the issue reported in:
http://lists.openstack.org/pipermail/openstack-discuss/2020-April/014359.html
Change-Id: Ia0026356676561a6b3a55ab05db5ed7a58b646b6