Fedora Websites Release SOP

From FedoraProject

(Difference between revisions)
Jump to: navigation, search
(Creating Branches)
(redirect page to new infra-docs)
 
(One intermediate revision by one user not shown)
Line 1: Line 1:
 
{{header|websites}}
 
{{header|websites}}
 +
This SOP has moved to the fedora Infrastructure SOP git repo. Please see the current document at: http://infrastructure.fedoraproject.org/infra/docs/fedorawebsites.txt
  
== Preparing the website for a release ==
+
For changes, questions or comments, please contact anyone in the Fedora Infrastructure team.
  
=== Update gpg key ===
 
  
As the release approaches, watch the <code>fedora-release</code> package for a new key to be added.  Use the <code>update-gpg-keys</code> script in the fedora-web git repository to add it to <code>static/</code>.  Manually add it to <code>/keys</code> and <code>/verify</code>.
 
 
==== Steps ====
 
Get a copy of the new key from the fedora-release repo
 
* Currently at http://cvs.fedoraproject.org/viewvc/fedora-release/?root=fedora).
 
 
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:
 
<pre>
 
[fedora-web (f13-keys)]$ cd fedoraproject.org/
 
[fedoraproject.org (f13-keys)]$ ./update-gpg-keys ../../fedora-release/RPM-GPG-KEY-fedora-13-primary
 
</pre>
 
 
This will add the key 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, update data/content/verify.html to add the new key.  The output of <code>'gpg --fingerprint --list-key E8E40FDE'</code> is what we want in the &lt;pre&gt; block.
 
Move any obsolete keys to the obsolete keys section.
 
 
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 LINGUAS and languages.conf file ===
 
 
Let's clean our directories and update the po files in the fedora-web git repository
 
<pre>
 
$ make clean all
 
</pre>
 
 
Checks file listing vs what's in LINGUAS (left side is the correct one)
 
*The ones that only have a " <" on the right side are the ones that are needed
 
 
<pre>
 
$ diff --side-by-side -B <(ls -1 *.po | sed -n "s/.po//p" | sort) <(cat LINGUAS)
 
</pre>
 
 
Double check everything matches
 
<pre>
 
$ ls *.po | wc -l ; wc -l LINGUAS
 
 
$ make httpd/conf/languages.conf
 
$ sed -i "s:@DOCUMENTROOT@:/srv/web/start.fedoraproject.org:g" languages.conf.in
 
</pre>
 
 
Commit changes
 
<pre>
 
$ git commit -a
 
</pre>
 
 
In /data/content/get-prerelease.html, from Alpha -> Beta
 
<pre>
 
$ sed -i s/-Alpha-/-Beta/g <filename>
 
</pre>
 
 
Note, you could use the script bellow in order to update the LINGUAS file. It adds the language code where the translation has started.
 
<pre>
 
#!/bin/sh
 
# Auto fill the LINGUAS file
 
# Please mind that this won't update the server side.
 
# It will print the new languages found for you to add them in the infra side.
 
 
LINGUAS="LINGUAS"
 
tmp="l_tmp"
 
 
for file in `ls *.po`
 
do
 
  stat=`msgfmt -c --statistics $file 2>&1 | awk '{print $1}'`  # how far it is translated?
 
  if [ "$stat" != "0" ]                    # if translation is started
 
  then
 
    lang=`echo $file| sed -n "s/.po//p" `  # filer the language code
 
    echo $lang >> $tmp                      # add it in a temp file
 
    sed -i 's#\s##g' $LINGUAS              # remove trailing whitespaces
 
    new=`grep $lang"\$" $LINGUAS`
 
    if [ "@$new" == "@" ]                  # if this language code is new
 
    then
 
      echo "$lang added, translated strings=$stat"
 
    fi
 
  fi
 
done
 
 
rm $LINGUAS
 
cat $tmp|sort > $LINGUAS
 
rm $tmp
 
