The Community Contributions infrastructure offers the following services:
- Source Code Repository (Subversion)
- Jenkins build system
- JUnit and workflow test system
- Code quality checks with Sonar
- Web page for project description
If you want to contribute a new project to the KNIME Community Contributions, first read the general instructions.
The KNIME SVN repository can be accessed at https://community.knime.org/svn/nodes4knime. Use your KNIME forum credentials for access. In order to get write access please contact us. You can also use external repository providers such as Github or Bitbucket or even your private repositories. Our build system needs at least read access. Write access would be preferable in case changes to the build system require modification to metadata files in your projects. In any case please contact us for details about the setup.
In addition to a trunk or master branch the source repository should contain branches for each KNIME release (e.g. v_2_7, v_2_8) because there are release-specific update sites and build jobs (see below). Changes on one branch must be compatible with the corresponding KNIME release, i.e. no functionality from later releases must be used.
Jenkins can be accessed at https://community.knime.org/jenkins. Use your KNIME forum credentials for access. For reasons of clarity you will only see a limited number of jobs (for your project and some general jobs). If you need access to other jobs, just contact us.
Each job is run automatically at night or if you start a build manually. The tests (if existing) are run as part of the job. If (and only if) the job is stable it will be included in the corresponding update site on tech.knime.org. This means that unstable or failing jobs will not be promoted to the update sites! By default the last comitters will get email notifications upon unstable or failing jobs.
The final update site will contain all builds of your job that are available in Jenkins. By default builds are removed after 10 days. If you want to keep a certain build longer (and thus make it available on the update site), e.g. because you made major changes after this build, mark the build as "keep forever".
You may change the job's configuration, but please be very careful since the configuration is quite complex. If in doubt, please talk to us.
You can create tests for your nodes either as normal JUnit testcases or as testing workflows. In any case first install the KNIME Testing Application into your Eclipse SDK.
If you want to write JUnit testcases, the preferred way is to create a fragment to your plug-in. Then add a dependency to org.knime.testing and create a subclass of org.knime.testing.core.AbstractTestcaseCollector somewhere in the plug-in (e.g. MyPluginsTestcaseCollector). This class must be registered with the extension point org.knime.testing.TestcaseCollector (similar to how KNIME nodes are registered in the plug-in). This procedure is necessary for the testing framework so that it automatically finds all JUnit testcases in the fragment. Finally create a new feature that only contains the the fragment containing the JUnit testcases, e.g. my.plugin.testing.feature.
In case you want to create test workflows, first have a look into the doc-folder of the org.knime.testing plug-in in your Eclipse installation. I contains a document describing how to create testing workflows. Once the workflow is finished, you have to upload it onto the Community Workflow Server. You can access the server via the KNIME Explorer view. If you don't have a mount point entry for the community server yet, click on the button at the top-right of the view and then on Configure Explorer settings in the appearing dialog. Now create a new mount point with a custom ID and KNIME Community Server as mount point type. You can log into the server using your forum credentials. Create a new workflow group inside Testflows/trunk, give it a meaningful name, and finally upload your workflow(s) into this group. Please make sure that the permissions on the group and the workflow(s) allows read access for everyone.
Testcases are executed by using a minimal KNIME Analytics Platform installation and installing all your project's features. If your testcases need additional dependencies (e.g. XML nodes, database connectors, etc.) you need to create a separate testing feature that contains all required dependencies. This feature must be part of the update site that is built by the Jenkins job but should not be categorized on the update site, so that user's don't install it accidentally.
If you have reached this point please contact us so that we can activate the tests in the Jenkins job.
Sonar can be a accessed at https://community.knime.org/sonar. Currently you cannot use your forum credentials for login, there is a central account for all developers.
A webpage will be created when you start your project. It should contain at least a short description of your nodes and (important!) the license under which you distribute your extension. Please have a look at existing project pages, you may reuse their license information.
A subforum for your project will be created on demand.