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