Hi,

I was trying to come up with a description of what it
would take to make a repository really trustworthy.  

As I was writing it I thought...didn't I see something
like this on the Maven site.

So here I am.

Anyways, I wrote the description in a cookbook format.

If this matches a subset of what archiva does, then we
could use the description in the archiva documents
perhaps.

If there are differences I would be really interested
in what they are.

I'll be glad to incorporate them into the description
and resubmit, if someone has time to review the info.

Here it is (Thanks):

Challenge

     Ensuring that versioning 
     happens on maven repository artifacts,
     along with signature checking on repository
     provided dependencies.

Solution

     See discussion
     
Discussion

     Developers need to be assured
     that the versions they have in their
     local repository are not 
     updated WITHOUT a corresponding
     version revision.
     
     For example suppose 
     someone wants to try out
     ApacheDS, and they also want to build
     it themselves.  Suppose that ApacheDS
     has the following dependency:
     
     <dependency>
        <artifactId>SuperImportantArtifact</artifactId>
        <version>SuperImportantArtifact</version>
        <scope>compile</scope>
     </dependency>          
     
     Suppose the provider of SuperImportantArtifact
     makes a few changes and uploads the changes
     to ibiblio, however the provider forgets to 
     change the version correspondingly.
     
     Next someone checks out the ApacheDS build
     and builds it.
     
     Maven downloads the dependencies it needs
     from Ibiblio, including SuperImportantArtifact.
     
     However the developer is getting build errors.
     
     We know why in this case.
     
     How do we insure that this case does not happen.
     
Proposal

 * Artifact Download Concern
 
     Have the repository deployer calculate a checksum
     for artifacts and write the checksum to
repository meta
     data.  When maven deploys and artifact, have it
write the 
     checksums into the pom artifact for all the
dependencies,
     and rewrite it's own pom with these checksums
built in.
     
     So now if someone checks out the build from
subversion..say..
     the pom is checksum aware, and can validate the
corresponding
     checksum using repository meta data for
dependencies that it 
     downloads. 
          
 * Artifact Upload Concern    
     
     Create a Maven Repository Server that performs
     revision checking.  If someone tries to upload
     an artifact without changing the version
(overwriting
     and existing artifact), the server complains and
sends
     the complaint back to maven.  Maven then just
logs
     it to the console.
     
     This ensures that an artifact does not get 
     overwritten without changing the version.

 * Summary
 
     I think with the above two concerns address the
process
     should be fairly tight.  We have a unique
signature on 
     dependencies, so we match this up with the
signature on the
     repository before the dependency is downloaded. 
If the signatures
     don't match, we cancel the build.
     
     We also check the upload to make sure that
version revision happens.





 
____________________________________________________________________________________
Any questions? Get answers on any topic at www.Answers.yahoo.com.  Try it now.

Reply via email to