
上QQ阅读APP看书,第一时间看更新
4.5.2 配置CI流水线
CircleCI通过特定位置、特定名称的单个YAML文件进行配置,即文件<root direc-tory>/.circleci/config.yaml:

让我们拆开来看看每个部分的含义。第一部分指定了构建作业,下面是必要的Docker镜像(golang和postgres)及其环境。然后,我们指定了工作目录,构建命令build应该在这里执行:

接下来是构建步骤。第一步只是代码检出checkout,在CircleCI UI中,我将项目与Delinkcious GitHub代码仓库关联,以便它知道从哪里检出。如果不是公开的代码仓库,那么你还需要提供访问令牌。第二步是运行命令run,该命令将获取Delinkcious的所有Go依赖项:

必须在go get命令中明确地说明以获取ginkgo框架和gomega库,因为它们是使用Golang点记法导入的,这使得它们在go get./...中不可见。
一旦解决了依赖关系,就可以开始运行测试,示例使用的是ginkgo测试框架:

接着是构建和推送Docker镜像。因为它需要访问Docker守护程序,所以需要通过setup_remote_docker步骤进行一些特殊设置。docker_layer_caching选项用于通过重用以前下载好的层来提高效率和速度。实际的构建和推送操作由build.sh脚本处理,我们将在下一小节中对其进行介绍。注意,这里通过chmod+x来确保脚本是可执行的:

示例仅仅浅尝辄止,CircleCI还有更多实用的功能,包括可重用配置、工作流、触发器和工件生成等。