Trigger a TeamCity build on changes in a git submodule

How to setup TeamCity trigger to start build on changes in git submodule?

Currently you have to update a submodule commit pointer to trigger a build in the main repository, so that TC will register a change in the main repository.

  • Git tags from Laravel app with git-flow
  • Git list of staged files
  • How to prepend the past to a git repository?
  • LibGit2 Commit example
  • Git - Merge and Rebase outputs same number of commits
  • Copy 1 commit from one branch (dev) to another (stable) with clean working dir
  • Update

    The problem is the submodule should be always tracking a branch master. AFAIK this cannot be achieved through git itself. I just would like for the build to overcome git limitation in that matter.

  • How to remove all .pdf files from a git push
  • git: how can i list new files to add them after?
  • Rails - No “Mate” command for .gitignore - Using InstantRails?
  • Git merge returns error code 128
  • How can I track system-specific config files in a repo/project?
  • Can I push/pull directly from my google drive online?
  • 3 Solutions collect form web for “Trigger a TeamCity build on changes in a git submodule”

    This is not a neat solution but is achieves a goal to build a project with the tip of the submodule, and not needing to update submodule by hand. (A hook would probably do to)

    Create a separate build configuration on with the submodule as the main repo, and setup a command line build step to clone a maste-repo, pull/update submodule and push the updated submodule pointer back to the master-repo.

    rm -r master-repo
    git clone git@github.com:xxx/master-repo.git
    cd master-repo
    git status
    git submodule update --init 
    git config -f .gitmodules submodule.submodule-repo.branch master
    cd submodule-repo
    git pull origin master
    git status
    cd ..
    git add submodule-repo
    git commit -m "sub module update"
    git push origin master
    

    I’m new to git so this probably can be optimized.

    It is not possible to do that as TeamCity (and git) cannot know that there is an update. Submodule entry in a repo just points to a commit.

    What would be an update to it? There can be multiple branches and commits from this commit. Only you can decide where the submodule is to be updated to.

    I’ve just been looking at trying to achieve the same thing with TeamCity, but quickly concluded it doesn’t make sense to be doing it. Your TeamCity build should be based on what’s in your master repository, and, as you say, the way GIT submodules work means it’s up to the master repository to update it’s pointer to the new commit in the sub-repository, which will trigger a build.

    Bottom line is, I don’t want TeamCity building something that I can’t recreate from source, i.e. cloning the master repository will not reflect what TeamCity actually built.

    Git Baby is a git and github fan, let's start git clone.