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

From Eclipsepedia

< LDT
Jump to: navigation, search
(New page: Koneki is to be contributed soon. As soon as Parallel IP will be approved, this page will contain the general instruction to get you started with the Koneki development environment.)
 
(Milestones versions)
(34 intermediate revisions by 4 users not shown)
Line 1: Line 1:
Koneki is to be contributed soon. As soon as Parallel IP will be approved, this page will contain the general instruction to get you started with the Koneki development environment.
+
= Git repositories  =
 +
 
 +
Koneki source code is available on the Git repositories of the Eclipse Foundation. There are several repositories:<br>
 +
 
 +
{| border="1" cellpadding="5" cellspacing="0"
 +
|-
 +
| [http://git.eclipse.org/c/koneki/org.eclipse.koneki.commons.git/ org.eclipse.koneki.commons.git]
 +
| 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
 +
|}
 +
 
 +
= 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 12:54, 23 November 2012

Contents

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)