Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [linuxtools-dev] PDE API Analysis enabled on linuxtools-gerrit Hudson Job

> Was this hard to setup? Is it just this https://git.eclipse.org/r/#/c/63770/
> ?
> We want to do it for CDT but without tycho plugin it seems to be lots of
> work.

I'm sure the current setup is far from ideal and could be improved. As an
example, I think in the past I've been told that the contents being compared
should be actually eclipse installations and not just a folder with jars but
doing an installation through the p2 director even once for all bundles would
take some time and would probably increase the time the job takes.


The steps are as follows :

1) Build the project as before but ensure that the api description generation
occurs. If you look inside our top-level pom you'll see a profile for
'api-generation' which does this. It uses a cbi-plugin to generate an ant file
which is then run by tycho-eclipserun-plugin using the antRunner functionality.
To get this to work, it seems to be necessary for each project to have the proper
nature/builder in the .project file. You can see an example of the changes in :

http://git.eclipse.org/c/linuxtools/org.eclipse.linuxtools.git/commit/?id=be49deb26ee6e83726432a6226a69c35cf88441a

So basically, 'mvn clean install -Papi-generation'

2) This part is a little more complicated because I wanted to run the api
analysis on the baseline+profile with minimal overhead. I think the 'proper'
solution involves installing all the bundles into a fresh eclipse with the
p2 director but that takes a while.

All bundles from our baseline zipped p2 repos are extracted and placed in
some folder (eg. baseline). These are all on our downloads page so hudson
can access them.

All bundles from the zipped p2 repo of the build that just succeeded are
placed in some other folder (eg. profile).

The final thing to do is to extract the lib/apitooling-ant.jar which we'll
need for the analysis. It's actually guaranteed to be in the reactor cache
because it's a dependency of the 'api-generation' setup. I used something
like :

apitools_jar=`find .maven/repo/p2/osgi/bundle/ -name org.eclipse.pde.api.tools-*.jar | sort -r | head -1`
unzip -o -d ${target} ${apitools_jar} lib/apitooling-ant.jar

3) Just run : '-f releng/apitools/pom.xml verify'

The ant script is set up to look in releng/apitools/target for
lib/apitooling-ant.jar, baseline, profile, and any other files
that are needed in the configuration.

4) The final step involves interpreting the result. I think the simplest
way is to look at releng/apitools/target/reports/counts.xml to see
how many errors there are and pass/fail the build accordingly, being sure
to archive the necessary html files so more info is available in case of
a fail.


I can actually post the full scripts used (steps 2, and 4) which reside
in the hudson configuration.

Cheers,
-- 
Roland Grunberg


Back to the top