ci的视图数据没定义_基于Jenkins、Gitlab、Harbor、Helm和Kubernetes的CI/CD(一)

上节课和大家介绍了Gitlab CI结合Kubernetes进行 CI/CD 的完整过程。这节课结合前面所学的知识点给大家介绍一个完整的示例:使用 Jenkins + Gitlab + Harbor + Helm + Kubernetes 来实现一个完整的 CI/CD 流水线作业。

其实前面的课程中我们就已经学习了 Jenkins Pipeline 与 Kubernetes 的完美结合,我们利用 Kubernetes 来动态运行 Jenkins 的 Slave 节点,可以和好的来解决传统的 Jenkins Slave 浪费大量资源的缺点。之前的示例中我们是将项目放置在 Github 仓库上的,将 Docker 镜像推送到了 Docker Hub,这节课我们来结合我们前面学习的知识点来综合运用下,使用 Jenkins、Gitlab、Harbor、Helm、Kubernetes 来实现一个完整的持续集成和持续部署的流水线作业。

流程

下图是我们当前示例的流程图

71bd27195c5fcd4ef8f80b19cdfd6936.png
  • 1. 开发人员提交代码到 Gitlab 代码仓库
  • 2. 通过 Gitlab 配置的 Jenkins Webhook 触发 Pipeline 自动构建
  • 3. Jenkins 触发构建构建任务,根据 Pipeline 脚本定义分步骤构建
  • 4. 先进行代码静态分析,单元测试
  • 5. 然后进行 Maven 构建(Java 项目)
  • 6. 根据构建结果构建 Docker 镜像
  • 7. 推送 Docker 镜像到 Harbor 仓库
  • 8. 触发更新服务阶段,使用 Helm 安装/更新 Release
  • 9. 查看服务是否更新成功。

项目

本次示例项目是一个完整的基于 Spring Boot、Spring Security、JWT、React 和 Ant Design 构建的一个开源的投票应用,项目地址:https://github.com/callicoder/spring-security-react-ant-design-polls-app。

9d14c8d8741cd4596382f9e7b8406774.png

我们将会在该项目的基础上添加部分代码,并实践 CI/CD 流程。

服务端

首先需要更改的是服务端配置,我们需要将数据库链接的配置更改成环境变量的形式,写死了的话就没办法进行定制了,修改服务端文件src/main/resources/application.properties,将下面的数据库配置部分修改成如下形式:

spring.datasource.url= jdbc:mysql://${DB_HOST:localhost}:${DB_PORT:3306}/${DB_NAME:polling_app}?useSSL=false&serverTimezone=UTC&useLegacyDatetimeCode=falsespring.datasource.username= ${DB_USER:root}spring.datasource.password= ${DB_PASSWORD:root}

当环境变量中有上面的数据配置的时候,就会优先使用环境变量中的值,没有的时候就会用默认的值进行数据库配置。

由于我们要将项目部署到 Kubernetes 集群中去,所以我们需要将服务端进行容器化,所以我们在项目根目录下面添加一个Dockerfile文件进行镜像构建:

FROM openjdk:8-jdk-alpineMAINTAINER cnych ENV LANG en_US.UTF-8ENV LANGUAGE en_US:enENV LC_ALL en_US.UTF-8ENV TZ=Asia/ShanghaiRUN mkdir /appWORKDIR /appCOPY target/polls-0.0.1-SNAPSHOT.jar /app/polls.jarEXPOSE 8080ENTRYPOINT ["java
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值