Overview
(with thanks to Zoe Slattery)
Release notes summary (to tidy up)
Prereqs
~~~~~~~
GPG keys
- create key
- KEYS
- isis trunk
- foaf
- id.apache.org
- Signing party
- create subkey
gpg --edit-key xxxxxxxx
gpg> addkey
Key is protected.
enter your secret passphrase
You need a passphrase to unlock the secret key for
user: "Dan Haywood (CODE SIGNING KEY) <danhaywood@apache.org>"
4096-bit RSA key, ID xxxxxxxx, created 2011-02-01
Please select what kind of key you want:
(3) DSA (sign only)
(4) RSA (sign only)
(5) Elgamal (encrypt only)
(6) RSA (encrypt only)
Your selection? 4
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048) 4096
Requested keysize is 4096 bits
Please specify how long the key should be valid.
0 = key does not expire
<n> = key expires in n days
<n>w = key expires in n weeks
<n>m = key expires in n months
<n>y = key expires in n years
Key is valid for? (0) 1y
Key expires at xx/xx/xx xx:xx:xx
Is this correct? (y/N) y
Really create? (y/N) y
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
...+++++
.+++++
pub 4096R/xxxxxxxx created: yyyy-mm-dd expires: never usage: SC
trust: ultimate validity: ultimate
sub 4096R/xxxxxxxx created: yyyy-mm-dd expires: never usage: E
sub 4096R/xxxxxxxx created: yyyy-mm-dd expires: yyYY-mm-dd usage: S
ultimate (1). Dan Haywood (CODE SIGNING KEY) <danhaywood@apache.org>
gpg>
- mvn settings
- edit settings.xml with passphrase.
~~~~~~~~~~~~~~~~~
JIRA
Changes.txt
mvn license:download-licenses
- target/generated-resources/licenses.xml
- checklicenses.groovy
- update src/main/appended-resources/supplemental-dataModels.xml
RAT tool
Release Practice
~~~~~~~~~~~~~~~~
svn mkdir https://svn.apache.org/repos/asf/incubator/isis/branches/release-practice3 -m "branching in order to practice release process"
svn copy https://svn.apache.org/repos/asf/incubator/isis/trunk https://svn.apache.org/repos/asf/incubator/isis/branches/release-practice3/trunk -m "branching in order to practice release process"
cd .../trunk # your local workspace for isis/trunk
cd ..
mkdir branches/release-practice3
cp -R trunk branches/release-practice3/trunk
cd branches/release-practice3/trunk
svn switch https://svn.apache.org/repos/asf/incubator/isis/branches/release-practice3/trunk
edit pom.xml, change 'trunk' -> 'branches/release-practice3/trunk'
- scm/connection
- scm/developerConnection
- scm/url
and commit pom.xml
mvn release:clean release:prepare -P apache-release -D dryRun=true
- suggest specify version as 0.x.x-RCn-incubating
Release Proper
~~~~~~~~~~~~~~
mvn release:clean release:prepare -P apache-release -D skipTests=true
- suggest specify version as 0.x.x-RCn-incubating
(and then do the whole process over once vote is in)
Deploy for voting
~~~~~~~~~~~~~~
yada yada
Earlier notes made while at Knockree
Release notes
1. discovered that the mvn release:prepare will fail if try to run on cygwin in Windows
- so don't do this! use CMD.EXE on Windows, or regular shell on Ubuntu/Mac.
2. need to verify all licenses. After a bit of experimentation, found the following worked: - mvn license:download-licenses
- generates target/generated-resources/licenses.xml for every module
- indicates the license (taken from the dependencies' pom)
- groovy checkmissinglicenses.groovy
- parses the output and lists those dependencies
3. updated .../trunk/src/main/appended-resources/supplemental-models.xml
- parses the output and lists those dependencies
- which has licenses for almost all of those dependencies where the license info is missing
- for the remainder, have manually created some xxx.LICENSE.txt files in appended-resources
4. have added maven-remote-resources-plugin
- which will process the above licenses and generate
- also references the apache-incubator-disclaimer-resource-bundle, needed for incubator projects
TODO: need to figure out how to add the xxx.LICENSE.txt files. Think the easiest might be to add our own custom resource bundle and use to generate.
1. suggestion made was to manually create a branch and experiment with what the mvn release does. So...
2. svn mkdir https://svn.apache.org/repos/asf/incubator/isis/branches/release-practice -m "yada yada"
3. svn copy https://svn.apache.org/repos/asf/incubator/isis/trunk https://svn.apache.org/repos/asf/incubator/isis/branches/release-practice/trunk
4. in workspace, cp -R the trunk to a new dir, and svn switch
5. recommendation from Zoe Slattery:
- updated parent pom's <scm>/<url> to reflect this dir.
Do a dry run
5. mvn -Papache-release release:prepare -DdryRun=true
Running the RAT Tool (from Nour)
Here's how I used RAT 1:
1. mvn clean eclipse:clean
This step to move any files which are not part of source code and
any binary file as a result of a build.
2. I checked out the source code of RAT tool and built a JAR.
3- I have an updated source code working copy of Isis trunk.
4- java -jar apache-rat-0.8-SNAPSHOT.jar ./
Out of that command I got the attached RAT report.
I could interpret the information there by comparing it with a report
I generated for Apache OpenEJB 2, but I still need someone to have a
look at it more specifically for files IDK what they are used for, for
example the *.hsp files and like.
But as a general note, I believe we need to add ASL header for each
and every file which going to be included in our source tar-ball and
which is not generated as generated files don't need to have that
header, if we can add it thats better but if not then no problem.
Releases "Proper"
There's an official write-up of the process for publishing maven artifacts at http://www.apache.org/dev/publishing-maven-artifacts.html.
There's also a fantastic write-up (so Mark tells us) about how to release using the stuff inherited from org.apache:apache-parent:7 (as we do). It was put together by Donald Woods, and can be found at http://incubator.apache.org/bval/cwiki/release-process.html
Nour's notes
I found these resources as start to get a hands on experience about
Apache release process.
General release process rules:
--------------------------------------------
1- http://www.apache.org/dev/release-publishing.html
2- http://www.apache.org/dev/release.html
Podling release management:
-------------------------------------------
1- http://incubator.apache.org/incubation/Incubation_Policy.html#Releases
2- http://incubator.apache.org/guides/releasemanagement.html