首页 > 技术文章 > Jenkins BlueOcean 多分支 部署 Kubernetes 应用

imirsh 2020-07-17 22:29 原文

在实际的项⽬ 中,往往⼀个代码仓库都会有很多分⽀的,⽐如开发、测试、线上这些分⽀都是分开的,⼀般情况下 开发或者测试的分⽀我们希望提交代码后就直接进⾏ CI/CD 操作,⽽线上的话最好增加⼀个⼈⼯⼲预 的步骤,这就需要 Jenkins 对代码仓库有多分⽀的⽀持。这里我们使用 BlueOcean 来完成此处的 CICD 。

插件安装

登录 Jenkins Web UI -> 点击左侧的 Manage Jenkins -> Manage Plugins -> Available -> 搜索查找 BlueOcean -> 点击下载安装并重启

创建新 pipeline

安装完成后,我们可以在 Jenkins Web UI ⾸⻚左侧看到会多⼀个 Open Blue Ocean 的⼊⼝,我们点 击就可以打开

点击开始创建⼀个新的 Pipeline,我们可以看到可以选择 Git、Bitbucket、GitHub,我们这⾥ 选择 GitHub,

可以看到这⾥需要⼀个访问我们 GitHub 仓库权限的 token,在 GitHub 的仓库中创建⼀个 Personal access token:

将⽣成的 token 填⼊下⾯的创建 Pipeline 的流程中,然后我们就有权限选择⾃⼰的仓库,包括下⾯需要构建的仓库,⽐如我们这⾥需要构建的是 jenkins-demo 这个仓库,然后创建 Pipeline 即可:

Blue Ocean 会⾃动扫描仓库中的每个分⽀,会为根⽂件夹中包含Jenkinsfile的每个分⽀创建⼀个 Pipeline,⽐如我们这⾥有 master 和 dev 两个分⽀,并且两个分⽀下⾯都有 Jenkinsfile ⽂件,所以创建完成后会⽣成两个 Pipeline。

两个文件中 k8s.yaml 文件中 namespace 不一样,用来区分不同的分支

构建结果

~]# kubectl  get pod -n default  -o wide # master 分支部署到 default 分支
NAME                                      READY   STATUS    RESTARTS   AGE    IP             NODE    NOMINATED NODE   READINESS GATES
mvnweb-demo-8f8d69455-l4s4c               1/1     Running   0          5m5s   10.244.1.3     node2   <none>           <none>
~]# kubectl  get pod -n dev -o wide
NAME                                   READY   STATUS    RESTARTS   AGE     IP           NODE    NOMINATED NODE   READINESS GATES
mvnweb-demo-8ef7d50-578945f7fb-cr6kv   1/1     Running   0          5m40s   10.244.1.2   node2   <none>           <none>

推荐阅读