directory-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From elecha...@apache.org
Subject svn commit: r1588435 - in /directory/site/trunk/content: apacheds/developer-guide.mdtext api/coding-standards.mdtext api/developer-guide.mdtext
Date Fri, 18 Apr 2014 10:19:40 GMT
Author: elecharny
Date: Fri Apr 18 10:19:39 2014
New Revision: 1588435

URL: http://svn.apache.org/r1588435
Log:
Added teh documentation about how to release teh LDAP API

Added:
    directory/site/trunk/content/api/coding-standards.mdtext
Modified:
    directory/site/trunk/content/apacheds/developer-guide.mdtext
    directory/site/trunk/content/api/developer-guide.mdtext

Modified: directory/site/trunk/content/apacheds/developer-guide.mdtext
URL: http://svn.apache.org/viewvc/directory/site/trunk/content/apacheds/developer-guide.mdtext?rev=1588435&r1=1588434&r2=1588435&view=diff
==============================================================================
--- directory/site/trunk/content/apacheds/developer-guide.mdtext (original)
+++ directory/site/trunk/content/apacheds/developer-guide.mdtext Fri Apr 18 10:19:39 2014
@@ -49,9 +49,9 @@ and an optional label that indicates the
 
 ## Coding standards 
 
-The applicable coding standards for ADS 1.5 are described in [Coding Standards](coding-standards.html)
+The applicable coding standards for ADS 2.0 are described in [Coding Standards](coding-standards.html)
 
-There are some more rules, as we are using **Java 5** now :
+There are some more rules, as we are using **Java 6** now :
 
 * Use generics as much as you can. Generic are a good way to avoid casting, and it enforce
the usage of the correct type.
 * If you can avoid *Iterators*, do so. There is this cool construction with a **for( Type
t:<collection instance> )** : use it !
@@ -208,10 +208,11 @@ Then you can start the maven command :
 
 This creates the site and the Javadocs.
 
-<DIV
+<DIV class="info" markdown="1">
 Now, you have to sign the sources packages which are in <em>apacheds/target/checkout/target</em>.
 
 Use your PGP key ID (the pub key, 4096R/[XXXXXXX] where [XXXXXXX] is the key ID)
+</DIV>
 
 You can get the keys by typing :
 
@@ -432,6 +433,6 @@ You can now update the site, add a news 
 
 After 24h, you can now inform the world about the release.
 
-Send a mail to the users and dev mailing list, and one to the <em>announce@apacge.org</em>
+Send a mail to the users and dev mailing list, and one to the <em>announce@apache.org</em>
 
 You are done !
\ No newline at end of file

