Jump to: navigation, search

Difference between revisions of "LDT/Developer Area/Development"

< LDT
(Milestones versions)
(31 intermediate revisions by 3 users not shown)
Line 1: Line 1:
= Update sites organization =
+
= Git repositories  =
  
The four active Hudson jobs performing the continuous integration of Koneki projects are deploying signed p2 repos to the following locations:
+
Koneki source code is available on the Git repositories of the Eclipse Foundation. There are several repositories:<br>
  
* '''commons''': /home/data/httpd/download.eclipse.org/koneki/updates-nightly/commons
+
{| border="1" cellpadding="5" cellspacing="0"
* '''ldt''': /home/data/httpd/download.eclipse.org/koneki/updates-nightly/ldt
+
|-
* '''protocols''': /home/data/httpd/download.eclipse.org/koneki/updates-nightly/protocols
+
| [http://git.eclipse.org/c/koneki/org.eclipse.koneki.commons.git/ org.eclipse.koneki.commons.git]
* '''simulators''': /home/data/httpd/download.eclipse.org/koneki/updates-nightly/simulators
+
| Contains plug-ins that aim at being re-used by other Koneki projects (generic UI components, helpers, ...)
 +
|-
 +
| [http://git.eclipse.org/c/koneki/org.eclipse.koneki.ldt.git/ org.eclipse.koneki.ldt.git]
 +
| Contains the Lua Development Tools source code
 +
|-
 +
| [http://git.eclipse.org/c/koneki/org.eclipse.koneki.protocols.git/ org.eclipse.koneki.protocols.git]
 +
| Contains different sub-projects providing the core components enabling protocols (OMA-DM, ...) manipulation in the tools
 +
|-
 +
| [http://git.eclipse.org/c/koneki/org.eclipse.koneki.simulators.git/ org.eclipse.koneki.simulators.git]
 +
| Contains different sub-projects providing the components enabling protocols (OMA-DM, ...) simulation in the tools
 +
|}
  
There is a composite repo setup in/home/data/httpd/download.eclipse.org/koneki/updates-nightly, which is aggregating the 4 repos under it.
+
= Update sites organization  =
 +
The active [https://hudson.eclipse.org/hudson/search/?q=koneki Hudson jobs] perform the continuous integration of Koneki projects and deploy signed p2 repos to the nightly update sites.
 +
 
 +
There are 2 kind of nightly updates sites (repositories) :
 +
*'''nightly''': /home/data/httpd/download.eclipse.org/koneki/updates-nightly, which is a composite repo of the last successful builds of the 'master' branch of each Koneki projects.
 +
*'''nightly-maintenance''': /home/data/httpd/download.eclipse.org/koneki/updates-nightly-maintenance,  which is the same one but for the active maintenance branch.
 +
 
 +
All the last releases are stored in /home/data/httpd/download.eclipse.org/koneki/releases repository which is composed of :
 +
*'''stable''': /home/data/httpd/download.eclipse.org/koneki/releases/stable which contains all the last stable releases.
 +
*'''milestones''': /home/data/httpd/download.eclipse.org/koneki/releases/milestones which contains all the last milestones.
 +
 
 +
All the old releases can be found in /home/data/httpd/archive.eclipse.org/koneki/releases. (with the same structure)
 +
 
 +
= Delivery Process =
 +
All the path in this section are relative to <tt>/home/data/httpd/download.eclipse.org/koneki</tt> on <tt>build.eclipse.org</tt>
 +
 
 +
=== Maintenance version ===
 +
*"Commit freeze" on all maintenance branches.
 +
*Be sure the last version build corresponds to the last commit wanted.
 +
*Test the last nightly-maintenance build.
 +
If tests are ok:
 +
*Copy all directories from <tt>updates-nightly-maintenance/</tt> to <tt>releases/stables/${NUM.VERSION}</tt>.
 +
** <tt>mkdir releases/stable/${NUM.VERSION}/</tt>
 +
** <tt>cp -r updates-nightly-maintenance/* releases/stable/${NUM.VERSION}/</tt>
 +
*Rename the repository name in <tt>compositeArtifacts.xml</tt> and <tt>compositeContent.xml</tt> in <tt>releases/stables/${NUM.VERSION}</tt> (increment timestamp too)
 +
** <tt>sed -i -e "s/(nightly-maintenance)/(${NUM.VERSION})/g" releases/stable/${NUM.VERSION}/compositeArtifacts.xml</tt>
 +
** <tt>sed -i -e "s/(nightly-maintenance)/(${NUM.VERSION})/g" releases/stable/${NUM.VERSION}/compositeContent.xml</tt>
 +
** (increment timestamp)
 +
*Modify repo to enable statistic
 +
*Add child <tt>${NUM.VERSION}</tt> in the repository name in <tt>compositeArtifacts.xml</tt> and <tt>compositeContent.xml</tt> in <tt>releases/stables/</tt> (increment timestamp too)
 +
*Check the files permissions. (all repo should have directory with right  drwxrwsr-x and artifacts.jar and content.jar in -rw-rw-r--)
 +
*Tag the last commit of the maintance branches.
 +
** name ${NUM.VERSION}, description : Releases ${NUM.VERSION} version
 +
*Increment version to the next maintenance version then commit it.
 +
** commit comment : Increment version (${OLD.VERSION} => ${NUM.VERSION})
 +
*Deliver new products.
 +
** archive current version : <tt>cp products/stable/* /home/data/httpd/archive.eclipse.org/koneki/products/stable/${CURRENT.NUM.VERSION}/</tt>
 +
** deliver new version : <tt>cp /shared/jobs/koneki-ldt-maintenance/lastSuccessful/archive/product/target/products/* products/stable</tt>
 +
 
 +
=== Milestones versions ===
 +
*"Commit freeze" on all master branches.
 +
*Be sure the last version build corresponds to the last commit wanted.
 +
*Test the last nightly build.
 +
If tests are ok:
 +
*execute script releases:
 +
<tt>python erclt.py -ov 0.9M2 -nv 0.9RC1 -d /home/data/httpd/download.eclipse.org/koneki -m</tt>
 +
 
 +
which do :
 +
  Copy all directories from <tt>updates-nightly</tt> to <tt>releases/milestones/${MILESTONES.VERSION}</tt>.
 +
  Modify repo to enable statistic
 +
  set the files permissions.
 +
  Deliver new products.
 +
    archive current version : <tt>cp products/current-milestone/* /home/data/httpd/archive.eclipse.org/koneki/products/milestones/${CURRENT.NUM.VERSION.MILESTONE_NUM}/</tt>
 +
    deliver new version : <tt>cp /shared/jobs/koneki-ldt/lastSuccessful/archive/product/target/products/* products/current-milestone</tt>
 +
    set the files permissions.
 +
 
 +
If script execution is ok:
 +
 
 +
*Tag the last commit of the master branches.
 +
 
 +
=== Major versions ===
 +
*Test the milestones version which is the releases candidate.
 +
If tests are ok :
 +
*Copy all the directories from <tt>releases/stable/${NUM.VERSION}</tt> to <tt>/home/data/httpd/archive.eclipse.org/koneki/releases/${NUM.VERSION}</tt>
 +
*Delete all directories in <tt>releases/stable/${NUM.VERSION}</tt>
 +
*Copy all directories from <tt>releases/milestones/${MILESTONES.VERSION}</tt> in <tt>releases/stable/${NUM.VERSION}</tt>
 +
*Delete all directories in <tt>releases/milestones/${MILESTONES.VERSION}</tt>
 +
*Check the files permissions.
 +
*Tag the master branches.
 +
*Create maintenance branches.
 +
*Increment version on master branches then commit it.
 +
*Increment version to the next maintenance version then commit it.
 +
*Change hudson configuration of maintenance builds to build the new one.
 +
*Deliver new products.
 +
** archive current version : <tt>cp products/stable/* /home/data/httpd/archive.eclipse.org/koneki/products/stable/${CURRENT.NUM.VERSION}/</tt>
 +
** deliver new version : <tt>cp /shared/jobs/koneki-ldt-maintenance/lastSuccessful/archive/product/target/products/* products/stable</tt>
 +
**Check the files permissions.
 +
 
 +
=== Simultaneous Release ===
 +
* see http://wiki.eclipse.org/Simrel/Contributing_to_Simrel_Aggregation_Build
 +
 
 +
=== Increment version Process ===
 +
* Increment feature version (+ pom.xml)
 +
* Increment product feature version (+ pom.xml)
 +
* Increment product version and its dependencies version
 +
* Increment feature version includes in category.xml
 +
* Increment documentation version (org.eclipse.koneki.ldt.doc.user/build-help.xml and org/eclipse/koneki/ldt/debug/ui/DocumentationLinksConstants.java)
 +
* deploy User guide (wiki)
 +
 
 +
=== Enable Statistic ===
 +
* Move in repo
 +
** <tt> cd releases/stable/${NUM.VERSION}/${repo} </tt>
 +
* Unzip artifacts.jar
 +
** <tt>unzip artifacts.jar</tt>
 +
* Modify artifacts.xml (add p2.statsURI and download.stats property)
 +
<pre>
 +
<properties size="3">
 +
    <property name="p2.timestamp" value="1339531652273"/>
 +
    <property name="p2.compressed" value="true"/>
 +
    <property name="p2.statsURI" value="http://download.eclipse.org/stats/koneki"/>
 +
 
 +
....
 +
 
 +
<artifact classifier="org.eclipse.update.feature" id="org.eclipse.koneki.ldt" version="0.8.0.201206122001">
 +
      <properties size="6">
 +
        <property name="artifact.size" value="20464"/>
 +
        <property name="download.size" value="20464"/>
 +
        <property name="maven-groupId" value="org.eclipse.koneki.ldt-features"/>
 +
        <property name="maven-artifactId" value="org.eclipse.koneki.ldt"/>
 +
        <property name="maven-version" value="0.8.0-SNAPSHOT"/>
 +
        <property name="download.contentType" value="application/zip"/>
 +
        <property name='download.stats' value='org.eclipse.koneki.ldt_0.8.0.201206122001'/>
 +
      </properties>
 +
</pre>
 +
* Zip it
 +
** <tt>zip artifacts.jar artifacts.xml</tt>
 +
* remove artifacts.xml
 +
** <tt>rm artifacts.xml</tt>
 +
 
 +
(see : http://wiki.eclipse.org/Equinox_p2_download_stats)
 +
 
 +
=== Simultaneous Release migration ===
 +
*Update target platform (.target)
 +
*Add the new plaform profile in root pom.xml
 +
*Change the default repo use to build in root pom.xml (<eclipse-site> property)

Revision as of 11:54, 23 November 2012

Git repositories

Koneki source code is available on the Git repositories of the Eclipse Foundation. There are several repositories:

org.eclipse.koneki.commons.git Contains plug-ins that aim at being re-used by other Koneki projects (generic UI components, helpers, ...)
org.eclipse.koneki.ldt.git Contains the Lua Development Tools source code
org.eclipse.koneki.protocols.git Contains different sub-projects providing the core components enabling protocols (OMA-DM, ...) manipulation in the tools
org.eclipse.koneki.simulators.git Contains different sub-projects providing the components enabling protocols (OMA-DM, ...) simulation in the tools

Update sites organization

The active Hudson jobs perform the continuous integration of Koneki projects and deploy signed p2 repos to the nightly update sites.

There are 2 kind of nightly updates sites (repositories) :

  • nightly: /home/data/httpd/download.eclipse.org/koneki/updates-nightly, which is a composite repo of the last successful builds of the 'master' branch of each Koneki projects.
  • nightly-maintenance: /home/data/httpd/download.eclipse.org/koneki/updates-nightly-maintenance, which is the same one but for the active maintenance branch.

All the last releases are stored in /home/data/httpd/download.eclipse.org/koneki/releases repository which is composed of :

  • stable: /home/data/httpd/download.eclipse.org/koneki/releases/stable which contains all the last stable releases.
  • milestones: /home/data/httpd/download.eclipse.org/koneki/releases/milestones which contains all the last milestones.

All the old releases can be found in /home/data/httpd/archive.eclipse.org/koneki/releases. (with the same structure)

Delivery Process

All the path in this section are relative to /home/data/httpd/download.eclipse.org/koneki on build.eclipse.org

Maintenance version

  • "Commit freeze" on all maintenance branches.
  • Be sure the last version build corresponds to the last commit wanted.
  • Test the last nightly-maintenance build.

If tests are ok:

  • Copy all directories from updates-nightly-maintenance/ to releases/stables/${NUM.VERSION}.
    • mkdir releases/stable/${NUM.VERSION}/
    • cp -r updates-nightly-maintenance/* releases/stable/${NUM.VERSION}/
  • Rename the repository name in compositeArtifacts.xml and compositeContent.xml in releases/stables/${NUM.VERSION} (increment timestamp too)
    • sed -i -e "s/(nightly-maintenance)/(${NUM.VERSION})/g" releases/stable/${NUM.VERSION}/compositeArtifacts.xml
    • sed -i -e "s/(nightly-maintenance)/(${NUM.VERSION})/g" releases/stable/${NUM.VERSION}/compositeContent.xml
    • (increment timestamp)
  • Modify repo to enable statistic
  • Add child ${NUM.VERSION} in the repository name in compositeArtifacts.xml and compositeContent.xml in releases/stables/ (increment timestamp too)
  • Check the files permissions. (all repo should have directory with right drwxrwsr-x and artifacts.jar and content.jar in -rw-rw-r--)
  • Tag the last commit of the maintance branches.
    • name ${NUM.VERSION}, description : Releases ${NUM.VERSION} version
  • Increment version to the next maintenance version then commit it.
    • commit comment : Increment version (${OLD.VERSION} => ${NUM.VERSION})
  • Deliver new products.
    • archive current version : cp products/stable/* /home/data/httpd/archive.eclipse.org/koneki/products/stable/${CURRENT.NUM.VERSION}/
    • deliver new version : cp /shared/jobs/koneki-ldt-maintenance/lastSuccessful/archive/product/target/products/* products/stable

Milestones versions

  • "Commit freeze" on all master branches.
  • Be sure the last version build corresponds to the last commit wanted.
  • Test the last nightly build.

If tests are ok:

  • execute script releases:

python erclt.py -ov 0.9M2 -nv 0.9RC1 -d /home/data/httpd/download.eclipse.org/koneki -m

which do :

 Copy all directories from updates-nightly to releases/milestones/${MILESTONES.VERSION}.
 Modify repo to enable statistic
 set the files permissions.
 Deliver new products.
   archive current version : cp products/current-milestone/* /home/data/httpd/archive.eclipse.org/koneki/products/milestones/${CURRENT.NUM.VERSION.MILESTONE_NUM}/
   deliver new version : cp /shared/jobs/koneki-ldt/lastSuccessful/archive/product/target/products/* products/current-milestone
   set the files permissions.

If script execution is ok:

  • Tag the last commit of the master branches.

Major versions

  • Test the milestones version which is the releases candidate.

If tests are ok :

  • Copy all the directories from releases/stable/${NUM.VERSION} to /home/data/httpd/archive.eclipse.org/koneki/releases/${NUM.VERSION}
  • Delete all directories in releases/stable/${NUM.VERSION}
  • Copy all directories from releases/milestones/${MILESTONES.VERSION} in releases/stable/${NUM.VERSION}
  • Delete all directories in releases/milestones/${MILESTONES.VERSION}
  • Check the files permissions.
  • Tag the master branches.
  • Create maintenance branches.
  • Increment version on master branches then commit it.
  • Increment version to the next maintenance version then commit it.
  • Change hudson configuration of maintenance builds to build the new one.
  • Deliver new products.
    • archive current version : cp products/stable/* /home/data/httpd/archive.eclipse.org/koneki/products/stable/${CURRENT.NUM.VERSION}/
    • deliver new version : cp /shared/jobs/koneki-ldt-maintenance/lastSuccessful/archive/product/target/products/* products/stable
    • Check the files permissions.

Simultaneous Release

Increment version Process

  • Increment feature version (+ pom.xml)
  • Increment product feature version (+ pom.xml)
  • Increment product version and its dependencies version
  • Increment feature version includes in category.xml
  • Increment documentation version (org.eclipse.koneki.ldt.doc.user/build-help.xml and org/eclipse/koneki/ldt/debug/ui/DocumentationLinksConstants.java)
  • deploy User guide (wiki)

Enable Statistic

  • Move in repo
    • cd releases/stable/${NUM.VERSION}/${repo}
  • Unzip artifacts.jar
    • unzip artifacts.jar
  • Modify artifacts.xml (add p2.statsURI and download.stats property)
<properties size="3">
    <property name="p2.timestamp" value="1339531652273"/>
    <property name="p2.compressed" value="true"/>
    <property name="p2.statsURI" value="http://download.eclipse.org/stats/koneki"/>

....

<artifact classifier="org.eclipse.update.feature" id="org.eclipse.koneki.ldt" version="0.8.0.201206122001">
      <properties size="6">
        <property name="artifact.size" value="20464"/>
        <property name="download.size" value="20464"/>
        <property name="maven-groupId" value="org.eclipse.koneki.ldt-features"/>
        <property name="maven-artifactId" value="org.eclipse.koneki.ldt"/>
        <property name="maven-version" value="0.8.0-SNAPSHOT"/>
        <property name="download.contentType" value="application/zip"/>
        <property name='download.stats' value='org.eclipse.koneki.ldt_0.8.0.201206122001'/>
      </properties>
  • Zip it
    • zip artifacts.jar artifacts.xml
  • remove artifacts.xml
    • rm artifacts.xml

(see : http://wiki.eclipse.org/Equinox_p2_download_stats)

Simultaneous Release migration

  • Update target platform (.target)
  • Add the new plaform profile in root pom.xml
  • Change the default repo use to build in root pom.xml (<eclipse-site> property)