![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=1738868437-TGnsPNb4GcQ9MGEMAnmCDfBzFN8mqBop-0-5bb9cbcc5c884e0cf5d0bf20ddc019fd)
让我们拆开来看看每个部分的含义。第一部分指定了构建作业,下面是必要的Docker镜像(golang和postgres)及其环境。然后,我们指定了工作目录,构建命令build应该在这里执行:
![](https://epubservercos.yuewen.com/0B378C/17517093206689306/epubprivate/OEBPS/Images/065-2-i.jpg?sign=1738868437-e7OjrWFJvXMNHKZRNVwi3FX2xzyOdN5P-0-ae8e35cb9a9d40da5988a6441c8ab945)
接下来是构建步骤。第一步只是代码检出checkout,在CircleCI UI中,我将项目与Delinkcious GitHub代码仓库关联,以便它知道从哪里检出。如果不是公开的代码仓库,那么你还需要提供访问令牌。第二步是运行命令run,该命令将获取Delinkcious的所有Go依赖项:
![](https://epubservercos.yuewen.com/0B378C/17517093206689306/epubprivate/OEBPS/Images/066-i.jpg?sign=1738868437-YO48Z5Eqayi9Y6N1RSFRSTjOYHS7Wy88-0-3748576b7eca065156f892fdef6d8436)
必须在go get命令中明确地说明以获取ginkgo框架和gomega库,因为它们是使用Golang点记法导入的,这使得它们在go get./...中不可见。
一旦解决了依赖关系,就可以开始运行测试,示例使用的是ginkgo测试框架:
![](https://epubservercos.yuewen.com/0B378C/17517093206689306/epubprivate/OEBPS/Images/066-2-i.jpg?sign=1738868437-1dlBjGTQnMXQDT0r6dPMYwD7mctfiMlo-0-50236436561d1d9a4055a1c643462a0d)
接着是构建和推送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=1738868437-7H8nt3odxPoVm6eeKks8340nw0xRq26i-0-7759cd79e8fb55b451297906da5dfc7e)
示例仅仅浅尝辄止,CircleCI还有更多实用的功能,包括可重用配置、工作流、触发器和工件生成等。