7

Is there a way to configure Hudson to only execute Build or Post Build actions if there are changes in SVN/CVS

Thank you

Instantsoup
  • 14,825
  • 5
  • 34
  • 41
ken
  • 3,745
  • 6
  • 34
  • 49

2 Answers2

10

You can have Hudson poll the SCM for changes and only do things if it finds changes.

Poll SCM: Configure Hudson to poll changes in SCM.

Note that this is going to be an expensive operation for CVS, as every polling requires Hudson to scan the entire workspace and verify it with the server. Consider setting up a "push" trigger to avoid this overhead, as described in this document

You can also add something to your SCM post-commit hooks that will fire off a Hudson build.

Trigger builds remotely (e.g., from scripts): Enable this option if you would like to trigger new builds by accessing a special predefined URL (convenient for scripts).

One typical example for this feature would be to trigger new build from the source control system's hook script, when somebody has just committed a change into the repository, or from a script that parses your source control email notifications.

You'll need to provide an authorization token in the form of a string so that only those who know it would be able to remotely trigger this project's builds.

roufamatic
  • 18,187
  • 7
  • 57
  • 86
Instantsoup
  • 14,825
  • 5
  • 34
  • 41
  • 1
    Using Poll SCM as you mentionned is quite expensive operation for SVN. I was more thinking about triggering the build manually and then only if there are changes to SVN that the Build process get executed. Sometimes there are minor changes to SVN that doesn't necessitate a new Build – ken Aug 07 '09 at 21:01
  • 13
    Polling a subversion repository is incredibly cheap - the server returns the latest changelist number, which can be compared against the last version Hudson built. What makes you think it is expensive? – Michael Donohue Aug 10 '09 at 14:47
0

It is not as simple as looking at the revision number (as stated elsewhere) unless your build is for the entire subversion repository. Typically you have projects sharing a single subversion repository and you are building some sub-tree. The global revision number doesn't help.

'svn info [url_to_subtree]' will show the Last Changed Date. You can parse this and figure out if it is later than your last build date and trigger a new build.