</pre>
 
 
=== Prepare puppet commits ===
 
 
Prior to release day, prepare puppet commits to move the fedora-web branch to the release (alpha, beta, final, whatever)
 
 
* Update branch
 
** Edit: modules/fedora-web/files/syncStatic.sh
 
 
* Redirect /get-prerelease
 
** Edit: modules/fedora-web/files/redirects.conf
 
 
 
== Update website ==
 
=== For Alpha ===
 
# add Alpha banner
 
# add "Someone say Alpha" note
 
# update links alpha links in get-prerelease.html
 
## 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)
 
## '''need link to rel-eng SOP here''' (RFE, doesn't exist yet)
 
# modify:
 
## data/content/get-fedora.html (add alpha note)
 
## data/content/get-prerelease.html (update links)
 
## static/js/banner.js (alpha banner)
 
 
=== For Beta ===
 
# add countdown banner
 
# update links beta links in get-prerelease.html
 
## 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)
 
## '''need link to rel-eng SOP here''' (RFE, doesn't exist yet)
 
# modify:
 
## data/content/counter.html (add languages)
 
## data/templates/js.html (add release counter and hide banner.js
 
## static/js/release-counter* (update dates/times, languages)
 
## data/content/index.htlm (release date)
 
## data/content/get-prerelease.html (update links)
 
## data/templates/sidebar (add non-js version of countdown)
 
 
=== For GA ===
 
Merge beta onto master branch
 
<pre>
 
$ git checkout master
 
$ git merge f13-beta
 
</pre>
 
 
Manually edit the .pot files that are listed as conflicts
 
 
Manually go to each site and 'make all test'
 
 
On GA release day, tag repo F<release-number>.
 
 
Update banner.js to reflect new banner (See file: /static/js/banners.js)
 
 
Change /data/content/get-fedora.html from Alpha -> Beta
 
* Note: if you're looking for paths, you should be able to find the paths in /pub on bapp01 (sudo su - mirrormanager first)
 
Add alpha/beta banner image (see design team)
 
 
== Fire in the hole ==
 
 
After 9:15 AM EDT release day, push the puppet changes (e.g.: <code>cd ~/puppet
 
&& git push</code>).  This timing ensures that the cron jobs will not
 
automatically push the new website before 10:00 AM.  Then, on
 
<code>puppet1</code> run:
 
 
<pre>
 
# Ensure you have the puppet repo checked out to ~/puppet and up to date
 
cd ~/puppet && make HOSTS="bapp1 proxy1 proxy2 proxy3 proxy4 proxy5 proxy6 proxy7" push
 
</pre>
 
 
On bapp1, run:
 
<pre>
 
# Once /usr/local/bin/syncStatic on bapp1 is updated with your changes, run
 
sudo -u apache /usr/local/bin/syncStatic
 
</pre>
 
 
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:
 
 
<pre>
 
# 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 proxy\* call command run "/usr/bin/rsync -a --no-owner --no-group bapp1.vpn.fedoraproject.org::spins.fedoraproject.org/* /srv/web/spins.fedoraproject.org/"
 
sudo func proxy\* call command run "/usr/bin/rsync -a --no-owner --no-group bapp1.vpn.fedoraproject.org::start.fedoraproject.org/* /srv/web/start.fedoraproject.org/"
 
</pre>
 
 
Push commit to redirect get-prerelease to get-fedora.  If you have sudo on puppet1, run:
 
 
$ sudo func proxy\* call command run "/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
 
<pre>
 
$git push origin master:refs/heads/f13-alpha
 
</pre>
 
 
Beta
 
<pre>
 
$git push origin f13-alpha:refs/heads/f13-beta
 
</pre>
 
 
 
==== Update transifex.net ====
 
If you need to provide specific translations for this newly created branch (GA time for example), you need to do the following:
 
<pre>
 
cd fedoraproject.org/
 
make pullpos      # save pos (it is a slow process)
 
</pre>
 
