Apache™ FOP Development: Release Process
Introduction
This page documents the process of creating a Apache™ FOP release. FOP releases are coordinated by some designated member of the team. The purpose of documenting it here is to facilitate consistency, ensure that the process is captured, and to allow others to comment on the process.
The checklist below is based on a combination of input from from Christian Geisert and Simon Pepping.
1. Define the new release
-
Determine which open bugs must be solved before a release can take place (release critical bugs). Make this bug depend on each release critical bug and write a short argument why the bug is release critical.
-
Determine whether this is a Release Candidate or a Release.
-
Determine whether further testing is required.
-
Commit any outstanding changes
2. Prepare the new release
-
Create a branch called
fop-v_vv
-
Edit release notes (
README
in the root). -
Check and update the copyright year in NOTICE and build.xml.
-
Update version number in
build.xml
,releasedist.xml
and allpom.xml
(not to be merged back into main). -
Update dependancy versions in
pom.xml
to release versions. -
Commit and push changes
-
Build the dist files (
ant -f releasedist.xml release-dist
) and upload them to your web directory ongithub.io
-
Compare with last release zips for files added and missing
3. Publish the new release
- Upload the dist and signature files to your web directory on github.io
4. Vote for the new release
-
Start a vote for the release on
general@xmlgraphics.apache.org
. The message should point to the release files. The vote should remain open for 7 days. -
When the release is accepted, copy the release files, their checksum files and the signature files to svn repo
https://dist.apache.org/repos/dist/release/xmlgraphics/fop/
in the subdirectoriessource
andbinaries
. Remove old release files.
5. Update material
5.1 Git
-
Merge the changes of the git release branch back into main (not the version number in the build files).
-
Tag the source tree with the release ID.
5.2 Jira
- Ask an FOP Jira admin to
- rename main entry into the new release name,
- and create a new main entry
5.3 Website
-
Clone repo https://gitbox.apache.org/repos/asf/xmlgraphics-website.git
-
Copy xmlgraphics-website/content/fop/trunk directory to a new directory with the new version number.
-
Compare last version directory with new version directory, and update as needed.
-
Look at old commits to see other changes needed outside this directory.
-
Commit and push
5.4 Maven
-
Run: mvn clean install javadoc:jar source:jar repository:bundle-create -B -DskipTests
-
Copy the *-bundle.jar files to a new directory
-
Run this command
python signmvn.py:
import os
import shutil
def addasc(bundle, afile):
os.system('jar xf ' + bundle + ' ' + afile)
if os.path.exists(afile):
os.system('gpg --armor --detach-sign --force-v3-sigs --batch --verbose ' + afile)
os.system('jar uf ' + bundle + ' ' + afile + '.asc')
os.remove(afile)
os.remove(afile + '.asc')
for bundle in os.listdir('.'):
if bundle.endswith('bundle.jar'):
addasc(bundle, 'pom.xml')
addasc(bundle, bundle.replace('-bundle', ''))
addasc(bundle, bundle.replace('-bundle', '-javadoc'))
addasc(bundle, bundle.replace('-bundle', '-sources'))
addasc(bundle, bundle.replace('-bundle', '-tests'))
-
Upload to: https://repository.apache.org/#staging-upload check for errors at https://repository.apache.org/#stagingRepositories
-
Setup staging config in ~/.m2/settings.xml, rename ~/.m2/repository
settings.xml:
<settings>
<profiles>
<profile>
<id>myprofile</id>
<repositories>
<repository>
<id>my-repo2</id>
<name>your custom repo</name>
<url>https://repository.apache.org/content/repositories/staging</url>
</repository>
</repositories>
</profile>
</profiles>
<activeProfiles>
<activeProfile>myprofile</activeProfile>
</activeProfiles>
</settings>
- Make a test pom.xml and test pulling artifacts
pom.xml:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany.app</groupId>
<artifactId>my-app</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>my-app</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>org.apache.xmlgraphics</groupId>
<artifactId>fop</artifactId>
<version>2.10</version>
</dependency>
</dependencies>
</project>
- Release artifacts at https://repository.apache.org/#stagingRepositories
6. Announce the new release
Post announcements on following suggested lists:
- fop-dev@xmlgraphics.apache.org
- fop-users@xmlgraphics.apache.org
- general@xmlgraphics.apache.org
- general@xml.apache.org
- announce@apache.org (from your apache.org address)
- xsl-list@lists.mulberrytech.com (subscriber-only)
- xsl-fo@yahoogroups.com (subscriber-only)
- www-xsl-fo@w3.org
- docbook-apps@lists.oasis-open.org (subscriber-only)
- dita-users@yahoogroups.com (subscriber-only) (http://dita-ot.sourceforge.net/)
- http://xslfo-zone.com/news/index.jsp
- http://www.w3.org/Style/XSL/
- http://freshmeat.net/projects/fop/
Resources
The following is a sample of some other project release checklists, which might be consulted for ideas:
Following are links with information about mirroring:
-
Stefan Bodewig's Making your Downloads Mirrorable