4141import javaposse .jobdsl .plugin .actions .GeneratedUserContentsBuildAction ;
4242import javaposse .jobdsl .plugin .actions .GeneratedViewsAction ;
4343import javaposse .jobdsl .plugin .actions .GeneratedViewsBuildAction ;
44+ import javaposse .jobdsl .plugin .actions .GeneratedObjectsRunAction ;
4445import jenkins .model .Jenkins ;
4546import jenkins .model .ParameterizedJobMixIn .ParameterizedJob ;
4647import jenkins .tasks .SimpleBuildStep ;
@@ -357,17 +358,17 @@ public void perform(@Nonnull Run<?, ?> run, @Nonnull FilePath workspace, @Nonnul
357358 Set <GeneratedConfigFile > freshConfigFiles = generatedItems .getConfigFiles ();
358359 Set <GeneratedUserContent > freshUserContents = generatedItems .getUserContents ();
359360
360- updateTemplates (run .getParent (), listener , freshJobs );
361- updateGeneratedJobs (run .getParent (), listener , freshJobs );
362- updateGeneratedViews (run .getParent (), listener , freshViews );
363- updateGeneratedConfigFiles (run .getParent (), listener , freshConfigFiles );
364- updateGeneratedUserContents (run .getParent (), listener , freshUserContents );
365-
366361 // Save onto Builder, which belongs to a Project.
367- run .addAction (new GeneratedJobsBuildAction (freshJobs , getLookupStrategy ()));
368- run .addAction (new GeneratedViewsBuildAction (freshViews , getLookupStrategy ()));
369- run .addAction (new GeneratedConfigFilesBuildAction (freshConfigFiles ));
370- run .addAction (new GeneratedUserContentsBuildAction (freshUserContents ));
362+ addJobAction (run , new GeneratedJobsBuildAction (freshJobs , getLookupStrategy ()));
363+ addJobAction (run , new GeneratedViewsBuildAction (freshViews , getLookupStrategy ()));
364+ addJobAction (run , new GeneratedConfigFilesBuildAction (freshConfigFiles ));
365+ addJobAction (run , new GeneratedUserContentsBuildAction (freshUserContents ));
366+
367+ updateTemplates (run .getParent (), listener , new HashSet <GeneratedJob >(run .getAction (GeneratedJobsBuildAction .class ).getModifiedObjects ()));
368+ updateGeneratedJobs (run .getParent (), listener , new HashSet <GeneratedJob >(run .getAction (GeneratedJobsBuildAction .class ).getModifiedObjects ()));
369+ updateGeneratedViews (run .getParent (), listener , new HashSet <GeneratedView >(run .getAction (GeneratedViewsBuildAction .class ).getModifiedObjects ()));
370+ updateGeneratedConfigFiles (run .getParent (), listener , new HashSet <GeneratedConfigFile >(run .getAction (GeneratedConfigFilesBuildAction .class ).getModifiedObjects ()));
371+ updateGeneratedUserContents (run .getParent (), listener , new HashSet <GeneratedUserContent >(run .getAction (GeneratedUserContentsBuildAction .class ).getModifiedObjects ()));
371372 }
372373 } catch (RuntimeException e ) {
373374 if (!(e instanceof DslException ) && !(e instanceof AccessDeniedException )) {
@@ -378,6 +379,16 @@ public void perform(@Nonnull Run<?, ?> run, @Nonnull FilePath workspace, @Nonnul
378379 }
379380 }
380381
382+ private void addJobAction (Run run , GeneratedObjectsRunAction action ){
383+ GeneratedObjectsRunAction generatedJobsBuildAction = run .getAction (action .getClass ());
384+ if (generatedJobsBuildAction == null ) {
385+ run .addAction (action );
386+ }
387+ else {
388+ generatedJobsBuildAction .addModifiedObjects (action .getModifiedObjects ());
389+ }
390+ }
391+
381392 /**
382393 * Uses generatedJobs as existing data, so call before updating generatedJobs.
383394 */
0 commit comments