Hi,
Here's what I've done so far:
1. Separate prepare build from actual build
- introduce PrepareBuildProjectsTask and
PrepareBuildProjectsTaskExecutor
2. Model change
- added ProjectScmRoot ( which is used when updating ). Fields
(scmRootAddress, error, state, oldstate, projectGroup)
- added scmRootAddress to Project which is the scmUrl of the root
project it belongs to.
- added scmResult to Project. ( the scmResult in the BuildResult object
will no longer be used )
3. Group level updates
- update all projects first before building them one by one.
4. Prepare build
- state goes to the ProjectScmRoot; either updated (success) or error
only.
- sets scmResult of project
5. Building
- checks if ProjectScmRoot of the project is in successful state,
otherwise, do not build
- no more scmResult in the build result of a project (it's still there
but no longer being used)
6. Cancelled build
- no build result
- project's state is set to it's previous state
7. UI
- added ProjectScmRoot information
- status icons: check for successful state, cross for error state
- viewing of result: no result for successful state; click the
cross('x') icon to view the error.
8. Notification Mail - configurable notification when scm failed.
Comments, suggestions and/or violent reactions are welcome :)
Thanks,
--
Marica