在过去的两周中,我一直使用GitLab.com上的公共共享运行器建立第一个管道,用于私有存储库中的php项目。此时,管道非常简单,定义了两个阶段:
stages:
- test
- deploy
test 阶段运行composer update -o
来构建项目依赖项,连接到远程数据库服务器,并运行CodeCeption测试框架来测试构建并生成代码覆盖率报告。
部署阶段运行composer update --no-dev -o
以仅依赖生产依赖关系来重建项目,并使用rsync将文件推送到生产Web服务器。
这一切现在都可以进行,但是对于每个阶段,它都运行拉动docker映像,安装依赖项以及从git中提取项目的整个过程。只需一次加载docker映像和项目,然后使用相同的持久构建实例一个接一个地运行测试和部署阶段,似乎会更有效率。
我意识到很多时候您确实想为每个阶段创建一个新的实例,但是对于我的项目,我觉得这对于时间和服务器资源来说效率很低。
我可以将所有内容配置为在同一阶段运行,这将消除冗余的docker映像进程,但是我将失去GitLab中的管道功能,您可以在其中查看哪些阶段失败,并使以后的阶段取决于之前的那些。
从我对文档的审查和几个相关的问题来看,这似乎可能与该流程的工作架构有关,其中工作彼此独立(甚至可以由不同的执行者处理),并且在管道上分阶段进行。
我所拥有的肯定是可行的(如果有点慢),但是我想在这里问这个问题,以防万一我丢失了一些东西,可以使该过程更有效,同时仍保留CI管道功能。