#6733 Update release candidate compose SOP
Merged 6 years ago by mohanboddu. Opened 7 years ago by kellin.
kellin/releng update-compose-sop  into  master

file modified
-1
@@ -50,7 +50,6 @@ 

      sop_branching

      sop_breaking_development_freeze

      sop_composing_fedora

-     sop_composing_test_images

      sop_create_release_signing_key

      sop_creating_live_translation_images

      sop_custom_spins

@@ -7,117 +7,242 @@ 

  

  Description

  ===========

- When Quality Engineering requests a TC or RC they do so by filing or reopening

- a ticket in Release Engineering pagure.

+ All composes are defined by configuration files kept in the `pungi-fedora repository`_.

+ 

+ Composes fall into two categories. They may be release candidates created on demand

+ or nightly composes set to run at a scheduled time each day.

+ 

+ =============== ===================== =======================

+ Compose Name    Configuration File    Compose Script

+ =============== ===================== =======================

+ Atomic          fedora-atomic.conf    twoweek-nightly.sh

+ Docker          fedora-docker.conf    docker-nightly.sh

+ Cloud           fedora-cloud.conf     cloud-nightly.sh

+ Modular         fedora-modular.conf   modular-nightly.sh

+ Nightly         fedora.conf           nightly.sh

+ =============== ===================== =======================

+ 

+ When Quality Engineering (QE) requests a Release Candidate (RC) they do so by opening

+ an issue in the releng repository on pagure. Release candidate composes are not

+ currently automated.

+ 

+ =============== ===================== =======================

+ Compose Name    Configuration File    Compose Script

+ =============== ===================== =======================

+ Alpha           fedora-alpha.conf     release-candidate.sh

+ Beta            fedora-beta.conf      release-candidate.sh

+ GA              fedora-final.conf     release-candidate.sh

+ =============== ===================== =======================

+ 

+ .. note::

+    Fedora 26 was the last release to include an Alpha release candidate.

+ 

  

  Action

  ======

- Create the full product tree.

+ The following procedures are for release candidates only. They do not apply to the

+ scheduled nightly composes.

  

- Composing the Tree

- ------------------

- #. Log into a compose system: ``compose-x86-01`` or

-    ``arm01-releng00.arm.fedoraproject.org``

+ Review Compose Tags

+ -------------------

+ #. List any pre-existing builds in the current compose tag

  

     ::

  

-         $ ssh -A compose-x86-01.phx2.fedoraproject.org

+         $ koji list-tagged f[release_version]-compose

  

- .. note::

-     ssh agent forwarding is needed to enable sshing to boxes for composing the

-     different arch trees.

+ #. Verify pre-existing builds are in compose tags

+ 

+    The tagged builds from the previous composes should all be present in the

+    output from the previous step. Consult the request ticket for the list

+    of builds expected in this output.

+ 

+    .. note::

+       The very first run of an Alpha, Beta, or GA compose should have no builds

+       listed under the compose tag. It is important to clear pre-existing builds

+       from the compose tag when moving between the Alpha, Beta and RC composes.

+       Verify that these builds were removed.

+ 

+       ::

+ 

+            $ koji list-tagged f[release_version]-compose

+            $ koji untag-build --all f[release_version]-compose [build1 build2 ...]

+ 

+    .. note::

+       The order in which packages are added into the f[release_version]-compose tag

+       matter. If the builds are untagged erroneously then special attention should

+       be given to adding them back correctly.

+ 

+ 

+ #. Add builds specified by QE to the current compose tag

+ 

+    ::

+ 

+         $ koji tag-build f[release_version]-compose [build1 build2 ...]

+ 

+    .. note::

+        These steps may be completed on a local machine as long as the user has

+        appropriate permissions in the koji tool.

+ 

+ Package Signing before the Compose

+ ----------------------------------

+ #. Check for unsigned packages

+ 

+    ::

+ 

+         $ koji list-tagged f[release_version]-signing-pending

+ 

+    .. note::

+       If there are unsigned builds then wait for the automated queue to pick

+       them up and sign them. Contact a member of the Fedora infrastructure team

+       if the package signing has taken more than thirty minutes.

+ 

+ 

+ Running the Compose

+ -------------------

+ #. Update the pungi-fedora config file

+    Composes use a configuration file to construct the compose. Each

+    compose uses its own configuration. The ``global_release`` variable

