- Kubernetes微服务实战
- (印)吉吉·赛凡
- 434字
- 2020-08-27 06:09:11
4.5.3 理解构建脚本
你可以到https://github.com/the-gigi/delinkcious/blob/master/build.sh下载build.sh构建脚本。
让我们一点一点地研究下脚本的内容,因为这里有很多最佳实践值得学习。首先,如果你知道脚本的具体位置,最好添加一行shebang来指明执行脚本的二进制代码的路径。如果你尝试编写可在不同平台上运行的跨平台脚本,则可能需要依赖路径变量或者其他技巧。通过命令set-eo pipefail设定,如果发生任何问题脚本将立即退出(即使处在流水线中)。
强烈建议将这些内容用于生产环境:
![](https://epubservercos.yuewen.com/0B378C/17517093206689306/epubprivate/OEBPS/Images/067-i.jpg?sign=1739475872-FAwfISNsBWM6a0nXdhxb6FuacCIHQkEI-0-3cd8ff9cc8b77dc71a2e04589a604862)
接下来的几行设置了目录的一些变量和Docker镜像的标签。这里有两个标签:STABLE_TAB和TAG。STABLE_TAG标签包含主要版本和次要版本,并且不会在每次构建中都更改。TAG标签包含CircleCI提供的CIRCLE_BUILD_NUM,并且在每次构建中都会递增,这意味着TAG始终是唯一的。上述方法被认为是对镜像进行标记和版本控制的最佳实践:
![](https://epubservercos.yuewen.com/0B378C/17517093206689306/epubprivate/OEBPS/Images/067-2-i.jpg?sign=1739475872-AMU6mMkC1rGSVSROF72aCF3YLw97QMaE-0-e02b91a2339a50e440bd8d54ebf65c9b)
接下来命令切换到svc目录,这是所有服务的父目录,然后使用在CircleCI项目中设置的环境变量登录DockerHub。
![](https://epubservercos.yuewen.com/0B378C/17517093206689306/epubprivate/OEBPS/Images/067-3-i.jpg?sign=1739475872-lJKDcwyJXkgDjBruwohrlZehi6vACvF2-0-1343c6fa914d9e0db6777ab78da149c8)
现在,我们进入关键环节。该构建脚本会遍历svc目录的子目录以查找Dockerfile。如果找到Dockerfile,它将构建一个镜像,并使用服务名以及TAG和STABLE_TAG的组合对其进行标记,最后将镜像推送到仓库:
![](https://epubservercos.yuewen.com/0B378C/17517093206689306/epubprivate/OEBPS/Images/067-4-i.jpg?sign=1739475872-jcdSia30kBqe9NFMrJIWAeUey7rwzOkN-0-90ba056e3c8d30726a6914d15580e33a)