GitLab CI 使用

    Rainbond 本身默认集成了 CI/CD 的整套流程,用户只需提供源代码,后续构建、运行完全交给 Rainbond 处理,整个过程是由 Rainbond 定义的,无需用户干预。这样有利也有弊,利就是简化用户的操作和无需学习 CI/CD 相关知识;弊是用户无法在 CI/CD 过程中自定义,比如想集成代码检测或运行个脚本,这在 Rainbond 的源码构建流程中是不可自定义的。

    本文给大家讲述如何使用 GitLab CI/CD 构建、测试、部署 Spring Boot 应用,将产物运行在 Rainbond 上。

    使用 GitLab CI 需要在仓库根目录下创建 文件。在这个文件中,你可以定义需要运行的编译、测试、部署脚本。

    在添加了 .gitlab-ci.yml 文件后,当推送代码时,GitLab Runner 自动执行你定义的 Pipeline,并在 GitLab CI 页面上展示 CI 过程以及结果。

    GitLab CI 的基本流程如下:

    1. 开发人员推送代码
    2. 触发 GitLab CI 启动
    3. runner 执行预定义脚本

    GitLab CI/CD 快速开始

    通过开源应用商店一键部署 GitLab 和 Runner ,新增 -> 基于应用商店创建组件 -> 在开源应用商店中搜索 GitLab 依次安装 GitLab 和 Runner 到指定应用中。

    GitLab CI 使用 - 图2

    在 Rainbond v5.8 版本之前,Rainbond 对 Runner 类型的组件支持的并不是很好。因为 Runner 若以容器的形式去运行的话,本身它需要去挂载宿主机的docker.sock 文件,使它可以调度宿主机的 docker 环境,创建容器执行任务。在 Rainbond v5.8 版本中,支持修改组件的 YAML,就可以自定义 Volumes 并挂载本地的 docker.sock。

    注册 Runner 到 GitLab :

    1. 进入编排模式,将 runner 连接到 GitLab 并更新 runner 组件。(如提示 GitLab 未开启对内端口,则选择 80 端口)

    2. 首先访问 GitLab,Menu -> Admin -> Overview -> Runners -> Register an instance runner -> 复制 Registration token。

    3. 进入 runner 组件内,点击右上角 web 终端进入,执行以下命令进行注册,<token> 换成上一步复制的 Registration token。

    参数说明

    1. 注册完成后就可以在 GitLab 页面中看到 online 的 runner

    GitLab CI 使用 - 图4

    整个流程可以分为:

    1. 开发人员提交代码到GitLab仓库。
    2. 触发GitLab 流水线创建,Runner 执行 .gitlab-ci.yml 定义的 stages。
    3. 将制作好的镜像推送到已有的镜像仓库,供后续的Deploy流程使用。
    4. 通过Rainbond自定义API的方法,触发平台组件的自动构建,进入Deploy阶段。

    前提:

    • 已有 Rainbond 环境
    • 准备镜像仓库,本文使用的DockerHub
    • 本文所使用到代码项目为 Java-Maven-Demo

    2.将示例代码导入到 GitLab中。

    3.编写 .gitlab-ci.yml 文件:

    在项目根目录下创建 .gitlab-ci.yml 内容如下:

    1. stages:
    2. - test
    3. - package
    4. - push
    5. # 定义基础镜像
    6. image: maven:3.6.3-jdk-8
    7. job-test:
    8. stage: test
    9. - newdocker
    10. script:
    11. - echo "===============开始执行代码测试任务==============="
    12. - mvn test
    13. job-package:
    14. stage: package
    15. tags:
    16. - newdocker
    17. script:
    18. - echo "===============开始执行打包任务==============="
    19. - ls
    20. - cp Dockerfile target/Dockerfile
    21. cache:
    22. key: devops
    23. - target/
    24. job-push:
    25. stage: push
    26. image: docker:dind
    27. cache:
    28. key: devops
    29. paths:
    30. - target/
    31. tags:
    32. - newdocker
    33. script:
    34. - docker login -u ${DOCKER_USERNAME} -p ${DOCKER_PASSWORD}
    35. - docker build -t ${IMAGE_DOMAIN}/java-maven:latest .
    36. - docker push ${IMAGE_DOMAIN}/java-maven:latest
    37. after_script:

    after_script 是在推送镜像完成后执行,通过 Rainbond API 构建组件,Rainbond 会获取最新镜像构建运行。<RAINBOND_SECRET> 可在组件 -> 构建源 -> 自动构建中看到。详情可参阅文档

    4.提交代码测试自动构建

    修改代码并提交,提交后可在项目的 CI/CD -> Jobs 可以看到正在执行的以及执行完成的任务详情。

    5.查看 Rainbond 组件构建

    可以在组件的操作记录中看到自动构建信息。