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
Cycle trailing deliverables are often not released by the time we
initialize the next series. We add a comment to deliverable files during
their creation to note if they were not released in the last cycle to
help highlight orphaned deliverables. This can be misleading for cycle
trailing deliverables, since usually they do end up being released, but
after we've created the file and included the comment.
To make this comment more useful, this removes its inclusion for
trailing projects.
Change-Id: I010dadc2ca9026248e7f9dfc89d257afdf97be72
Signed-off-by: Sean McGinnis <sean.mcginnis@gmail.com>
Use `reno semver-next` to check the proposed version against the types
of changes described in the release notes.
Change-Id: I9ac52ff524440670366ebeceb11dc04a446e876c
Signed-off-by: Doug Hellmann <doug@doughellmann.com>
This allows the projects with a cycle-with-intermediary release model
to be able to automatically generate the yaml file with the correct
new branch.
Change-Id: I003e5d3d39cbb8961822b3fd2a384bf3c9f66f5e
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>
Indeed `gitutils.gitutils.stable_branch_exists` is waiting for a branch
name not prefixed with `stable/`. This was not an issue with the
previous shell version. These changes fix that.
Without these changes the master branch will be analyzed and stable
branches will be ignored.
Change-Id: I61542508e8566eb797b0e304a6914d25e3b07e14
Indeed during my previous implementation of this script, I missed to handle
the cases where repo is not found or has not yet been released when users
ask for a standard output. For yaml and json is not an issue as we dump
raw dict at the asked format (json or yaml).
These changes fix that.
Also to stay closer of the previous implementation of this tools (the
shell version), these changes add:
- colored outputs
- compared revisions (even when no diff are found,
like in the previous shell version).
Change-Id: I74f0f8c7071fbf2c8272fc002f28b793ff8e672d
"standard" is not one of the valid values and it results in the
command erroring because no output is returned. The correct default
for this opt seems to be "std".
Change-Id: I7df3feb98877b2a846f7239fb741ae84e35b59d5
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 does a new release with release-test to see if everything is
covered to allow branches to have a bugfix/* prefix.
Change-Id: I7869cf412524d7352249f02f7449b2fddf401d2c
Signed-off-by: Sean McGinnis <sean.mcginnis@gmail.com>
Clarify language used in the page.
Only list teams with active deliverables (current or still
under maintenance) in the Teams section. This allows to stop
mentioning long-gone teams like Astara or Cue or Fuel.
Change-Id: Ic41020606febf69769825f904255c915784791a1
Cycle-trailing deliverables are regular cycle-following deliverables,
using RCs or not not using RCs -- they just have a different deadline.
Rather than using a release model, those deadline variants are better
described using deliverable types, in much the same way 'library'
deliverables have a specific deadline too.
This simplifies the list of models significantly, and allows to have
proposer validation of trailing deliverables that use RCs or not use
RCs.
For compatibility in old branches, setting 'cycle-trailing' is still
supported, it will just overload the type to 'trailing' if specified.
Change-Id: Ifce88ef3e5dd406f45f25214699f16e736ad5377
This adds a new std-with-versions branch type. This is used to control
validation logic when branching to allow the Ironic team to create
intermediary stable branches based on major.minor version numbers in
addition to our normal expected stable/$series branches.
https://specs.openstack.org/openstack/ironic-specs/specs/not-implemented/new-release-model.html
Change-Id: Ic482c77a2c177162ffe37643a455ac1724a658b3
Signed-off-by: Sean McGinnis <sean.mcginnis@gmail.com>
These changes fix the `list-deliverables --no-stable-branch` command when
`stable-branch-type` is `none`.
Previously projects with `stable-branch-type: none` was returned in
results.
Project with this type of stable branch should be ignored when we
looking for projects with no stable branche (`no-stable-branch`).
Change-Id: I05c0e7e153e9ddbe5bc3632de9bfdde411ab580d
Handles redirection in the link checking for artifacts.
Also drops looking for py2 wheels since we now only have py3.
Change-Id: I34b201902faa60795dae44ebf059af0f2f9242c6
Signed-off-by: Sean McGinnis <sean.mcginnis@gmail.com>
In order to tell pbr not to build release notes and create CHANGELOG and
AUTHORS files, we need to pass flags in as environment variables. We
can't just pass these flags though, as that will exclude the rest of the
normal environment set in. So copy the current environment, append our
updates, and pass that in explicitly to the subprocess call.
Change-Id: Ia47e73b51b3216572d51399338e95bd4269a8d1d
Signed-off-by: Sean McGinnis <sean.mcginnis@gmail.com>
We have a couple validations that need to build an sdist now. But once
it has been built in our temporary pristine clone, we don't need to
build it again. Because we create a clean clone, we also don't need to
worry about any stale dist builds. This adds a check to the sdist build
logic to recognize if an sdist has already been built and skip it.
There are also a few extra steps in the build process that are not
needed for our purposes. The biggest is the new(ish) pbr behavior of
building all release notes in the git tree if reno is present. This adds
an environment variable flag to tell pbr not to do that. While we're at
it, we don't need AUTHORS or CHANGELOG created either, so set the flags
telling pbr to skip those as well.
Change-Id: I15be9a12ff6684729980c40afae9625a8b8e550a
Signed-off-by: Sean McGinnis <sean.mcginnis@gmail.com>
Add the canary mode feature to propose_final_releases.py to allow
us to test final release with a pseudo workflow based on
the real process.
Change-Id: I27f604eb52563b04f5bb8a24e096b9fec4a14dbd
We have occasional release announcement job failures due to network
issues or other SMTP errors sending the announcement. Most of these
appear to be temporary failures that would be resolved with another
attempt.
This patch adds exponential backoff retries to the sending process to
try to get around these failures.
Change-Id: I70bb470639385caecee7ccfc0e449449bfc9b871
Signed-off-by: Sean McGinnis <sean.mcginnis@gmail.com>
Update docs building:
* Remove unneeded doc sections from setup.cfg
* Change constraints to use published document, use
new variable
* Import mock from unittest, remove imports from future
Change-Id: I8f33d4c0bf5fcba203d410cd021c548219a757ec
This will allow us to create releases with Python 2 support, while
moving forward with the Python 2 drop on master.
Change-Id: Ie7a8f36c3b88f5451c44c5a37f1ac3543a942e6e
When iterating over xstatic packages which haven't had the benefit
of pip install creating explicit namespace packages for them, we
reset the implicit namespaces which may linger from earlier imports.
Change-Id: Ie6fe282c9d06f0147e37bbe2cf6de9d9c3f0eb39
We don't want to allow tagging EM if there were no releases. We also
want to make sure the -em tag is on the last official release that was
done.
Change-Id: I7afb3a52cf2ec47d8e0154b51825b500806aa590
Signed-off-by: Sean McGinnis <sean.mcginnis@gmail.com>
Newton is EOL, and Ocata through Pike are in Extended Maintenance,
meaning they are closed as far as release management goes. This adds
those series to the list of closed cycles.
Change-Id: I3f3c3d61f40c951388f3a56e93bd23edd75f3276
Signed-off-by: Sean McGinnis <sean.mcginnis@gmail.com>
There could be an issue in previous tagged releases due to external
factors. In that case, there is no way to fix that version.
Validation currently checks out the previous tag and creates an sdist in
order to compare requirements changes on bugfix version bumps only. In
the case where the previous release has an issue, just handle the
failure and move along.
Change-Id: I60db41a475c3a13359556198c0611489dffa4b3f
Signed-off-by: Sean McGinnis <sean.mcginnis@gmail.com>
In releases.o.o we display signature links for all deliverables,
if the series is > Ocata or independent. Since some "independent"
deliverables predate the signature generation tooling, that results
in a number of "independent" deliverables displaying broken signature
links, which makes us look bad.
This adds a flag (skipped-sig) that can be set for independent
deliverables that did not have any signature generated (pre-Ocata), and
skips the signature link display if the flag is set.
As a practical example, this fixes broken links for PBR<2. Tony signed
up to automatically generate the others.
Change-Id: I44a49e3f08010a85c64673d2292528139eabcc99
Now that all the Contacts are an object we can just use __str__ to
format them and pass that to print rather than use a print_contact()
function
Change-Id: I6cce8c08eaa19c06695a044da59ba75e671f3005
get-contacts:
To extract the PTL/Liaison contact information from the governance data
/ release team data
tools/bulk_review.sh:
To manipulate a dirty working-tree and post as a single gerrit topic,
one change per team. Changes are unordered so any change can be merged
when it's ready/ approved by the appropriate team
Also enhance get-deliverable-owner: to detect file paths
Story: 2005704
Task: 31028
Change-Id: Ia319e8a7b4da195cb4bc861c51025a41adc43bb3