Update info about mass rebuild and beta freeze
Signed-off-by: Tomas Hrcka <thrcka@redhat.com>
This commit is contained in:
parent
a5a2851d50
commit
9af9868aa1
2 changed files with 411 additions and 3 deletions
|
@ -1,9 +1,155 @@
|
|||
include::_partials/attributes.adoc[]
|
||||
|
||||
== Fedora Beta Freeze
|
||||
== Beta freeze and Bodhi Activation Point
|
||||
|
||||
=== Ansible changes
|
||||
=== Description
|
||||
|
||||
=== Update bodhi release
|
||||
Bodhi must be activated after two weeks of
|
||||
https://docs.pagure.org/releng/sop_mass_branching.html[Mass Branching]
|
||||
at 14:00 UTC.
|
||||
|
||||
=== Action
|
||||
|
||||
==== Making koji changes
|
||||
|
||||
Make the following koji tag changes
|
||||
|
||||
[source,subs="attributes+"]
|
||||
....
|
||||
$ koji remove-tag-inheritance f{branched}-updates-candidate f{branched}
|
||||
$ koji remove-tag-inheritance f{branched}-updates-testing f{branched}
|
||||
$ koji remove-tag-inheritance f{branched}-updates-pending f{branched}
|
||||
$ koji remove-tag-inheritance f{branched}-override f{branched}
|
||||
$ koji add-tag-inheritance f{branched}-updates-candidate f{branched}-updates
|
||||
$ koji add-tag-inheritance f{branched}-updates-testing f{branched}-updates
|
||||
$ koji add-tag-inheritance f{branched}-updates-pending f{branched}-updates
|
||||
$ koji add-tag-inheritance f{branched}-override f{branched}-updates
|
||||
$ koji edit-tag --perm=admin f{branched}
|
||||
....
|
||||
|
||||
==== Update bodhi rpm release
|
||||
|
||||
Set the bodhi rpm to release to not to automatically create the update
|
||||
and also bodhi knows to compose the updates
|
||||
|
||||
[source,subs="attributes+"]
|
||||
....
|
||||
$ bodhi releases edit --name "F{branched}" --stable-tag f{branched}-updates --testing-repository updates-testing --package-manager dnf --no-create-automatic-updates --composed-by-bodhi --state frozen
|
||||
....
|
||||
|
||||
==== Add the modular release
|
||||
|
||||
Run the following command on your own workstation to add the modular
|
||||
release
|
||||
|
||||
[source,subs="attributes+"]
|
||||
....
|
||||
$ bodhi releases create --name F{branched}M --long-name "Fedora {branched} Modular" --id-prefix FEDORA-MODULAR --version {branched} --branch f{branched}m --dist-tag f{branched}-modular --stable-tag f{branched}-modular-updates --testing-tag f{branched}-modular-updates-testing --candidate-tag f{branched}-modular-updates-candidate --pending-stable-tag f{branched}-modular-updates-pending --pending-testing-tag f{branched}-modular-updates-testing-pending --pending-signing-tag f{branched}-modular-signing-pending --override-tag f{branched}-modular-override --state pending --user <fas username>
|
||||
....
|
||||
|
||||
Please update fas account username in above command.
|
||||
|
||||
[WARNING]
|
||||
.Warning
|
||||
====
|
||||
Due to a https://github.com/fedora-infra/bodhi/issues/2177[bug] in
|
||||
Bodhi, it is critical that Bodhi processes be restarted any time
|
||||
`bodhi releases create` or `bodhi releases edit` are used.
|
||||
====
|
||||
|
||||
[NOTE]
|
||||
.Note
|
||||
====
|
||||
Add the container and flatpak releases if they weren't already added to
|
||||
bodhi
|
||||
====
|
||||
|
||||
=== Update vars
|
||||
|
||||
Update the _FedoraBranchedBodhi_ and _RelEngFrozen_ vars in infra
|
||||
ansible
|
||||
|
||||
=== Update all relevant projects in ansible
|
||||
As in https://pagure.io/fedora-infra/ansible/pull-request/1327[this Ansible Pull request] create changes for the {branched} release
|
||||
==== Run the playbooks
|
||||
|
||||
....
|
||||
$ rbac-playbook openshift-apps/greenwave.yml
|
||||
$ rbac-playbook openshift-apps/bodhi.yml
|
||||
$ rbac-playbook groups/bodhi-backend.yml
|
||||
$ rbac-playbook groups/releng-compose.yml
|
||||
$ rbac-playbook manual/autosign.yml
|
||||
....
|
||||
|
||||
Greenwave runs in OpenShift (as implied by the playbook paths), and so
|
||||
the change will not be live right away when the playbook finishes. You
|
||||
can monitor
|
||||
https://greenwave-web-greenwave.app.os.fedoraproject.org/api/v1.0/policies
|
||||
to wait for the new policy to appear (it should take a few minutes).
|
||||
|
||||
==== Restart bodhi services
|
||||
|
||||
Restart bodhi services to understand the bodhi new release on
|
||||
bodhi-backend01 (Look at warning in
|
||||
https://docs.pagure.org/releng/sop_bodhi_activation.html#action and the
|
||||
bug is https://github.com/fedora-infra/bodhi/issues/2177)
|
||||
|
||||
....
|
||||
$ sudo systemctl restart bodhi-celery
|
||||
$ sudo systemctl restart fm-consumer@config
|
||||
$ sudo systemctl restart koji-sync-listener
|
||||
....
|
||||
|
||||
==== Send Announcement
|
||||
|
||||
Email *devel-announce* and *test-announce* lists about Bodhi Activation.
|
||||
Please find the body of the email in templates dir in https://pagure.io/releng/blob/main/f/mail-templates/04-beta-freeze.txt[releng repository]
|
||||
|
||||
|
||||
=== Verification
|
||||
|
||||
Compare koji tagging structure with older release
|
||||
|
||||
[source,subs="attributes+"]
|
||||
....
|
||||
$ koji list-tag-inheritance {branched} --reverse
|
||||
$ koji list-tag-inheritance {current} --reverse
|
||||
....
|
||||
|
||||
Compare the bodhi release with older release
|
||||
|
||||
[source,subs="attributes+"]
|
||||
....
|
||||
$ bodhi releases info {branched}
|
||||
$ bodhi releases info {current}
|
||||
....
|
||||
|
||||
Check for other variants like modular, container and flatpaks
|
||||
|
||||
=== Process stable push requests
|
||||
|
||||
During feezes we need to push to stable builds included in the compose.
|
||||
QA will file a ticket with the nvrs to push.
|
||||
|
||||
[NOTE]
|
||||
.Note
|
||||
====
|
||||
If you are pushing a bodhi update that contains multiple builds, you
|
||||
need only pass bodhi-push a single build nvr and all the others in that
|
||||
update will be detected and pushed along with it. However, if you are
|
||||
pushing multiple disjoint bodhi updates then each build will need to be
|
||||
listed individually.
|
||||
====
|
||||
|
||||
....
|
||||
$ sudo -u apache bodhi-push --builds '<nvr1>,<nvr2>,...' --username <username>
|
||||
....
|
||||
|
||||
|
||||
=== Consider Before Running
|
||||
|
||||
No considerations at this time. The docs git repository is simply a
|
||||
static html hosting space and we can just re-render the docs and push to
|
||||
it again if necessary.
|
||||
|
||||
|
||||
|
|
|
@ -24,3 +24,265 @@ Check with secondary arches, whether they up-to-date enough with primary, create
|
|||
|
||||
The following steps may be completed in the weeks leading up to the scheduled mass rebuild.
|
||||
|
||||
== Mass Rebuild
|
||||
|
||||
=== Description
|
||||
|
||||
Periodically we do mass rebuilds of rawhide during the development
|
||||
cycle. This SOP will outline the steps necessary to do this.
|
||||
|
||||
=== Assumptions
|
||||
|
||||
This assumes that the mass rebuild has already been approved and
|
||||
scheduled via release engineering and FESCo. Coordinate with
|
||||
infrastructure as well for any needed koji updates.
|
||||
|
||||
This also assumes that the mass rebuild does not need to be done in
|
||||
dependency order, and that the mass rebuild does not involve a ABI
|
||||
change.
|
||||
|
||||
=== Considerations
|
||||
|
||||
* The most important thing to keep in mind while doing a mass rebuild is
|
||||
to communicate clearly what actions are being performed and the status
|
||||
of the rebuild.
|
||||
* Check in on scripts frequently to avoid a long stalled command from
|
||||
adding significant delays in completing the rebuild.
|
||||
* Check with secondary arches, whether they up-to-date enough with
|
||||
primary, create rebuild tag and target when they are. It will then take
|
||||
care of rebuilds of the arch specific packages in appropriate kojis.
|
||||
|
||||
=== Actions
|
||||
|
||||
==== Preparatory Steps
|
||||
|
||||
The following steps may be completed in the weeks leading up to the
|
||||
scheduled mass rebuild.
|
||||
|
||||
. Create the Mass Rebuild Pagure Issue
|
||||
+
|
||||
____
|
||||
Create an issue on the https://pagure.io/releng/issues[Release
|
||||
Engineering issues page] that points at the schedule for the current
|
||||
release.
|
||||
|
||||
See https://pagure.io/releng/issue/6898[the Fedora 27 mass rebuild issue
|
||||
example].
|
||||
____
|
||||
. Set up the Mass Rebuild Wiki Page
|
||||
+
|
||||
____
|
||||
The mass rebuild wiki page should answer the following questions for
|
||||
maintainers:
|
||||
|
||||
* Why the mass rebuild is happening
|
||||
* How to opt out of the mass rebuild
|
||||
|
||||
[NOTE]
|
||||
.Note
|
||||
====
|
||||
See https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild[the Fedora 26
|
||||
Wiki example].
|
||||
====
|
||||
____
|
||||
. Send out the Mass Rebuild Notice
|
||||
+
|
||||
____
|
||||
Send out the same information posted on the wiki to the
|
||||
[.title-ref]#devel-announce@lists.fedoraproject.org# mailing list.
|
||||
|
||||
[NOTE]
|
||||
.Note
|
||||
====
|
||||
See
|
||||
https://lists.fedoraproject.org/archives/list/devel-announce@lists.fedoraproject.org/message/QAMEEWUG7ND5E7LQYXQSQLRUDQPSBINA/[the
|
||||
Fedora 26 e-mail example].
|
||||
====
|
||||
____
|
||||
. Create a Tag to Contain the Mass Rebuild
|
||||
+
|
||||
____
|
||||
Mass rebuilds require their own tag to contain all related builds. The
|
||||
example assumes we are doing a rebuild for Fedora 26.
|
||||
|
||||
....
|
||||
$ koji add-tag f26-rebuild --parent f26
|
||||
....
|
||||
____
|
||||
. Request Package Auto-Signing for New Mass-Rebuild Tag
|
||||
+
|
||||
____
|
||||
File a ticket with https://pagure.io/fedora-infrastructure/issues[Fedora
|
||||
Infrastructure] requesting the new mass-rebuild tag be enabled for
|
||||
package auto-signing.
|
||||
____
|
||||
. Create the Koji Target for the Mass Rebuild
|
||||
+
|
||||
____
|
||||
Using the same [.title-ref]#f26-rebuild# tag created in the previous
|
||||
example:
|
||||
|
||||
....
|
||||
$ koji add-target f26-rebuild f26-build
|
||||
....
|
||||
|
||||
[NOTE]
|
||||
.Note
|
||||
====
|
||||
*koji add-target* _target-name_ _buildroot-tag_ _destination-tag_
|
||||
describes the syntax format above. If the _destination-tag_ is not
|
||||
specified then it will be the same as the _target-name_.
|
||||
====
|
||||
____
|
||||
. Update Scripts
|
||||
+
|
||||
____
|
||||
The mass rebuild depends on four main scripts from the
|
||||
https://pagure.io/releng[releng git repository]. Each one requires some
|
||||
changes in variables for each new mass rebuild cycle.
|
||||
|
||||
* {blank}
|
||||
+
|
||||
mass-rebuild.py::
|
||||
** buildtag
|
||||
** targets
|
||||
** epoch
|
||||
** comment
|
||||
** target
|
||||
* {blank}
|
||||
+
|
||||
find-failures.py::
|
||||
** buildtag
|
||||
** desttag
|
||||
** epoch
|
||||
* mass-tag.py
|
||||
* {blank}
|
||||
+
|
||||
need-rebuild.py::
|
||||
** buildtag
|
||||
** target
|
||||
** updates
|
||||
** epoch
|
||||
____
|
||||
|
||||
Change the following items:
|
||||
|
||||
* the build tag, holding tag, and target tag should be updated to
|
||||
reflect the Fedora release you're building for
|
||||
* the `epoch` should be updated to the point at which all features that
|
||||
the mass rebuild is for have landed in the build system (and a newRepo
|
||||
task completed with those features)
|
||||
* the comment which is inserted into spec changelogs
|
||||
|
||||
==== Starting the Mass Rebuild
|
||||
|
||||
The `mass-rebuild.py` script takes care of:
|
||||
|
||||
* Discovering available packages in koji
|
||||
* Trimming out packages which have already been rebuilt
|
||||
* Checking out packages from git
|
||||
* Bumping the spec file
|
||||
* Committing the change
|
||||
* git tagging the change
|
||||
* Submitting the build request to Koji
|
||||
|
||||
. Connect to the mass-rebuild Machine
|
||||
+
|
||||
____
|
||||
....
|
||||
$ ssh branched-composer.phx2.fedoraproject.org
|
||||
....
|
||||
____
|
||||
. Start a terminal multiplexer
|
||||
+
|
||||
____
|
||||
....
|
||||
$ tmux
|
||||
....
|
||||
____
|
||||
. Clone or checkout the latest copy of the
|
||||
https://pagure.io/releng[releng git repository].
|
||||
. Run the mass-rebuild.py script from _releng/scripts_
|
||||
+
|
||||
____
|
||||
....
|
||||
$ cd path/to/releng_repo/scripts
|
||||
$ ./mass-rebuild.py 2>&1 | tee ~/massbuild.out
|
||||
....
|
||||
____
|
||||
|
||||
==== Monitoring Mass Rebuilds
|
||||
|
||||
The community has a very high interest in the status of rebuilds and
|
||||
many maintainers will want to know if their build failed right away. The
|
||||
`find-failures.py` and `need-rebuild.py` scripts are designed to update
|
||||
publicly available URLs for stakeholders to monitor.
|
||||
|
||||
. Connect to a Compose Machine
|
||||
+
|
||||
____
|
||||
....
|
||||
$ ssh compose-x86-02.phx2.fedoraproject.org
|
||||
....
|
||||
____
|
||||
. Start a terminal multiplexer
|
||||
+
|
||||
____
|
||||
....
|
||||
$ tmux
|
||||
....
|
||||
____
|
||||
. Clone or checkout the latest copy of the
|
||||
https://pagure.io/releng[releng git repository]
|
||||
. {blank}
|
||||
+
|
||||
Set Up the Rebuild Failures Notification Web Site::
|
||||
The `find_failures.py` script discovers attempted builds that have
|
||||
failed. It lists those failed builds and sorts them by package owner.
|
||||
+
|
||||
....
|
||||
$ while true; do ./find_failures.py > f26-failures.html && cp f26-failures.html /mnt/koji/mass-rebuild/f26-failures.html; sleep 600; done
|
||||
....
|
||||
. Start a second pane in the terminal emulator
|
||||
. {blank}
|
||||
+
|
||||
Set up the Site for Packages that Need Rebuilt::
|
||||
The `need-rebuild.py` script discovers packages that have not yet been
|
||||
rebuilt and generates an html file listing them sorted by package
|
||||
owner. This gives external stakeholders a rough idea of how much work
|
||||
is remaining in the mass rebuild.
|
||||
+
|
||||
....
|
||||
$ while true; do ./need-rebuild.py > f26-need-rebuild.html && cp f26-need-rebuild.html /mnt/koji/mass-rebuild/f26-need-rebuild.html; sleep 600; done
|
||||
....
|
||||
|
||||
==== Post Mass Rebuild Tasks
|
||||
|
||||
Once the mass rebuild script completes, and all the pending builds have
|
||||
finished, the builds will need to be tagged. The `mass-tag.py` script
|
||||
will accomplish this task. The script will:
|
||||
|
||||
* Discover completed builds
|
||||
* Trim out builds that are older than the latest build for a given
|
||||
package
|
||||
* Tag remaining builds into their final destination (without generating
|
||||
email)
|
||||
|
||||
. Clone or checkout the latest copy of the
|
||||
https://pagure.io/releng[releng git repository]
|
||||
. Run the `mass-tag.py` script (requires koji kerberos authentication)
|
||||
+
|
||||
____
|
||||
....
|
||||
$ cd path/to/releng_repo/scripts
|
||||
$ ./mass-tag.py --source f36-rebuild --target f36
|
||||
....
|
||||
____
|
||||
. Send the final notification to the
|
||||
_devel-announce@lists.fedoraproject.org_ list
|
||||
+
|
||||
____
|
||||
The contents should look something like this
|
||||
https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/message/QAMEEWUG7ND5E7LQYXQSQLRUDQPSBINA/[example
|
||||
email].
|
||||
____
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue