It seems that many circumstances are converging at the same time to show
that we need to make the next step and use active repository management
on the Apache repository. The increased pace of releases lately is
showing the flaws in the current system and it's not even possible to
deploy a release right now on p.a.o[1]. That's only a temporary issue,
but more noticeable is that we require all releases be staged and using
the maven-staging-plugin has always been a stop gap measure. It's slow
and inconvenient to use and often breaks down in the middle of a release
due to uncorrected permissions on the file system from a previous
release, or simply from transport errors due to the large amount of data
pulled down and pushed back up. 

 

I'm proposing that we use Nexus Pro to manage the repository because of
the staging support. The staging and promotion suite of Nexus allows you
to stage release artifacts before they go live in a release repository.
A single URL for all projects is all you need in your
distributionManagement and Nexus can sort out where they go based on
profiles you define. These profiles allow you to control which artifacts
get staged together, who gets notified, who can see them, etc. These
staged artifacts go into a temporary repository that is created on the
fly when you deploy. This repository is then used for testing and
subsequently dropped or promoted in a single transaction to your release
repository. We've been using this for the Nexus OSS releases for a few
months and it saves us tons of time when we stage / test / restage
releases, and completely eliminates the manual artifact and metadata
manipulation previously required. This will also make it much easier to
stage dependent releases together into a single repository. You can read
more details about staging here[2]

 

Besides the staging support, having an repository manager will provide
us additional benefits:

 We won't have to deal with people forgetting to reset the permissions.

 The metadata will always be corrected, even from non-maven native
projects.

 The snapshot repository will be actively managed to reduce overall disk
use creep that requires drastic measures like dumping the whole thing.

 The plugin API will allow us to evolve and tailor the system to meet
future Apache processes and requirements (such as enforcing valid
signatures, licensing requirements, packaging requirements, etc).

 

There are other MRMs out there (including one here at Apache), but none
of them support the staging process the we need right now.  Nexus also
requires the least overhead in terms of resources and external
dependencies (none). Using the new LDAP setup being piloted at ASF Infra
will make it finally possible to tie all the correct user accounts
together for committers. Sonatype is making free Nexus Pro licenses
available to OSS projects and naturally Apache qualifies. This is
similar to the existing Jira and Confluence installations being used by
Apache projects via a free OSS license from Atlassian[4],[5]

 

The Apache repository is an organization-wide resource used for all
Apache releases that then get synced to Central. I'm proposing it here
as the Maven team is in the best position to get it setup and worked out
before rolling it out to the rest of the organization, but there's no
doubt that this will be useful to all Apache projects built with Maven.

 

In the interest of full disclosure, I work at Sonatype and manage the
engineering team that produces Nexus. We will support and manage the
installation as required.

 

[1] https://issues.apache.org/jira/browse/INFRA-1886

[2] http://books.sonatype.com/nexus-book/reference/staging.html

[3] http://nexus.sonatype.org

[4] http://www.atlassian.com

[5] https://issues.apache.org

 

Discussion?

 

----------------------

Brian Fox

Apache Maven PMC

http://blogs.sonatype.com/brian/

 

 

 

----------------------

Brian Fox

Apache Maven PMC

http://blogs.sonatype.com/brian/

 

Reply via email to