blob: 12c95984ab53d6ebbdaddd4b039c64ec72554da9 [file] [log] [blame]
## Gradle based build system
Concierge will be build using [Gradle](http://gradle.org/). The gradle wrapper scripts will be used, to simplify installation. The wrapper scripts are checked in into repository as `./gradlew` and `./gradlew.bat`. The required files to start and download gradle are in folder `.gradle-wrapper`, do not touch.
```gradle
// task to create a gradle wrapper with used gradle version
task wrapper(type: Wrapper) {
gradleVersion = '2.2.1'
jarFile = '.gradle-wrapper/gradle-wrapper.jar'
}
```
Updates of gradle version can be done by changing the wrapper task in `./build.gradle` to an updated version and running the task `./gradlew wrapper` again.
```
$ ./gradlew wrapper
```
## Build Concierge using Gradle
A complete build can be done using
```
$ ./gradlew clean build distZip distTar installDist
```
This will clean workspace, build and run tests, and will create a distribution file named `distribution/build/distributions/concierge-<version>.zip` and `...tar.gz`. By `installDist` it will be unpacked into `distribution/build/install` to easily check artifact results.
## Versioning
The framework and the bundles jars will be named to Bundle-SymbolicName and Bundle-Version, e.g. `org.eclipse.concierge-0.9.0.20141230122000.jar`. The Manifest.MF will specify the `Bundle-Version: 0.9.0.qualifier`, qualifier will be replaced by the current build date/time (MANIFEST driven approach). The version maintenance is up to the individual bundles/framework dependent on compatibility of changes.
The version for the distribution will be defined in `version.txt` in root directory. The used release plugin will automatically read in this file and use it as `project.version` property. When this file will have a `-SNAPSHOT` ending, it will be considered as a SNAPSHOT version. When doing a release (by calling `./gradlew release`) it will remove SNAPSHOT, make a release build, create a tag in git, and increase the version to next number.
## Distribution files
Files added to the distribution can be added to the folder `distribution/src/main/dist`. These files will automatically added to distribution folder.
In folder `distribution/src/markdown` are all documentation files in markdown format. They will be transformed to HTML using gradle tasks. For displaying markdown files [Strapdown](http://strapdownjs.com/) will be used.
Documentation for Concierge developers/committers is included in folder `distribution/src/markdown/docs/contributor`.
## Hudson based Continuous Integration build
There is a Hudson instance (HIPP) hosted at [Eclipse Hudson Infrastructure](http://hudson.eclipse.org/concierge/). All committer have access to this instance, please login with your Eclipse committer account.
There is a job [ConciergeDistribution](https://hudson.eclipse.org/concierge/job/ConciergeDistribution/) doing a build by checking git master branch for changes. This script will start the gradle-wrapper by a shell build task using
```
./gradlew -Dhttps.proxyHost=proxy.eclipse.org -Dhttps.proxyPort=9898 -Dhttps.nonProxyHosts=*.eclipse.org clean build distZip distTar installDist
```
The build job has to set the proxy settings to get gradle-version downloaded from Internet.
The Files to archive will be set to `distribution/build/distributions/*`.
When distribution has been made, a SNAPSHOT build will be published to Eclipse Download section by the job [ConciergeDistributionPublishSnapshot](https://hudson.eclipse.org/concierge/job/ConciergeDistributionPublishSnapshot/). It will upload these file to download area and will provide a [publish.log] file for checking the publishing process:
* Concierge Downloads: [http://download.eclipse.org/concierge/](http://download.eclipse.org/concierge/?d)
* Concierge Snapshot builds: [http://download.eclipse.org/concierge/snapshots](http://download.eclipse.org/concierge/snapshots/?d)
* Concierge Release builds: [http://download.eclipse.org/concierge/releases](http://download.eclipse.org/concierge/releases/?d)