在 BuildBot 中是否可以有多个源签出步骤?我找不到任何明确的文档,但似乎在 BuildBot 中进行源代码检出也会将当前工作目录更改为检出目录,这意味着不清楚从另一个存储库“去”哪里检出然后运行一个同时使用两者的脚本。
考虑http://buildbot.net/buildbot/docs/0.8.1/BuildFactory.html 中的示例:
从这些步骤来看,似乎执行了 CVS 检出,然后make build运行。那是BuildBot中的两步,很方便。
但是,如果您从命令行执行等效操作,则需要三个步骤:
cvs co $CVSROOT
cd directory_that_was_created
make build
Run Code Online (Sandbox Code Playgroud)
该cd directory_that_was_created步骤在 BuildBot 中发生在哪里?
但更重要的是,如果我想要两个source.CVS(嗯,真的source.Git)步骤怎么办?运行第二步后我在哪个目录?第二个 repo 是否最终位于第一个 repo 的子目录中?
使用 Git,我似乎可以将一个模块作为另一个模块的子模块,以确保它们都在一个步骤中被检出,但如果可能的话,我宁愿不这样做。
好吧,我明白了。我没有意识到每个步骤都有一个“workdir”的概念,它指示“工作”发生的位置。所有步骤的默认目录workdir是名为 的目录build。
在http://buildbot.net/buildbot/docs/latest/manual/cfg-buildsteps.html上的Source Checkout -> CommonParameters -> workdir下,它确实承认源步骤是特殊的“因为它们在外部执行一些操作” workdir(就像创建workdir本身一样)。”
这解释了为什么没有cd与上面示例中的命令相对应的明确步骤。为了解决我的问题,我创建了两个Git步骤,每个步骤都有自己的workdir价值。接下来是ShellCommand调用适当目录的后续步骤,知道这两个workdir目录将是彼此的同级目录。