![Kubernetes微服务实战](https://wfqqreader-1252317822.image.myqcloud.com/cover/59/32436059/b_32436059.jpg)
上QQ阅读APP看书,第一时间看更新
4.5.2 配置CI流水线
CircleCI通过特定位置、特定名称的单个YAML文件进行配置,即文件<root direc-tory>/.circleci/config.yaml:
![](https://epubservercos.yuewen.com/0B378C/17517093206689306/epubprivate/OEBPS/Images/065-i.jpg?sign=1739577071-DWj4vcRRvg5sQa5uhCRaOyROd77iiA19-0-f6f045dc243a12a25f4e87ee71723b3c)
让我们拆开来看看每个部分的含义。第一部分指定了构建作业,下面是必要的Docker镜像(golang和postgres)及其环境。然后,我们指定了工作目录,构建命令build应该在这里执行:
![](https://epubservercos.yuewen.com/0B378C/17517093206689306/epubprivate/OEBPS/Images/065-2-i.jpg?sign=1739577071-E1GKObm6y9LvPWoDyNF5tH41bF4Slc26-0-6d897f1891df55778ce1585d189fb0d4)
接下来是构建步骤。第一步只是代码检出checkout,在CircleCI UI中,我将项目与Delinkcious GitHub代码仓库关联,以便它知道从哪里检出。如果不是公开的代码仓库,那么你还需要提供访问令牌。第二步是运行命令run,该命令将获取Delinkcious的所有Go依赖项:
![](https://epubservercos.yuewen.com/0B378C/17517093206689306/epubprivate/OEBPS/Images/066-i.jpg?sign=1739577071-okPCrHUEJfTVVwkGLiw5fbVSYEIp7RD2-0-9083482f791d3bb59658d4198de4deee)
必须在go get命令中明确地说明以获取ginkgo框架和gomega库,因为它们是使用Golang点记法导入的,这使得它们在go get./...中不可见。
一旦解决了依赖关系,就可以开始运行测试,示例使用的是ginkgo测试框架:
![](https://epubservercos.yuewen.com/0B378C/17517093206689306/epubprivate/OEBPS/Images/066-2-i.jpg?sign=1739577071-IRleURr10aa2ymK8yXVMwTVWlkT8OxGo-0-2340b7645f5551c26a426b9965fa4d09)
接着是构建和推送Docker镜像。因为它需要访问Docker守护程序,所以需要通过setup_remote_docker步骤进行一些特殊设置。docker_layer_caching选项用于通过重用以前下载好的层来提高效率和速度。实际的构建和推送操作由build.sh脚本处理,我们将在下一小节中对其进行介绍。注意,这里通过chmod+x来确保脚本是可执行的:
![](https://epubservercos.yuewen.com/0B378C/17517093206689306/epubprivate/OEBPS/Images/066-3-i.jpg?sign=1739577071-qzy8dORcKMiQXGFdnUIdG4t3lKlscRJY-0-d045ed19f22691015ac43d67ec21aeb9)
示例仅仅浅尝辄止,CircleCI还有更多实用的功能,包括可重用配置、工作流、触发器和工件生成等。