Added: directory/site/trunk/content/api/coding-standards.mdtext
URL: http://svn.apache.org/viewvc/directory/site/trunk/content/api/coding-standards.mdtext?rev=1588435&view=auto
==============================================================================
--- directory/site/trunk/content/api/coding-standards.mdtext (added)
+++ directory/site/trunk/content/api/coding-standards.mdtext Fri Apr 18 10:19:39 2014
@@ -0,0 +1,167 @@
+Title: Coding Standards
+Notice: Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+    .
+    http://www.apache.org/licenses/LICENSE-2.0
+    .
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+
+# Coding Standards
+
+Welcome to you, developper ! You have been elected committer on the project, or you want
to contribute some code or some patch? This is great news. However, in order to be able to
share your 'vision' and your code, some rules must be followed.
+
+Hey, remember that those rules are not the best nor the worst, they are pretty much what
they are for historical reasons, or for technical reasons, however, please, accept them as
they are, and avoid religious war (please, oh please, no mail to say "WTF ? You are using
spaces instead of tab ??? How stupid is this rule etc etc.) Rules are **alway*s* stupid, but
smart people follow them ;)
+
+**eclipse IDE**
+
+Eclipse users can import those two files to enfore the code formating : [formatting.xml](http://svn.apache.org/repos/asf/directory/project/trunk/resources/formatting.xml)
and [codetemplates.xml](http://svn.apache.org/repos/asf/directory/project/trunk/resources/codetemplates.xml)
+
+**IDEA IDE**
+
+IDEA users can import [this file](settings.jar) to enfore the code formating.
+
+
+## Headers
+
+First, you **must** (and this rule accept no exception) use this header in top of all source
file, or each file in which you can have comments :
+
+
+	:::java
+	/*
+	 *  Licensed to the Apache Software Foundation (ASF) under one
+	 *  or more contributor license agreements.  See the NOTICE file
+	 *  distributed with this work for additional information
+	 *  regarding copyright ownership.  The ASF licenses this file
+	 *  to you under the Apache License, Version 2.0 (the
+	 *  "License"); you may not use this file except in compliance
+	 *  with the License.  You may obtain a copy of the License at
+	 *
+	 *    http://www.apache.org/licenses/LICENSE-2.0
+	 *
+	 *  Unless required by applicable law or agreed to in writing,
+	 *  software distributed under the License is distributed on an
+	 *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+	 *  KIND, either express or implied.  See the License for the
+	 *  specific language governing permissions and limitations
+	 *  under the License.
+	 *
+	 */
+
+### Class/Interface headers
+
+Each **Class** or *Interface* should have an header which must contains :
+
+* A descrption of this class/interface
+* an *author* tag which should be :
+
+		:::java
+		@author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+
+<DIV class="note" markdown="1">
+Thanks to avoid to put your name. The code is not yours, and much more important, but putting
ypur name and e-mail, you will intimidate other developper ("Oh, no, I won't mess with this
code, it has been developped by XXXX \!") and second, you will receive mail in three years
even if you have stopped all commitment on the project (and those who have sent you an e-mail
will think that the project's memeber are not responsive...)
+</DIV>
+
+If you use **html** tags, remember to escape '<' and '>' characters...
+
+### Static members and other members
+
+Just add a single line javadoc comment like : _/** blah ... */_ before each member
+
+### Methods
+
+Follow the standard **javadoc** rules : Description, **@param**, **@exception** and **@return**.
It should be enough. Avoid **@tags**, **@todo** tags, etc...
+
+Escape **html** characters
+
+## Comments
+
+No special rules, except that you should avoid :
+
+* Useless comments like : i++; /\* Increment i \*/
+* Overusing comments : if you have to heavily comment a peice of code, then this piece of
code might be too complex ...
+* Speading little comments all over a method : if possible, write blocs of comments. The
method header could hgenerally contains a full description of the code, and if it's not the
case, just consider your method might be too long !
+* Dead code commented. If it's dead, then put it in a cuffin. We use SVN, the Ressuscitator
!
+
+Basically, use your common sense :-)
+
+## Naming
+
+Naming ! Sounds like Blaming :-). Ok. We use **Sun(tm/c/r)** style :
+
+* Constants are in UPPER CASE with accepted '_'
+* Class starts with an uppercase and each starting word is upper cased. No '_', please !
+* Methods starts with lower case and then follow the same rule than classes. No '_', please
!
+* Interfaces should not start with an 'I'
+* Classes which implements an Interface must be followed by the postfix 'impl'
+* Variables follow the method naming convention. No '_', please !
+* Use meaningfull names.
+* No double letter variables like ii, jj etc...
+
+If you browse the code, you will see that many classes does not respect those rules. That's
life ! Don't fix it if you don't touch a class. If you are fixing a method in a class, then
you can change the code to respect the rules. Little by little, we may reach a stable state
where all the code respect the rules ;)
+
+Naming is really important for **APIs**. Be smart. If you are not sure, ask.
+
+## Spaces vs tabs
+
+<DIV class="warning" markdown="1">
+**FOUR SPACES, NO TAB. Final.**
+</DIV>
+
+No discussion. Using tabs break diffs. Modify your **IDE** to insert spaces when you use
tabs, before it saves the file.
+
+## Formatting
+
+Use the **formatting.xml** file which can be found in the **resources** directory in the
root of the project. This is for *Eclipse*. If you don't use eclipse, then translate the formating
to your favorite **IDE**.
+
+Use the **codetemplates.xml** file if you are using *Eclipse* too. You will find it at the
same location. It brings you some standard headers for new classes, nex methods, etc.
+
+Use **UTF-8** as a default for your files (except for properties, thanks to **java**, which
should be in **ISO-8859-1**). Forget about exotic encoding...
+
+<DIV class="warning" markdown="1">
+**DO NOT USE AN AUTOMATIC FORMATER FOR COMMENTS!!!**
+</DIV>
+
+People spend a lot of time making their comment looks like pretty, so if you just format
them, you will have to recover the previous comments...
+
+Some general rules :
+
+* Always use '{' and '}' even for a single instruction, or if you have an empty block (don't
use ';' for empty blocks)
+* No more than one instruction on a single line, the only exception is the '?' ':' operation
+* Use *this* to address the class variable if there is a risk of confusion (for instanc eif
you have a parameter with the same name.
+* Don't add a 'a_', or 'the_' before a parameter's name to distinguish it from the class
variable which has the same name. Use **this** instead.
+* Don't add **final** everywhere. Even if **final** is a substitute for **const**, it's semantic
is not clear enough that you use it everywhere.
+* Add spaces in method calls after '(' and before ')'
+* '{' and '}' must be on the same column
+
+This is a code example :
+
+	:::java    
+	...
+    int result = myMethod( param1, param2 )
+    
+    if ( result > 0 )
+    {
+        // do something
+    }
+    ...
+
+
+## Imports
+
+Always declare all the classes you import, do not use **x.y.\***
+
+## What else ?
+
+Well, this was a very short introduction about coding rules. Use commen sense, look at what
you see around you when adding some code, ask people about format, if you have a question.
+
+That's it ! (I wait your comments, guys :-)
\ No newline at end of file

Modified: directory/site/trunk/content/api/developer-guide.mdtext
URL: http://svn.apache.org/viewvc/directory/site/trunk/content/api/developer-guide.mdtext?rev=1588435&r1=1588434&r2=1588435&view=diff
==============================================================================
--- directory/site/trunk/content/api/developer-guide.mdtext (original)
+++ directory/site/trunk/content/api/developer-guide.mdtext Fri Apr 18 10:19:39 2014
@@ -20,4 +20,341 @@ Notice: Licensed to the Apache Software 
 
 This guide is intened tio be read by those who participate into the development of the LDAP
API. Users of the API are expected to read the [User guide](user-guide.html).
 
-TO BE COMPLETED
\ No newline at end of file
+## Getting the source, Building the trunks
+To get the source, build the *trunks/shared* and get along with Maven.
+
+## Versioning Scheme
+
+The version number of **LDAP API** has the following form:
+
+<DIV class="info" markdown="1">
+    &lt;major>.&lt;minor>.&lt;micro> \[-M&lt;milestone number>
or -RC&lt;release candidate number>]
+</DIV>
+
+This scheme has three number components:
+
+* The __major__ number increases when there are incompatible changes in the API.
+* The __minor__ number increases when a new feature is introduced.
+* The __micro__ number increases when a bug or a trivial change is made.
+
+and an optional label that indicates the maturity of a release:
+
+* __M__ (Milestone) means the feature set can change at any time in the next milestone releases.
The last milestone release becomes the first release candidate after a vote.
+* __RC__ (Release Candidate) means the feature set is frozen and the next RC releases will
focus on fixing problems unless there is a serious flaw in design. The last release candidate
becomes the first GA release after a vote.
+* No label implies __GA__ (General Availability), which means the release is stable enough
and therefore ready for production environment.
+
+<DIV class="info" markdown="1">
+    A <b>stable</b> version is a version with a frozen set of features, and a
frozen <b>API</b>. We don't release a version if all the integration tests are
not passing, so any release should be considered stable enogh to be used.<BR/>
+    Although we may add new features between two milestones, and the data structure may change,
which may imply that the data have to be extracted and reimported in order for the server
to be operational.<BR/>
+    The configuration might also evolve between two versions.
+</DIV>
+
+## Coding standards 
+
+The applicable coding standards for LDAP API 1.0 are described in [Coding Standards](coding-standards.html)
+
+There are some more rules, as we are using **Java 6** now :
+
+* Use generics as much as you can. Generic are a good way to avoid casting, and it enforce
the usage of the correct type.
+* If you can avoid *Iterators*, do so. There is this cool construction with a **for( Type
t:<collection instance> )** : use it !
+* Use **assert**. It's usefull, especially instead of a bunch of **if (<test is wrong>)**
then throw Exception* when controlling incoming parameters
+* Use the new *Enum* type !
+
+## Releasing the LDAP API
+
+Here is a guide on how to cut a new release. This is a long process, expect it to last a
couple of hours !
+
+First, you need to have a recent version of Maven (we are using 3.0.4) and a recent version
of the JDK (1.7 is ok, it should also build with 1.6).
+
+### Maven Settings
+
+You'll need a settings section for the **Nexus** and **people.apache.org** servers with a
password or a path to the SSH key used. Here's what my **settings.xml** file in **~/.m2**
looks like:
+
+    <settings>
+
+      <servers>
+        <!-- To publish a snapshot of some part of Maven -->
+        <server>
+          <id>apache.snapshots.https</id>
+          <username>username</username>
+          <password>********</password>
+        </server>
+
+        <!-- To publish a website using Maven -->
+        <server>
+          <id>apache.directory</id>
+          <username>username</username>
+          <privateKey>/Users/username/.ssh/id_rsa</privateKey>
+          <filePermissions>664</filePermissions>
+          <directoryPermissions>775</directoryPermissions>
+        </server>
+
+        <!-- To stage a release of some part of Maven -->
+        <server>
+          <id>apache.releases.https</id>
+          <username>username</username>
+          <password>********</password>
+        </server>
+
+        <!-- To stage a website of some part of Maven -->
+        <server>
+          <id>stagingSite</id> <!-- must match hard-coded repository identifier
in site:stage-deploy -->
+          <username>elecharny</username>
+          <filePermissions>664</filePermissions>
+          <directoryPermissions>775</directoryPermissions>
+        </server>
+
+      </servers>    
+
+      <profiles>
+        <profile>
+          <id>apache-public</id>
+          <pluginRepositories>
+            <pluginRepository>
+              <id>apache.public</id>
+              <url>https://repository.apache.org/content/groups/public/</url>
+            </pluginRepository>
+          </pluginRepositories>
+        </profile>
+
+        <profile>
+          <id>apache-release</id>
+          <!-- Configuration for artifacts signature -->
+          <properties>
+            <gpg.passphrase>********</gpg.passphrase>
+            <gpg.keyname>elecharny@apache.org</gpg.keyname>
+          </properties>
+        </profile>
+      </profiles>
+
+    </settings>
+
+Just replace your username, passwords and paths. Note that the username and password is your
Apache LDAP account.
+
+
+<DIV class="info" markdown="1">
+You'll need to provide the passphrase in the <b>settings.xml</b> to access the
gpg secret key installed on your host. This is due to a bug with the passphrase prompt in
the <em>maven-gpg-plugin</em>. So unfortunately we must provide the passphrase
in the <b>settings.xml</b> file in clear text. This should change in the future
when this bug is fixed. Note that this passphrase is put into the release profile which we
activate to properly sign and release the artifacts and poms via the release plugin.
+</DIV>
+
+### GPG Key
+
+All subprojects are configured to deploy signatures for the artifacts uploaded to the repository.
The **gpg** plugin will check use the default gpg key for the user deploying the project with
the release:perform directive of the release plugin. This will prompt you for the passphrase
for the default key. If you do not have one setup the build will fail.
+
+You can generate and upload a PGP key to a PGP keyserver using the following commands:
+
+    gpg --gen-key
+    gpg --fingerprint
+    gpg --keyserver subkeys.pgp.net --send-keys <your key's id from last command>
+
+
+<DIV class="info" markdown="1">
+Make sure to have created the .pgpkey in your <em>p.a.o/~</em> directory and
to have added your public key to the <b>KEYS</b> file.
+See also http://people.apache.org/~henkp/repo/faq.html#4
+</DIV>
+
+## Release process
+
+Since we are using Nexus for releases the release process is as follows (see also [Publishing
maven artifacts](http://www.apache.org/dev/publishing-maven-artifacts.html#staging-maven)).
+
+### Test the Project
+
+    $ mvn release:prepare -DdryRun=true
+
+Be aware that this phase will ask you about the next version, and most important, for the
next SCM tag :
+
+    ...
+    [INFO] Checking dependencies and plugins for snapshots ...
+    What is the release version for "Apache Directory LDAP API"? (org.apache.directory.api:api-parent)
1.0.0-M16: : 
+    What is the release version for "Apache Directory LDAP API I18n"? (org.apache.directory.api:api-i18n)
1.0.0-M16: : 
+    What is the release version for "Apache Directory LDAP API Utilities"? (org.apache.directory.api:api-util)
1.0.0-M16: : 
+    ...
+    What is SCM release tag or label for "Apache Directory LDAP API"? (org.apache.directory.api:api-parent)
1.0.0-M16: :
+    ...
+
+### Deploy a Snapshot
+
+    $ mvn deploy
+
+This is useful to verify your settings in ~/.m2/settings.xml (Nexus password and GPG key)
+
+### Prepare the Release
+
+    $ mvn release:clean
+    $ mvn release:prepare
+
+This creates a tag [here](http://svn.apache.org/viewvc/directory/shared/tags/)
+
+### Stage the Release
+
+    $ mvn release:perform
+
+This deploys the release to a staging repository.
+
+Go to https://repository.apache.org/index.html#stagingRepositories and close the staging
repository.
+
+### Build the Site
+
+    $ cd target/checkout
+    $ mvn site
+
+This creates the site.
+
+<DIV class="info" markdown="1">
+Now, you have to sign the binary packages which are in target/checkout/distribution/target.
+
+Use your PGP key ID (the pub key, 4096R/[XXXXXXX] where [XXXXXXX] is the key ID)
+</DIV>
+
+You can get the keys by typing :
+
+    gpg --list-keys
+
+### Publish Source and Binary Distribution Packages
+
+First of all, create a new directory on people.apache.org/public_html to store the pacckages
:
+
+    $ ssh people.apache.org
+    $ mkdir public_html/ldap-api-<version>
+    $ exit
+
+Then copy the packages :
+
+    $ cd distributions/target
+    $ scp apache-ldap-api-<version>-* people.apache.org:public_html/ldap-api-<version>/
+
+Update your index.html file on people.apach.org/public_html to make the packages visible.
Here is an example of possible content :
+
+    <h2>Last Directory LDAP API 1.0.0-M16 tarballs</h2>
+        <a href="ldap-api-1.0.0-M16/apache-ldap-api-1.0.0-M16-bin.tar.gz">apache-ldap-api-1.0.0-M16-bin.tar.gz</a><br/>
+        <a href="ldap-api-1.0.0-M16/apache-ldap-api-1.0.0-M16-bin.tar.gz.asc">apache-ldap-api-1.0.0-M16-bin.tar.gz.asc</a><br/>
+        <a href="ldap-api-1.0.0-M16/apache-ldap-api-1.0.0-M16-bin.tar.gz.md5">apache-ldap-api-1.0.0-M16-bin.tar.gz.md5</a><br/>
+        <a href="ldap-api-1.0.0-M16/apache-ldap-api-1.0.0-M16-bin.tar.gz.sha1">apache-ldap-api-1.0.0-M16-bin.tar.gz.sha1</a><br/>
+        <a href="ldap-api-1.0.0-M16/apache-ldap-api-1.0.0-M16-bin.zip">apache-ldap-api-1.0.0-M16-bin.zip</a><br/>
+        <a href="ldap-api-1.0.0-M16/apache-ldap-api-1.0.0-M16-bin.zip.asc">apache-ldap-api-1.0.0-M16-bin.zip.asc</a><br/>
+        <a href="ldap-api-1.0.0-M16/apache-ldap-api-1.0.0-M16-bin.zip.md5">apache-ldap-api-1.0.0-M16-bin.zip.md5</a><br/>
+        <a href="ldap-api-1.0.0-M16/apache-ldap-api-1.0.0-M16-bin.zip.sha1">apache-ldap-api-1.0.0-M16-bin.zip.sha1</a><br/>
+        <a href="ldap-api-1.0.0-M16/apache-ldap-api-1.0.0-M16-src.tar.gz">apache-ldap-api-1.0.0-M16-src.tar.gz</a><br/>
+        <a href="ldap-api-1.0.0-M16/apache-ldap-api-1.0.0-M16-src.tar.gz.asc">apache-ldap-api-1.0.0-M16-src.tar.gz.asc</a><br/>
+        <a href="ldap-api-1.0.0-M16/apache-ldap-api-1.0.0-M16-src.tar.gz.md5">apache-ldap-api-1.0.0-M16-src.tar.gz.md5</a><br/>
+        <a href="ldap-api-1.0.0-M16/apache-ldap-api-1.0.0-M16-src.tar.gz.sha1">apache-ldap-api-1.0.0-M16-src.tar.gz.sha1</a><br/>
+        <a href="ldap-api-1.0.0-M16/apache-ldap-api-1.0.0-M16-src.zip">apache-ldap-api-1.0.0-M16-src.zip</a><br/>
+        <a href="ldap-api-1.0.0-M16/apache-ldap-api-1.0.0-M16-src.zip.asc">apache-ldap-api-1.0.0-M16-src.zip.asc</a><br/>
+        <a href="ldap-api-1.0.0-M16/apache-ldap-api-1.0.0-M16-src.zip.md5">apache-ldap-api-1.0.0-M16-src.zip.md5</a><br/>
+        <a href="ldap-api-1.0.0-M16/apache-ldap-api-1.0.0-M16-src.zip.sha1">apache-ldap-api-1.0.0-M16-src.zip.sha1</a><br/>
+        <a href="ldap-api-1.0.0-M16/apache-ldap-api-1.0.0-M16.pom">apache-ldap-api-1.0.0-M16.pom</a><br/>
+        <a href="ldap-api-1.0.0-M16/apache-ldap-api-1.0.0-M16.pom.asc">apache-ldap-api-1.0.0-M16.pom.asc</a><br/>
+
+### Test the New Version in ApacheDS and Studio
+
+In <em>apacheds/pom.xml</em> change the <org.apache.directory.shared.version>
property, build ApacheDS, go into <em>apacheds/service</em>, and run <em>./apachds.sh</em>
to start the server.
+
+In <em>studio/pom.xml</em> change the <org.apache.directory.shared.version>
and <org.apache.directory.shared.validversion> properties, build Studio, and start Studio
in <em>applications/applications_<your platform>/target/ApacheDirectoryStudio-<your
platform>/<executable></em>. Connect to the started **ApacheDS**.
+
+### Vote
+
+Start a 72h vote at the dev mailing list.
+
+### Release
+
+If the vote succeeds LDAP API project can be released.
+
+Go to https://repository.apache.org/index.html#stagingRepositories and release the staging
repository so all artifacts are published to Maven central.
+
+Move the distribution packages (sources and bnaries) to the dist SVN repository: https://dist.apache.org/repos/dist/release/directory/api/dist/$(version)
+
+The best solution would be to checkout the directory in people.apache.org, to copy the packages
in the right place, and to check in the changes :
+
+    $ ssh people.apache.org
+    # svn co https://dist.apache.org/repos/dist/release/directory/api/dist/ api-dist
+    # cd api-dist
+    # mkdir <version>
+    # cp ../public_html/ldap-api-<version>/* <version>
+    # svn ci <version>
+    ...
+    # exit
+    $
+
+The packages should now be available on http://www.us.apache.org/dist/directory/api/dist/<version>
+
+### Deploy the Javadocs and XRef
+
+We now can deploy the generated Javadoc and cross-reference pages. They are generated in
the following directory :
+
+    target/checkout/target/site
+
+We will copy two directories :
+
+    apidocs
+    xref
+
+Staging or Production?
+
+
+<DIV class="info" markdown="1">
+Those files will be stored on the production server only !!! And some extra caution ust be
taken not to delete them when we will publish the staging site too...
+</DIV>
+
+First of all, you must checkout the two CMS store for the site : staging and revision.
+
+    $ cd ~/apacheds
+    $ svn co https://svn.apache.org/repos/infra/websites/production/directory/trunk staging
+    ...
+    $ svn co https://svn.apache.org/repos/infra/websites/production/directory production
+    ...
+
+Now, you will first add the directory for the newly generated version :
+
+    $ cd ~/apacheds/production/content/api/gen-docs
+    $ mkdir <version>
+    $ svn add <version>
+
+Then copy the generated docs :
+
+    $ cp -r ~/apacheds/trunks/shared/target/checkout/target/site/apidocs ~/apacheds/production/content/api/gen-docs/<version>
+    $ cp -r ~/apacheds/trunks/shared/target/checkout/target/site/xref ~/apacheds/production/content/api/gen-docs/<version>
+    $ 
+
+You have to check in those directories :
+
+    $ svn add <version>/*
+    $ svn ci <version> -m "Injected <version> javadocs"
+
+Now, you have to update the staging site <em>extpaths.txt</em>
+
+This file list the file on the production site that will not be overriden by the publication
of the staging site. It has to be updated
+
+    $ cd ~/apacheds/staging/content/
+    $ vi extpaths.txt
+
+Add the following line :
+
+    ...
+    # API
+    api/gen-docs/<version>
+    ...
+
+then save and check in the file <em>.htaccess</em>
+
+We also have to update this file :
+
+    $ cd ~/apacheds/staging/content/api/gen-docs
+    $ vi .htaccess
+
+And update the two last lines to refer to the version you've just released :
+
+    RewriteRule ^latest$ <version>/
+    RewriteRule ^latest/(.*)$ <version>/$1
+
+Save and commit the file.
+
+### Update the web site
+
+You can now update the site, add a news on the front page, and publish the site.
+
+### Inform the world !
+
+After 24h, you can now inform the world about the release.
+
+Send a mail to the users and dev mailing list, and one to the **announce@apache.org**
+
+You are done !



Mime
View raw message