背景

为了进一步熟悉和掌握devops相关理念和工具在GitHub Action上的具体实现,通过实践一个SpringBoot项目的编译、打包、编译docker镜像、部署,了解GitHub Action实现CI/CD的相关技术细节

ji yu

CI流程

下拉代码后,会设置maven的编译环境,首先build出jar包,然后将jar包打入docker image

密钥管理

pipeline中需要通过密钥登陆第三方平台(DockerHub),如何安全的保存和使用?

步骤:

制品管理(artifact)

制品是docker image,存放在DockerHub中.

CD流程

因为CI过程生成的artifact是一个docker image, 部署目标是k8s集群,可以通过k8s的编排对象(deployment、statefulset、service等)来引用最新的docker image,部署时直接用kubectl deploy即可。 进一步为了方便管理这些k8s编排对象,可以将其放在git仓库中统一管理、跟踪,这也会GitOps的实践理念。(注:本次实践因为缺少k8s环境,暂时没有实践这块,后续再补充)

结果验证

DockerHub 上检查是否可以看到build好的image

image.png

完整pipeline参考

https://github.com/jamesWsg/springboot-devops/blob/main/.github/workflows/maven-publish.yml