+    should start from 1.1 and the second number should increment each time

+    a new compose is created.

+ 

+    * Alpha - ``fedora-alpha.conf``

+    * Beta - ``fedora-beta.conf``

+    * RC - ``fedora-final.conf``

+ 

+ #. Log into the compose backend

  

- #. update or checkout the git repo

+    ::

+ 

+         $ ssh compose-x86-01.phx2.fedoraproject.org

+ 

+ #. Open a screen session

  

     ::

  

-         $ cd releng/

-         $ git pull --rebase

+         $ screen

+ 

+ #. Obtain the pungi-fedora branch for the current compose

  

-    or

+    The first time any user account executes a compose the pungi-fedora

+    git repository must be cloned. The compose candidate script that

+    invokes pungi should be run from 

+    ``compose-x86-01.phx2.fedoraproject.org``.

  

     ::

  

-         $ git clone https://git.fedorahosted.org/git/releng

+         $ git clone ssh://git@pagure.io/pungi-fedora.git

  

- #. Sign rpms for bleed repo

+    Enter the pungi-fedora directory.

  

     ::

  

-         ssh releng04.phx2.fedoraproject.org

+         $ cd pungi-fedora

  

-    repeat step 2 on signing box.

+    If the clone step above was not required then fully update the existing

+    repository checkout from pagure.

  

     ::

  

-         $ cd releng/scripts

-         $ NSS_HASH_ALG_SUPPORT=+MD5 ./sigulsign_unsigned.py fedora-22 -v --write-all <build nvrs>

+         $ git fetch origin

+         $ git checkout f[release_version]

+         $ git pull origin f[release_version]

+ 

+ #. Run the compose

+ 

+    ::

+ 

+         $ sudo ./release-candidate.sh [Alpha|Beta|RC]-#.#

+ 

+    The numbering scheme begins with 1.1 and the second number is incremented

+    after each compose.

+ 

+    .. note::

+       Pungi requires numbers in the format #.# as an argument. It is because

+       of this that composes always start with the number 1 and the second

+       number is incremented with each compose.

+ 

+    .. note::

+        If the compose fails with a directory missing error, then create

+        the compose directory with ``mkdir /mnt/koji/compose/[release_version]``

+ 

+ Syncing the Compose

+ -------------------

+ 

+ We sync the compose to ``/pub/alt/stage`` to enable faster access to new content

+ for QA and the larger Fedora community.

  

- #. Update the bleed repo on <code>compose-x86-01</code>:

+ #. Log into the compose backend

  

     ::

  

-         $ ~/releng/scripts/makebleed <build nvrs>

+         $ ssh compose-x86-01.phx2.fedoraproject.org

+ 

+ #. Open a screen session

+ 

+    ::

  

- #. Kick off compose on a compose system: ``compose-x86-01`` or

-    ``arm03-releng00.arm.fedoraproject.org``

+         $ screen

  

-    for a TC

+ #. Check the status of the compose

  

     ::

  

-         $ cd ~/releng/scripts

-         $ ./run-pungi 22_Beta_TC9 "" 20150409

+         $  cat /mnt/koji/compose/[release_version]/[compose_id]/STATUS

+ 

+    Do not continue with any further steps if the output above is ``DOOMED``.

+ 

+ #. Create the directory targeted for the copy

+    ::

  

-    for a RC

