Hi,

This is probably a question for Jenkins users and developers (I'm only
subscribed to the users list so the dev one might bounce).

Our software is structured as a number of separate git repos which are
collected together under a super project.

Our legacy build system runs through a few steps:
 1. prep
   - checkout 'build' branch of the super project and fetch the tip of
each submodule (git checkout build && git submodule foreach 'git
pull')
   - determine if anything new is in any of the submodules (git diff-tree HEAD)
   - if there are any changes create a new commit in the build branch
ready for the next step (git commit -a -m"<summary generated by more
git magic>" && git push)
 2. build (run for multiple targets on separate build machines)
   - get the code setup in the prep step (git checkout build && git
pull && git submodule update)
   - do the build (make ....)
   - results for all targets are aggregated for the next step
 3a. merge (on success)
   - the 'build' branch of the project is merged to 'master' (git
checkout master && git merge build && git tag "$BUILDID" && git push
--tags)
 3b. blame (on failure)
   - figure out the authors of the commits to the submodules and email
them that they've broken the build (some git magic involving git
diff-tree on the project an git log/rev-list on the affected
submodules).

We don't generally commit directly to the super project. Instead we
commit to individual repositories and want the build system to make
sure that the 'master' branch of the super project is always a stable
baseline.

We'd like to be able to use Jenkins to drive this process but we're
running into a few problems that maybe someone here can help solve.
The problems are all to do with that submodules aren't descended into
when polling the SCM and when getting the list of changes (which I
presume is the same for listing changes and for sending emails on
failure). The first problem can be worked around using a ScriptTrigger
and doing the polling manually. I haven't figured out a solution for
the second problem. Possibly some kind of script run on a failed build
assuming I'm able to get at the tag/commit of the last good build and
send the email manually.

I'd be really keen to help expand the knowledge of submodules within
the git plugin so that I polling the SCM will work and so that changes
from submodules could be included in the build notifications. I'm also
aware that this is not the only work-flow that git submodules can
support so there would need to be some configuration to enable the
kind of behaviour we're interested in.

Thanks,
Chris

Reply via email to