Fedora Websites Release SOP Contents * 1 Preparing the website for a release * 1.1 Update gpg key * 1.1.1 Steps * 1.2 Prepare puppet commits * 2 Update website * 2.1 For Alpha * 2.2 For Beta * 2.3 For GA * 3 Fire in the hole * 4 Tips * 4.1 Creating Branches * 4.2 Checking Out Branch * 4.3 Merging branches Preparing the website for a release Update gpg key As the release approaches, watch the fedora-release package for a new key to be added. Use the update-gpg-keys script in the fedora-web git repository to add it to static/. Manually add it to /keys and /verify. Steps Get a copy of the new key(s) from the fedora-release repo http://git.fedorahosted.org/git/?p=fedora-release.git We usually obsolete keys at the same time, so as we add F-13 keys, we remove the F-10 keys from the fedora.gpg keyblock and move them on the /keys page to the "obsolete keys" section. Start by updating fedoraproject.org/update-gpg-keys and adding the keyids of any obsolete keys to the obsolete_keys list. Then run that script to add the new key(s): [fedora-web (f18-keys)]$ cd tools/ [tools (f18-keys)]$ scripts/update-gpg-keys /path/to/RPM-GPG-KEY-fedora-18-primary This will add the key(s) to the keyblock in static/fedora.gpg and create a text file for the key in static/$KEYID.txt as well. Verify that these files have been created properly and contain all the keys that they should. * Handy checks: gpg static/fedora.gpg or gpg static/$KEYID.txt * Adding "--with-fingerprint" option will add the fingerprint to the output Next, add new key(s) to data/content/keys.html, and move any obsolete keys to the proper section in that document. A script to aid in generating the HTML for new keys is at tools/make-gpg-key-html. It will print HTML to stdout for each RPM-GPG-KEY-* file given as arguments. This is suitable for copy/paste (or directly importing if your editor supports this). Update data/content/verify.html to remove any obsolete keys from the list of keyid's. Carefully verify that the data is correct, 'make en test' and checking http://localhost:5000/keys and http://localhost:5000/verify is wise. Update website For Alpha 0. create the fXX-Alpha branch from master 1. add Alpha banner Source: https://fedoraproject.org/wiki/F19_Artwork/Submissions/Banners Target: static/images/banners/f19alpha.png 2. update the global variables 2.1 change curr_state to 'Alpha' 2.2 check that next_name reflect the name of the next release 3. test and check all links in get-fedora.html, get-prerelease.html, verify.html 3.1 Ensure href's are consistent with actual filenames of mirrored content. You should be able to find the paths in /pub on bapp01 (sudo su - mirrormanager first) 3.2 need link to rel-eng SOP here (RFE, doesn't exist yet) 3.3 change the Release Notes link to the Alpha Release Notes wiki page 4. add the GPG signature in data/content/verify.html 5. add checksum files They should be in bapp01, could use the following command then scp: $ find /pub/fedora/linux/releases/test/17-Alpha/ -type f -name \ *CHECKSUM* -exec cp '{}' . \; 6. update the new POT and push it to Transifex 7. add this build on stg.fedoraproject.org (puppet syncStatic.sh.stg) 8. The release day * Prepare the puppet commit to remove the redirect to /get-prerelease Edit: modules/fedora-web/files/redirects.conf * Merge the branch fXX-Alpha on master and tag it $ git checkout master $ git merge fXX-Alpha $ git tag -a FXX-Alpha -m 'Releasing Fedora XX Alpha' * Delete the file ./fedoraproject.org/PO_FREEZE if exists on master * At the right time, push it then follow "Fire in the hole" bellow For Beta 0. create the fXX-Beta branch from master 1. add countdown banners. Could use the tools/get_counter.sh script. 2. update the global variables (curr_state to 'Beta') 3. test and check all links in get-fedora.html, get-prerelease.html, verify.html 3.1 Ensure href's are consistent with actual filenames of mirrored content You should be able to find the paths in /pub on bapp01 (sudo su - mirrormanager first) 3.2 need link to rel-eng SOP here (RFE, doesn't exist yet) 4. modify: 4.1 data/content/index.html (define the release date) 4.2 static/js/release-counter* (update dates/times, languages) 5. remove: static/checksums/Fedora-XX-Alpha* 6. add new checksums 7. add this build on stg.fedoraproject.org (puppet syncStatic.sh.stg) 8. The release day * Merge the branch fXX-Beta on master and tag it $ git checkout master $ git merge fXX-Beta $ git tag -a FXX-Beta -m 'Releasing Fedora XX Beta' * Delete the file ./fedoraproject.org/PO_FREEZE if exists on master * At the right time, push it then follow "Fire in the hole" bellow For GA 0. Prepare the new branch * disable POs pulling on master: `touch ./fedoraproject.org/PO_FREEZE` commit this * `make pullpos` and commit the POs to the repo * create the fXX branch from master * delete ./fedoraproject.org/PO_FREEZE on that branch (revert previous commit) * update the global variables (curr_state to '' and update iso_size) * push your commits in both branches (master an fXX). Don't forget that before overriding the POT in transifex as we use the same resource for both branches. 1. add the newsbar in fedoraproject.org/data/content/index See https://fedoraproject.org/wiki/Websites/workflow/checklist#News 2. add the release banner in static/images/banners/ (see https://fedoraproject.org/wiki/F17_Artwork/Submissions/Banners) 3. update the static/checksums/ (and remove static/checksums/Fedora-XX-Beta*) 4. update the POT for the translators (once the slideshow content is updated). make pot && make pushpot 5. add this build on stg.fedoraproject.org (puppet syncStatic.sh.stg) 6. The release day * Merge the branch fXX on master and tag it $ git checkout master $ git merge fXX $ git tag -a FXX -m 'Releasing Fedora XX' * Check that ./fedoraproject.org/PO_FREEZE does not exist on master * At the right time, push it then follow "Fire in the hole" bellow Fire in the hole After 9:15 AM EDT release day, push the puppet changes (e.g.: cd ~/puppet && git push). This timing ensures that the cron jobs will not automatically push the new website before 10:00 AM. Then, on puppet1 run: on lockbox01: 'sudo func-command --host=proxy\* --host=bapp01\* '/usr/local/bin/run-puppet nowait' On bapp1, run: # Once /usr/local/bin/syncStatic on bapp1 is updated with your changes, run sudo -u apache /usr/local/bin/syncStatic This takes about 15 minutes, so try to do this well before you need to push the final site out. Finally, when releng gives the OK, run the following on the proxies to make the site live: # To sync the changes out, you can use func from puppet1 if you have sudo on puppet1. # Otherwise, SSH to the proxies and call the below command. sudo /usr/bin/rsync -a --no-owner --no-group bapp01::fedoraproject.org/* /srv/web/fedoraproject.org/ # you probably want to do the other sites too sudo func-command --host=proxy\* "/usr/bin/rsync -a --no-owner --no-group bapp1.vpn.fedoraproject.org::spins.fedoraproject.org/* /srv/web/spins.fedoraproject.org/" sudo func-command --host=proxy\* "/usr/bin/rsync -a --no-owner --no-group bapp1.vpn.fedoraproject.org::start.fedoraproject.org/* /srv/web/start.fedoraproject.org/" Push commit to redirect get-prerelease to get-fedora. If you have sudo on puppet1, run: sudo func-command --host=proxy\* "/usr/bin/rsync -a --no-owner --no-group bapp1.vpn.fedoraproject.org::fedoraproject.org/* /srv/web/fedoraproject.org/" Otherwise, manually run this on each proxy server: $ sudo /usr/bin/rsync -a --no-owner --no-group bapp1.vpn.fedoraproject.org::fedoraproject.org/* /srv/web/fedoraproject.org/ If necessary, clear proxy caches using $ rm -rf /srv/cache/mod_cache/* Update the static banner on start.fedoraproject.org. The procedure is the same as with fedoraproject.org, except that the command to run on the proxies is $ sudo /usr/bin/rsync -a --no-owner --no-group bapp1.vpn.fedoraproject.org::start.fedoraproject.org/* /srv/web/start.fedoraproject.org/ Tips Creating Branches Alpha $git push origin master:refs/heads/f13-alpha Beta $git push origin f13-alpha:refs/heads/f13-beta Checking Out Branch $git checkout -t origin/f13-alpha OR $git checkout -t -b f13-alpha origin/f13-alpha Merging branches Suggested by Ricky $ git merge f13-beta $ git checkout --theirs f13-beta [list of conflicting po files] $ git commit alpha/beta banners (static/js/banner.js) [ "https://fedoraproject.org/static/images/banners/f13alpha.png", "Fedora 13 Alpha", "https://fedoraproject.org/get-prerelease", 5 ],