- 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=1738860843-LqiPZBJWDtASo6ueDspO3iRgTj8NzKGi-0-5093c72eaa64f02de555125d1b68798c)
接下来的几行设置了目录的一些变量和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=1738860843-DZGGLWQBh3e9djbnXKIi1tTFI8mZyc7b-0-05e0e40482b5695e073f2faf646dd0e5)
接下来命令切换到svc目录,这是所有服务的父目录,然后使用在CircleCI项目中设置的环境变量登录DockerHub。
![](https://epubservercos.yuewen.com/0B378C/17517093206689306/epubprivate/OEBPS/Images/067-3-i.jpg?sign=1738860843-SHGrNRsPzKNmyJXgiNA5gdbqUlCjFc6Z-0-863b1d5c24f1a492741800ca9f339199)
现在,我们进入关键环节。该构建脚本会遍历svc目录的子目录以查找Dockerfile。如果找到Dockerfile,它将构建一个镜像,并使用服务名以及TAG和STABLE_TAG的组合对其进行标记,最后将镜像推送到仓库:
![](https://epubservercos.yuewen.com/0B378C/17517093206689306/epubprivate/OEBPS/Images/067-4-i.jpg?sign=1738860843-7rsOTnnoqaerwuI6r59NDQ1R50PkV0vT-0-0296418374cc76ff33525f84e0789cd5)