blob: 62cc776b720d743f1c3a5eed0d3f179633ec2015 [file] [log] [blame]
Instructions for mod_perl 1.x Release Manager
0. make sure your public key is in the KEYS file in the mod_perl docs.
you should only need to do this if this is your first time playing
Release Manager
$ cd mod_perl-docs
$ grep $USER src/dist/KEYS
note that the KEYS file itself contains all the instructions you
need on how to add your key. if you need further help on gpg
(like how to create a key in the first place) you can look here
http://people.apache.org/~geoff/gpghowto.html
Copy the KEYS file into place:
% scp KEYS perl.apache.org:/www/www.apache.org/dist/perl/KEYS
If this is your first release, ask someone with APML karma on PAUSE
to verify you have the appropriate permissions. Likely someone on
the PMC can do this.
a. login into https://pause.perl.org
b. menu click: Select Mailinglist/Action
c. choose APML and share_perms and click go
d. click 3.1 Make somebody else co-maintainer
e. choose the modules to give the perms to
type the username of the new co-maintainer
f. if you happen to know that packages were added this release,
make sure you give the correct permissions to them.
1. 'make dist' - to make sure nothing is missing from the manifest,
etc. Now test this generated package mod_perl-1.31-dev.tar.gz (not
the current build) with as many
configurations as possible on as many platforms as possible,
unpacking the package each time afresh.
a. edit ./Changes
- change -dev to -rc\d+ starting with -rc1
b. nuke any preinstalled mod_perl libs and run 'make test'
c. test that you can 'make install' and then run 'make test' again
e. build and test as root. double check that you have started from a
fresh source, without having any stale dirs from the previous
build laying around.
2. once confident that the package is good, upload a release candidate
to people.apache.org/~username and post 24 hour-ish candidate alert
to the modperl/dev list (may be longer to give most people a chance
to catch up). no need to tag this package
Subject: [RELEASE CANDIDATE]: mod_perl-1.31 RC\d+
2a. if problems are detected during stage 2, repeat stages 1 and 2.
3. when the package has been reported to be good, prepare a new
package to be released
a. edit ./Changes:
- remove -rc\d+
- add release date
b. rerun:
% perl Makefile.PL
make sure tag looks right
% make -n tag
c. commit Changes README Makefile.PL
% svn ci Changes README Makefile.PL
d. tag
% make tag
e. create the final package
% make dist
f. test the final package again at least once
4. Release the package and update links (e.g. mod_perl-1.31.tar.gz)
a. upload to perl.apache.org:/www/perl.apache.org/dist/
% scp mod_perl-1.31.tar.gz perl.apache.org:/www/perl.apache.org/dist/
b. ssh to perl.apache.org, unpack the package, update symlinks to the
tar ball and unpacked distro:
% ssh perl.apache.org
% cd /www/perl.apache.org/dist/
% ln -sf mod_perl-1.31.tar.gz mod_perl-1.1-current.tar.gz
% tar -xzvf mod_perl-1.31.tar.gz
% rm /www/perl.apache.org/dist/mod_perl-1.1-current
% ln -sf mod_perl-1.31 mod_perl-1.1-current
c. archive older releases (keep current + one prior release)
% mv /www/perl.apache.org/dist/mod_perl-1.29.tar.gz \
/www/perl.apache.org/dist/old
% mv /www/perl.apache.org/dist/mod_perl-1.30.tar.gz.asc \
/www/perl.apache.org/dist/old
% rm -rf /www/perl.apache.org/dist/mod_perl-1.29
d. update the version and release date
modperl-docs/src/download/index_top.html and commit. It'll be
automatically updated within 6 hours. Alternatively you can do a
manual update by logging into perl.apache.org and running:
% /home/perlwww/apache.org/modperl-docs/bin/site_build
e. update our projects.apache.org doap file with the new release
version and date
% vi modperl-docs/doap_Perl.rdf
5. Upload the package to CPAN
6. Tarball signing
(depending on whether you use GPG or PGP, pick the first or the
second set of the commands):
a. sign your local copy of the tarball:
% gpg --detach-sign --armor mod_perl-1.31.tar.gz
% pgps -b --armor mod_perl-1.31.tar.gz
b. upload the generated sig file to perl.apache.org:
% scp mod_perl-1.31.tar.gz.asc perl.apache.org:/www/perl.apache.org/dist/
% ssh perl.apache.org
% cd /www/perl.apache.org/dist/
% chmod 0664 mod_perl-1.31.tar.gz.asc
% ln -sf mod_perl-1.31.tar.gz.asc mod_perl-1.1-current.tar.gz.asc
c. ask one of the other developers to double check the signature file
and tarball: download both files and verify the signature:
http://perl.apache.org/dist/mod_perl-1.31.tar.gz.asc
http://perl.apache.org/dist/mod_perl-1.31.tar.gz
% gpg --verify mod_perl-1.31.tar.gz.asc
% pgpv mod_perl-1.31.tar.gz.asc
d. make sure that the files you just created are group rw so
all the dist admins can make changes:
% find /www/perl.apache.org/dist/ -user $USER -type f -exec chmod 0664 {} \;
% find /www/perl.apache.org/dist/ -user $USER -type d -exec chmod 0775 {} \;
7. Distribute to perl.apache.org/dist/perl
and archive the old package under /www/archive.apache.org/dist/perl/
a. unpack the package, update symlinks to the tarball and unpacked distro:
% cd /www/www.apache.org/dist/perl/
% cp /www/perl.apache.org/dist/mod_perl-1.31.tar.gz* .
% tar -xzvf mod_perl-1.31.tar.gz
% mv mod_perl-1.29.tar.gz* /www/archive.apache.org/dist/perl/
% rm -rf mod_perl-1.29
b. make sure that the files you just created are group rw so
all the dist admins can make changes:
% find /www/www.apache.org/dist/ -user $USER -type f -exec chmod 0664 {} \;
% find /www/www.apache.org/dist/ -user $USER -type d -exec chmod 0775 {} \;
8. Announce the package
a. post ... to the modperl, announce lists
Note, to post to announce@, you must be sending from an apache.org address.
Subject: [ANNOUNCE] mod_perl 1.31
include
- link at perl.apache.org:
http://apache.org/dist/perl/mod_perl-1.31.tar.gz
http://apache.org/dist/perl/mod_perl-1.31.tar.gz.asc (pgp sig)
- MD5 sig (as it comes from CPAN upload announce).
- the latest Changes
9. Prepare for the next cycle
a. increment version in lib/mod_perl.pm
b. edit ./Changes:
- start a new item with incremented version + '-dev'
=item 1.32-dev
c. add a release entry in STATUS
d. update this file versions to make it easy to copy-n-paste things
on the next release:
$ perl -pi -e 's/1\.(\d+)/join(".", 1, $1+1)/eg' RELEASE
e. commit the changed files
% svn ci -m "start 1.32-dev cycle" Changes lib/mod_perl.pm \
STATUS RELEASE
10. Old Versions
Remind other Developers to delete versions older then the prior release
from CPAN. Old releases can always be found on BackPan.