After <code>make pullpos</code> you could also provide new pot using <code>make pot</code>.
 
Edit the following file
 
vi .tx/config
 
 
in order to matche the resource name. You could check existing ones at [https://www.transifex.net/projects/p/fedora-web/|transifex.net] Example:
 
* [fedora-web.fedoraproject-org-master]
 
* [fedora-web.fedoraproject-org-f16-beta]
 
 
Then, push POT and translations (as translators won't like to do it by themselve:
 
tx push -s -t
 
This will create the transifex resource if not existing yet.
 
 
=== Checking Out Branch ===
 
<pre>
 
$git checkout -t origin/f13-alpha
 
OR
 
$git checkout -t -b f13-alpha origin/f13-alpha
 
</pre>
 
 
=== Merging branches ===
 
Suggested by Ricky
 
<pre>
 
$ git merge f13-beta
 
$ git checkout --theirs f13-beta [list of conflicting po files]
 
$ git commit
 
</pre>
 
 
=== non-js counter ===
 
<pre>
 
  <?python
 
  from datetime import datetime
 
 
  today = datetime.utcnow()
 
  release = datetime(2010, 5, 18, 14)
 
 
  difference = release - today
 
  days = difference.days
 
  if difference.seconds > 0 or difference.minutes > 0 or difference.hours > 0: days += 1
 
  if days < 0: days = 0
 
  days = str(days)
 
 
  image_lang = 'en'
 
  available_languages = ('ar', 'bn_IN', 'cs', 'da', 'de', 'el', 'en', 'es', 'fi', 'fr', 'gu', 'he', 'hi', 'hr', 'hu', 'id', 'is', 'it', 'ja', 'kn', 'ko', 'ks', 'ml', 'nl', 'pa', 'pl', 'pt', 'pt_BR', 'ro', 'ru', 'si', 'sr', 'sv', 'th', 'tr', 'uk', 'zh_CN', 'zh_TW')
 
  if lang in available_languages:
 
      image_lang = lang
 
  image = image_lang + '/fedora13-countdown-banner-' + days + '.' + image_lang + '.png'
 
  ?>
 
<div id="banner">
 
<a href="http://fedoraproject.org/wiki/Releases/13/Schedule"><img src="${Markup(_('%s/static/images/counter/%s') % (path, image))}" alt="${Markup(_('Fedora 13 Goddard released in %s days!') % days)}" /></a>
 
<a style="text-decoration: none; font-size: 1.6ex; color: #99AABB;" href="${path}/${lang}/counter">${Markup(_('Add a counter to your own site!'))}</a>
 
</div>
 
</pre>
 
 
=== alpha/beta banners (static/js/banner.js) ===
 
<pre>
 
  [
 
    "https://fedoraproject.org/static/images/banners/f13alpha.png",
 
    "Fedora 13 Alpha",
 
    "https://fedoraproject.org/get-prerelease",
 
    5
 
  ],
 
</pre>
 
 
=== commit message example ===
 
<pre>
 
adding f13 countdown banner
 
- added languages to counter.html
 
- remove banner.js / add release counter to js.html
 
- add non-js banner to sidebar.html
 
- updated release dates in release-count-ext.js and release-counter.js
 
- removed older counter images
 
- added new counter images
 
 
adding new language for fp.o
 
- Persian (fa)
 
- Portuguese (Brazilian) (pt_BR)
 
- Russian (ru)
 
</pre>
 
 
[[Category:Websites]]
 
 
[[Category:Infrastructure SOPs]]
 
[[Category:Infrastructure SOPs]]

Latest revision as of 18:08, 19 December 2011

Artwork DesignService fedorawebsitesbanner 3.png

This SOP has moved to the fedora Infrastructure SOP git repo. Please see the current document at: http://infrastructure.fedoraproject.org/infra/docs/fedorawebsites.txt

For changes, questions or comments, please contact anyone in the Fedora Infrastructure team.