我正在尝试找出将大量CI工作分解为可行细分的最佳方法。
makefile
了解依赖关系以及何时需要构建什么。并非每次提交都需要运行所有可能的作业。使用-j
运行多个作业即使在单台机器上也可以提高结果的速度,但是因为它可以一次计算出所有内容,所以无法按运行者分解整个项目。makefile
再次理解了这一点,可以用来生成需要运行的作业列表。我有六名参赛者,所以我可以将“作品”的总运行时间减少到不到3天。显然,这是理想的结果。
我不知道如何使用Gitlab-CI配置来拆分作业。我可以创建按操作分组的新make目标,因此我可以在整个源文件集中进行10个作业,每个作业运行10个作业,但是事实证明,使用运行程序效率很低。它将运行器束缚数天以阻止其他工作,如果任何一项任务失败,则批量运行将失败,并且在比其他运行器更快或更慢的运行器之间无法很好地实现负载平衡。
由于文件集不断扩展,因此对每个源文件的作业进行硬编码似乎没有意义。有没有一种方法可以设置YAML配置,以便每个源文件每个动作生成1个作业?我真的不希望在每次提交时生成4550个工作,只是偶尔需要它们。通常只影响两个来源,因此理想的做法是先运行作业以列出要运行的作业。