Are you talking about adding information Actions to the build records or configuring actual build steps to run?
Both are quite easy to do but different. There are a couple of plugins that does the latter already, the first ones that comes to mind is Configuration Slicing [1] and Job DSL plugin [2].
Configuring a build step programmaticly would be something like
if (job.getPublishersList().get(FindBugsPublisher.class) == null) {
FindBugsPublisher findBugs = new FindBugsPublisher();
findBugs.setPattern("**/findbugs.xml");
job.getPublishersList().add(findBugs);
}
But not all plugins keep their api stable for external calls like this so it might break if you upgrade findbugs beyond 4.63 for example, so you might be safer in doing something like job dsl is doing and generate the xml for the publisher config you're after, inserting it into the job's config.xml and do a
job.doReload();