+         $ sudo -u ftpsync mkdir -p /pub/alt/stage/[release_version]_[release_label]-[#.#]

  

+ #. Locate the compose directory that will be the copy source

     ::

  

-         $ cd ~/releng/scripts

-         $ ./run-pungi 22_Beta _RC2 20150413

+         $ ls /mnt/koji/compose/[release_version]/[compose_id]

  

- #. Check the compose

+    .. note::

+       Take care executing the synchronization if the next compose

+       is already running. Be sure to grab the correct directory.

  

-    check the tree under ``/mnt/fedora_koji/compose/<Compose>/<Release>/`` for

-    completeness

+       If in doubt, check /mnt/koji/compose/[release_version]/[compose_id]/STATUS

+       to be sure it is finished.

  

- #. open up the tree:

+ #. Run the synchronization one-liner

+ 

+    The synchronization of the completed compose to the public domain is currently

+    a one-liner shell script.  Pay close attention to what needs replaced in the example

+    below.

  

     ::

  

-         sg releng "chmod 755 /pub/alt/stage/<Compose>/"

+         $ for dir in Everything Cloud CloudImages Docker Labs Server Spins Workstation WorkstationOstree metadata; do sudo -u ftpsync rsync -avhH /mnt/koji/compose/26/Fedora-26-20170328.0/compose/$dir/ /pub/alt/stage/26_Alpha-1.4/$dir/ --link-dest=/pub/fedora/linux/development/26/Everything/ --link-dest=/pub/alt/stage/26_Alpha-1.1/Everything/ --link-dest=/pub/alt/stage/26_Alpha-1.2/Everything/ --link-dest=/pub/alt/stage/26_Alpha-1.3/Everything --link-dest=/pub/alt/stage/26_Alpha-1.4/Everything; done

+ 

+    .. note::

+       This one-liner prompts for the password+token several times over the course of its runtime. If the

+       login window is missed it will skip an entire variant.  Just check the source and destination after

+       completion and, if there is a directory missing, run the script again.

+ 

+ #. Update the issue in the releng pagure repository

  

- #. Close the ticket:

+    Once the compose and sync is complete the issue in pagure should be updated and closed.

  

-    Copy the output pasted at the end of run-pungi and paste into the ticket and

-    close it.

+    .. admonition:: Standard Ticket Verbage

  

- Update the ticket

- -----------------

- The ticket should be closed when the compose has been opened up pasting in the

- output from run-pungi

+       Compose is done and available from https://kojipkgs.fedoraproject.org/compose/26/Fedora-26-20170328.0/compose/ it has been synced to http://dl.fedoraproject.org/pub/alt/stage/26_Alpha-1.4/ rpms have all be hardlinked to /pub/fedora/linux/development/26/

  

  Verification

  ============

- Verification can be done as the task steps are being performed.

  

- Image Creation

- --------------

- When pungi exits, you can verify that the ``development/<arch>/os/images/``

- directory exists and has content.  That path is relative to the destination

- directory you provide pungi.

+ The method for verifying a compose has completed is checking ``/mnt/koji/compose/[release_version]/[compose_dir]/STATUS``.

+ Any status other than DOOMED is OK.

  

- Updating the Ticket

- -------------------

- One can click the link provided in the ticket update and ensure the path is

- correct.  Verifying that the ticket is closed should be pretty self evident.

- 

- Consider Before Running

+ Consider before Running

  =======================

- Many things can hinder a compose, broken deps in the chroot set, broken deps

- in the compose set, bugs in the compose software, etc...  If any problem is ran

- into along the way, it is best to alert QA via a ticket update, and then work

- with the appropriate party to clear the obstruction.

+ Composes and file synchronizations should be run in a screen session on a remote machine. This enables the

+ operator to withstand network connection issues.

+ 

+ .. _pungi-fedora repository:

+     https://pagure.io/pungi-fedora

  

- Some of these tasks take a long time to finish, so it is highly recommended

- that you run these tasks in a screen session.

@@ -1,144 +0,0 @@ 

- .. SPDX-License-Identifier:    CC-BY-SA-3.0

- 

- 

- ========================

- Composing Testing Images

- ========================

- 

- Description

- ===========

- From time to time the Quality Assurance team requests official images for

- testing (boot images only, no full media).  Release Engineering is

- responsible for creating them.

- 

- Action

- ======

- Fulfilling the images for testing ticket requires composing the images,

- uploading the images, and updating the ticket.

- 

- Composing the images

- --------------------

- #. Log into compose system: ``compose-x86-01``

- 

-    ::

- 

-         $ ssh gateway.fedoraproject.org

-         $ ssh compose-x86-01

- 

- #. Update the compose kickstart file in in the git repo in

-    ``/srv/pungi/spin-kickstarts/``

- 

-    ::

- 

-         $ cd /srv/pungi/spin-kickstarts/

-         $ git pull

- 

- #. Update / create chroots (fedora-devel-compose-{i386,x86_64})

- 

-    ::

- 

-         $ mock -r fedora-devel-compose-i386 --shell

-         $ yum update

- 

-    If the chroot does not exist yet you will have to create it:

- 

-    ::

- 

-         $ mock -r fedora-devel-compose-i386 --init

- 

- #. Shell into the chroot (this is not necessary if you already shelled into

-    update above)

- 

-    ::

- 

-         $ mock -r fedora-devel-compose-i386 --shell

- 

