gitlab-ci工作流程图:
调度机制:
A:打上tag标签,就会调度到指定节点
B:未打上标签,会有公平调度算法
Executor
Docker
将Executor连接到Docker Daemon,并在一个单独容器中跑每一次的构建过程,并使用在.gitlab-ci.yml文件中定义的镜像,Docker Executor具体是通过config.toml文件来配置的。
Kuberentes
让Runner连接到连Kubernetes API Server,为每一个Job动态创建一个Pod来执行GitLab CI构建过程。
且此Pod除了包含固有的Infra Container外,还一定会包含Build Container和Help Container,另外,可能包含Service Container。简单而言,Build Container用于执行.gitlab-ci.yml文件中在stage标签中定义的脚本。Help Container则用于辅助Build Container的执行构建工作,具体是负责git和certificate store相关的操作。最后Service Container的用途则对应着.gitlab-ci.yml文件中定义的service标签,即一个辅助容器,为Build Container提供服务,其基本实现原理是Docker Link。
最后,每一个Job都会包含四个阶段(Job构建过程的生命周期):Prepare、Pre-Build、Build和Post-Build。这几个阶段的具体作用,我在这里就不阐述了,比较简单,也可以在源码中找到。