Java Spring Boot 项目脚手架的快速创建与 Jenkins CI 流水线的自动化配置

    本文将基于部署好 GitLab + Jenkins + Harbor 工具链,继续以 Java Spring Boot 项目为例,演示如何通过 DevStream 快速创建 Java Spring Boot 项目脚手架,同时在 Jenkins 上自动创建对应的 Pipeline 实现 Java Spring Boot 项目的 CI 流程。

    本文最终将实现的工具链相关工作流如下图所示:

    GitLab + Jenkins + Harbor Toolchain Workflow

    这里的工作流主要是:

    1. DevStream 根据你给定配置,选择默认项目模板或者用户自定义模板创建项目脚手架;
    2. 最终 DevStream 完成全部配置后,如果你提交代码到 DevStream 为你创建的代码库中,GitLab 便会出发 Jenkins 执行相应的 CI 流程,Jenkins 上的流水线运行结果也会实时回显到 GitLab 上,并且这个过程中构建出来的容器镜像会被自动推送到 Harbor 上。

    2、安装 dtm

    你可以参考完成 dtm 的下载与安装。

    DevStream 可以简单地以 local 作为 Backend,也就是将状态保存到本地文件。如果你在本地测试,可以选择使用这种方式; 而企业 On premise 环境部署可能需要使用 k8s Backend 将状态通过 存入 etcd,两种方式配置分别如下:

    DevStream with ‘local’ BackendDevStream with ‘k8s’ Backend

    local Backend

    k8s Backend

    1. config:
    2. state:
    3. backend: k8s
    4. options:
    5. namespace: devstream
    6. configmap: state

    下文将以 local Backend 为例演示。

    在编写应用相关配置项之前,你需要先定义一些变量,这会让后续的配置和维护工作变得更加简单:

    config-apps.yaml

    1. config:
    2. backend: local
    3. stateFile: devstream.state
    4. vars:
    5. appName: myapp
    6. gitlabURL: http://gitlab.example.com:30080
    7. jenkinsURL: http://jenkins.example.com
    8. harborURL: http://harbor.example.com

    你可以根据自己的需要,选择性自定义上述 vars 配置的值,这些变量内容主要是域名等可修改配置项。

    继续往里面追加应用相关配置,你的配置文件会扩充成这样:

    config-apps.yaml

    4、让配置生效

    你还需要几个简单的步骤来让上述配置生效。

    你可以参考下图方式在 GitLab 上创建一个 token,这个 token 将给 DevStream 必要的权限用来在 GitLab 上创建项目脚手架等:

    GitLab token

    Generate GitLab token

    然后这个 token 需要被设置到环境变量里:

    环境变量配置

    1. export GITLAB_TOKEN=YOUR_GITLAB_TOKEN

    同时需要将 Harbor 密码配置到环境变量里:

    环境变量配置

    1. export IMAGE_REPO_PASSWORD=Harbor12345

    此外由于 DevStream 需要调用 Jenkins 的 API 来帮你创建流水线,所以你还需要告诉 DevStream Jenkins 的密码:

    环境变量配置

    你可以将这个配置文件放到服务器上同一个目录,比如 ~/devstream-test/,然后在该目录下执行:

    4.2、开始执行

    首先你需要执行初始化命令:

    初始化

    1. dtm init -f config-apps.yaml

    这时候 DevStream 会帮你下载 jenkins-pipelinerepo-scaffolding 两个插件,最终将有这两个插件来帮你完成代码库脚手架的创建和 Jenkins 流水线的配置。

    接着你可以继续执行如下命令

    Bash

    1. dtm apply -f config-apps.yaml -y

    执行日志

    这时候你可以在 GitLab 上看到 dtm 为你准备的 Java Spring Boot 项目脚手架:

    Repo scaffolding

    接着你可以登录 Jenkins,查看 dtm 为你创建的 Pipeline:

    Jenkins Pipeline

    Jenkins pipeline

    这个 Pipeline 会自动执行一次,执行完成后回到 GitLab,你可以看到 Jenkins 回写的 Pipeline 状态:

    GitLab Status

    后面每当 GitLab 上这个 repo 发生 Push 或者 Merge 事件的时候,就会触发 Jenkins 上的 Pipeline 运行。

    当然,在 Harbor 上你可以找到 CI 流程构建出来的容器镜像:

    GitLab Status

    Image in Harbor

    6、环境清理

    你可以通过如下命令清理环境:

    环境清理命令