- #. Run pungi to create the images:

- 

-    ::

- 

-         $ pungi -c /srv/pungi/spin-kickstarts/fedora-install-fedora.ks \

-             --destdir /srv/pungi/rawhide-20100122.0 \

-             --cachedir /srv/pungi/cache \

-             --nosource \

-             --nodebug --ver development -GCB

- 

-    When done, exit the mock chroot.

- 

- Upload the images

- -----------------

- We host the images on alt.fedoraproject.org which has an internal name of

- ``secondary1``.

- 

- #. Create the output dir on ``secondary1``

- 

-    ::

- 

-         $ ssh secondary1 mkdir -p /srv/pub/alt/stage/rawhide-20100122

- 

- #. rsync the output, minus the packages and repodata, to

-    ``alt.fedoraproject.org``

- 

-    ::

- 

-         $ rsync -avHh --progress --stats --exclude Packages \

-                --exclude repodata --exclude repoview \

-                /srv/pungi/rawhide-20100122.0/development/ \

-                secondary1:/srv/pub/alt/stage/rawhide-20100122/

- 

- #. Update the 'to be tested' symlink:

- 

-    ::

- 

-         $ ssh secondary1 ln -sfT rawhide-20100122 /srv/pub/alt/stage/rawhide-testing

- 

- Update the ticket

- -----------------

- The ticket should be closed when the images are uploaded and the symlink has

- been adjusted.  The full path should be noted for clarity sake.

- 

- If there are delays in the compose, the ticket should be updated with that

- information and (if known) amount of delay in finishing the compose.

- 

- Verification

- ============

- Verification can be done as the task steps are being performed.

- 

- Image Creation

- --------------

- When pungi exits, you can verify that the ``development/<arch>/os/images/``

- directory exists and has content.  That path is relative to the destination

- directory you provide pungi.

- 

- Upload the images

- -----------------

- One can simply browse to

- http://dl.fedoraproject.org/pub/alt/stage/rawhide-testing and check the dates

- on the directories.

- 

- Updating the Ticket

- -------------------

- One can click the link provided in the ticket update and ensure the path is

- correct.  Verifying that the ticket is closed should be pretty self evident.

- 

- Consider Before Running

- =======================

- Many things can hinder a compose, broken deps in the chroot set, broken deps

- in the compose set, bugs in the compose software, etc...  If any problem is

- ran into along the way, it is best to alert QA via a ticket update, and then

- work with the appropriate party to clear the obstruction.

- 

- Some of these tasks take a long time to finish, so it is highly recommended

- that you run these tasks in a ``screen`` or ``tmux`` session.

- 

- If you need to make use of freshly built packages since the last rawhide

- compose, you can create a local repository.  ``/srv/pungi/bleed/<arch>/`` on

- the compose system can be used as a temporary repo for new packages.  Don'

- forget to update the mock chroot with the new packages (if appropriate) and to

- add the temporary repo to the ``spin-kickstarts/fedora-install-fedora.ks``

- file for use by pungi.

- 

- Disk space on ``secondary1`` is limited, so if you need to go through a number

- of composes before you get one that tests well, be sure to prune the failed

- composes.  This is true of disk space on the compose host too, be sure to trim

- ``/srv/pungi/`` of composes that are no longer needed locally.

  • updates the standard operating procedures for our current compose process

2 new commits added

  • WIP
  • Remove deprecated testing compose SOP
7 years ago

2 new commits added

  • Update SOP for composing release candidates
  • Remove deprecated testing compose SOP
6 years ago

rebased onto 523c0c68bc810ab74e6f128e6a0fb72bbfdc1f4a

6 years ago

Instead of candidate, use nightly composes.

s/Release Engineering pagure/releng repo in pagure/
And add a url.

Add a note that we are not doing alpha since F27.

Pungi should be run from compose-x86-01.phx2.fedoraproject.org for release candidate composes.

Once the compose is done, we sync it to /pub/alt/stage mirror so that QA and community people can access the content faster.

/mnt/koji/compose/[release_version]/[compose_id]/

I think we dont need this once the sudoers file is corrected.

I think this should not be removed and
.. admonition:: Standard Ticket Verbage
should be under update ticket section.
And then close the ticket.

rebased onto b245d11

6 years ago

I have made the requested changes @mohanboddu .

Let me know what you think.

Pull-Request has been merged by mohanboddu

6 years ago