首页 文章

触发一个基于git子模块中的更改的TeamCity构建

提问于
浏览
8

如何设置TeamCity触发器以开始构建git子模块中的更改?

目前,您必须更新子模块提交指针以触发主存储库中的构建,以便TC将在主存储库中注册更改 .

更新

问题是子模块应该始终跟踪分支主机 . AFAIK这不能通过git本身来实现 . 我只是希望构建能够克服git限制 .

3 回答

  • 1

    这不是一个简洁的解决方案,但实现了使用子模块的尖端构建项目的目标,而不需要手动更新子模块 . (钩子可能会这样做)

    使用子模块作为主仓库创建单独的构建配置,并设置命令行构建步骤以克隆maste-repo,pull / update子模块并将更新的子模块指针推回到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
    

    我是git的新手,所以这可能会被优化 .

  • 2

    由于TeamCity(和git)无法知道有更新,因此无法做到这一点 . 回购中的子模块条目只指向提交 .

    它会有什么更新?此提交可以有多个分支和提交 . 只有您可以决定子模块的更新位置 .

  • 1

    我一直在努力尝试与TeamCity达成同样的目标,但很快就认为做这件事没有意义 . 您的TeamCity构建应基于主存储库中的内容,并且正如您所说,GIT子模块的工作方式意味着由主存储库更新它指向子存储库中新提交的指针,这将触发构建 .

    最重要的是,我不希望TeamCity构建我无法从源重新创建的东西,即克隆主存储库不会反映TeamCity实际构建的内容 .

相关问题