Project-Checker =============== I. What is it ? --------------- Project-Checker is a simple tools checking releases and projects. This aims to simplify the release checking process, BUT does not avoid manual checking. Project-Checker was mainly made for Apache Felix bundles. II. Mode -------- Project-Checker can be used in two mode: - the project mode allows checking a not-yet released project (build already packages). It aims to detect license and notice issues - the release mode allows checking a released project. It do the project mode checks + a couple of release checking III. Checks ----------- The checkers applied on the project depends on the mode: A] Project Mode - the License file is in the project - the Notice file is in the project - the License file is in the Jar file (in META-INF) - the Notice file is in the Jar file (in META-INF) - the files contains Apache License Header (use RAT) - the Notice license summary is correct - The Notice name contains the project name - The Notice copyright contains a correct year - The Notice file says that the product contains code from the Apache Software Foundation - All included packages match with a declared included license specified in the notice file - All imported packages (only if the jar file is a bundle) match with a declared used license specified in the notice file B] Release Mode - all the project mode checks + - all the waited artifacts are created (Zip, Tag.GZ, source ...) - MD5 and SHA1 signatures are beautified - the MD5 signatures are correct - the SHA1 signatures are correct - the ASC signatures are correct - rhe changelog file exists - The release tag is correctly created IV. How to use it ? -------------------- Using project checker depends on the mode to use A] Common part java -cp project-checker.jar:commons-cli-1.1.jar:commons-collections-3.2.1.jar:commons-lang-2.4.jar:dom4j-1.6.1.jar:apache-rat-0.7-SNAPSHOT.jar:apache-rat-core-0.7-SNAPSHOT.jar org.apache.felix.project.checker.Project Arguments: -n or --name: Name of the artifact [mandatory] -v or --version: Version of the artifact [mandatory] -c or --configuration: Set the configuration file to use B] Project Mode arguments -d or --directory: path of the project to check [mandatory in the project mode] Example: java -cp project-checker.jar:libs/commons-cli-1.1.jar:libs/commons-collections-3.2.1.jar:libs/commons-lang-2.4.jar:libs/dom4j-1.6.1.jar: libs/apache-rat-0.7-SNAPSHOT.jar:libs/apache-rat-core-0.7-SNAPSHOT.jar org.apache.felix.project.checker.Project -d ~/workspaces/felix-trunk/ipojo/arch/ -n org.apache.felix.ipojo.arch -v 1.3.0-SNAPSHOT java \ -cp bin:libs/commons-cli-1.1.jar:libs/commons-collections-3.2.1.jar:libs/commons-lang-2.4.jar:libs/dom4j-1.6.1.jar:libs/apache-rat-0.7-SNAPSHOT.jar:libs/apache-rat-core-0.7-SNAPSHOT.jar \ org.apache.felix.project.checker.Project \ -n org.apache.felix.main \ -v 1.6.1 \ -u http://people.apache.org/~pauls/1.6.1/ java \ -cp bin:libs/commons-cli-1.1.jar:libs/commons-collections-3.2.1.jar:libs/commons-lang-2.4.jar:libs/dom4j-1.6.1.jar:libs/apache-rat-0.7-SNAPSHOT.jar:libs/apache-rat-core-0.7-SNAPSHOT.jar \ org.apache.felix.project.checker.Project \ -n org.apache.felix.framework \ -v 1.6.1 \ -u http://people.apache.org/~pauls/1.6.1/ C] Release Mode -u or --url: URL to download the release [mandatory in the release mode] -o or --offline: to not download the artifacts (reused them) V. Configuration file --------------------- The configuration file contains the used commands and project information. You can either edit the config.properties file or create your own. VI. Process in the release mode ------------------------------- Release Checker is quite simple: 1) Download (if needed) the release files 2) Extract and parse the Notice file 3) Launch each "checker" 4) Generate the report A "checker" is a simple class checking one point of the release. Once downloaded, you can check manually the release by inspecting artifacts contained in the release-$RELEASE_NAME-$RELEASE_VERSION folder. VI. Todo list ------------- - Add more known license - MD5 and SHA1 checks should use RegEx - Changelog checker should see if all Jira issues are mentioned - Changelog checker should checks that the changelog contains an entry for the current version - Allow to write the report in a file (right know, output can be redirected) - Nexus support