I have looking into Buckminster and Jenkins in the last weeks and tried to follow the tutorial from Thorsten, https://www.knime.com/blog/creating-knime-update-sites-with-buckminster. While I managed to build the example from the tutorial I could not build my own nodes. I guess some extra configuration files are needed and I decided to post my installation as it may help others.
The first problem with the tutorial is that the required SVN plugins are not supported anymore. Or at least the versions needed by Buckminster. I solved it by copying the example projects to a public Git repository and using the Git reader type in resource map file. The Git repository can be accessed at https://gitlab.bfr.berlin/miguel/nodes4knime and only contains the three example projects:
my.example.feature
my.example.plugin
my.example.update
The command query file is left unchanged. It even has the SVN properties which are not used now.
With these changes now I can resolve and materialize which seems to work as it makes a builds in /tmp.
The problems come with my extension node plugins at https://github.com/SiLeBAT/FSK-Lab. The resource map seems to work and they are retrieved but Buckminster fails to build them. Maybe I skipped some Buckminster configuration file. How should I proceed? I am attaching the command query and resource map files for my plugins.
Buckminster pulls the projects but then throws the following errors:
Cloning remote repository https://github.com/miguelalba/FSK-Lab.git into D:\buckminsterWS\FSK-Lab
ERROR [0002] : No suitable provider for component de.bund.br.knime.nodes.util:osgi.bundle was found in resourceMap file:/D:/bm-example/fsklab.rmap
ERROR [0002] : No suitable provider for component de.bund.br.knime.nodes.util:osgi.bundle was found in searchPath knime-stuff
ERROR [0002] : Rejecting provider p2(http://update.knime.org/analytics-platform/3.4[http://update.knime.org/analytics-platform/3.4]): No component match was found
Errors and Warnings
E [0002] : No suitable provider for component de.bund.br.knime.nodes.util:osgi.bundle was found in resourceMap file:/D:/bm-example/fsklab.rmap
E [0002] : No suitable provider for component de.bund.br.knime.nodes.util:osgi.bundle was found in searchPath knime-stuff
E [0002] : Rejecting provider p2(http://update.knime.org/analytics-platform/3.4[http://update.knime.org/analytics-platform/3.4]): No component match was found
TAG-ID 0002 = Query for de.bund.bfr.knime.fsklab.feature, path: de.bund.bfr.knime.fsklab.feature:eclipse.feature$1.0.0.qualifier
BTW, something weird I noticed is that next to my plugins the example projects were also downloaded but they are not included in the resource map.
One suggestion, looking at our Jenkins job and rmap is that we check out the source code for our nodes in to the Jenkins job workspace, and then use a local provider rather than the git/svn providers, e.g.:
When I took over our knime package from a colleague I was also confronted with buckminster and found it very hard to understand. I then switched to maven / tycho, maybe it’s worth to have a look at it: https://www.eclipse.org/tycho/
Since I am using eclipse (as well as knime itself) as ide, I also find tycho much better integrated into eclipse, which makes depeloping much easier for me.
Thank you all. Sorry for answering so late. I was on holidays leave.
@thor the project de.bund.bfr.knime.fsklab.feature is not a plugin but a feature project like in the example from the tutorial, my.example.update. In this example project there are also two configuration files: bm.properties and buckminster.json. Maybe there are needed in my project?
@Vernalis thanks for your suggestion! I have seen it in other Buckminster configurations but my idea was to use the mutable property of the provider. If I am not wrong, this only pulls the changes and not the whole repository on each build.
yes I know that project. I started with it but I found it confusing since you get the whole structure at once. Following the vogella tutorial I created the same RCP project structure with the example KNIME node and uploaded to GitHub at https://github.com/miguelalba/my.example. Pretty glad with Tycho so far:
Dependencies are retrieved from a KNIME target.
Only tests I included so far are unittests. In the maven archetype they are including test workflows which I will look into.
CI with Travis. The single example node is taking 2 minutes to build and half a minute when caching the dependencies. It will be interesting to see with many extension nodes and test workflows.
I failed to launch as RCP application from a product project but succeded from the bundles project (nodes project).
I ignore how to use 3rd libraries as Maven dependencies in Tycho. There seems to be some workarounds.