通过流水线部署

着手源码部署前,请确认已完成 项目和应用创建

tip 提示

假设新建项目名为 erda-test,新建应用名为 java-demo。下文 Git 仓库地址将涉及这两个名称。

准备示范代码

示范代码是一个基于 Spring Boot Web Service 的简单 Web 服务,代码托管于 GitHub

tip 提示

Erda 平台上可部署运行任意语言、任意框架开发的代码,并不局限于 Java、Spring Boot 等。

下载示范代码至本地

  1. git clone https://github.com/bzdgn/docker-spring-boot-java-web-service-example.git

推送示范代码至平台

平台基于标准的 Git 协议内置 Git 代码仓库,您无需依赖于外部仓库(例如 GitLab 等)即可完成从源码开发到部署的全流程。

进入 我的应用 > 选择应用 > 代码 > 仓库地址,查看平台远程仓库服务器地址。

  1. git remote add erda http://dice.dev.terminus.io/wb/erda-test/java-demo
  2. git push -u erda --all
  3. git push -u erda --tags

完成代码推送后,即可在代码仓库中查看代码信息。

通过流水线部署 - 图1

定义流水线

为该示范代码工程添加平台配置文件 pipeline.yml 和 dice.yml。

pipeline.yml

pipeline.yml 是描述从代码编译构建到应用部署的流水线配置文件,一般可设为 4 个 Stage,按照书写顺序依次执行:

  1. 拉取 Git 源码。
  2. 基于源码编译、构建,制作 Docker 镜像。
  3. 生成版本产物。
  4. 基于版本产物完成部署。

4 个 Stage 可分别以下列 Action 执行:

  1. Git-Checkout
  2. Java
  3. Release
  4. Erda

tip 提示

此处列举的 4 个 Stage 仅为基本配置,您可根据实际需求设置更多的 Stage,例如单元测试等。

此外,Stage 和 Action 并非一对一关系,一个 Stage 中可设置多个 Action 并行执行。

该示例工程对应的 pipeline.yml 参考如下,更多信息请参见 pipeline.yml

  1. version: "1.1"
  2. stages:
  3. - stage:
  4. - git-checkout:
  5. - stage:
  6. - java:
  7. alias: java-demo
  8. # 缓存对应目录,下次构建就可以加速
  9. caches:
  10. - path: /root/.m2/repository
  11. params:
  12. build_type: maven
  13. #打包时的工作目录,此路径一般为根 pom.xml 的路径。
  14. # ${git-checkout} 表示引用上一个 stage 流程里的输出结果,如有别名则使用别名表示
  15. workdir: ${git-checkout}
  16. # 打包产物,一般为 jar,填写相较于 workdir 的相对路径。文件必须存在,否则将会出错。
  17. target: ./target/docker-java-app-example.jar
  18. # 运行 target(如 jar)所需的容器类型,比如这里我们打包的结果是 spring-boot 的 fat jar,故使用 spring-boot container
  19. container_type: spring-boot
  20. - stage:
  21. - release:
  22. params:
  23. dice_yml: ${git-checkout}/erda.yml
  24. image:
  25. java-demo: ${java-demo:OUTPUT:image}
  26. - stage:
  27. - dice:
  28. params:
  29. release_id: ${release:OUTPUT:releaseID}

dice.yml

dice.yml 配置文件用于描述一个应用的服务架构、对 CPU 和内存等资源的配置、服务插件的依赖关系以及发布形式。

该示例工程对应的 dice.yml 参考如下,更多信息请参见 dice.yml

  1. version: "2.0"
  2. services:
  3. java-demo:
  4. ports:
  5. - port: 8080
  6. expose: true
  7. resources:
  8. cpu: 0.2
  9. mem: 512
  10. deployments:
  11. replicas: 1

提交文件

将新增的两个 YAML 文件提交至平台的代码仓库。

  1. git add .
  2. git commit -m "add pipeline.yml and dice.yml"
  3. git push erda feature/demo

tip 提示

此处提交的远程仓库分支前缀为 feature/*,分支名称将直接决定应用部署的环境。

执行流水线

  1. 进入 流水线 页面,选择 feature/demo 分支创建新的流水线任务。

  2. 完成流水线任务分析后,流水线处于待执行状态。点击右上角执行图标,开始流水线构建。

  3. 流水线任务执行过程中,可实时查看流水线各步骤的执行状态,点击日志可查看对应节点执行状况的日志信息。

通过流水线部署 - 图2

查看部署结果

通过流水线构建源码并完成部署后,可在环境部署查看已成功部署的应用实例 Runtime。进入 Runtime 可进一步进行 应用管理 相关操作,例如配置域名、服务实例扩缩容等。

通过流水线部署项目/应用制品

项目/应用制品可通过流水线触发部署,pipeline.yml 示例参考如下,更多信息请参见 pipeline.yml

tip 提示 release_name 为制品版本名称。

  • 项目制品部署

    1. version: "1.1"
    2. stages:
    3. - stage:
    4. - dice:
    5. params:
    6. release_name: 1.0.0
    7. type: project
  • 应用制品部署

    1. version: "1.1"
    2. stages:
    3. - stage:
    4. - dice:
    5. params:
    6. release_name: 1.0+20220221201012
    7. application_name: java-demo
    8. type: application

触发流水线后,可前往 应用中心 > 环境部署 查看部署详情。

跨集群部署

在流水线文件中 Relese Action 部分的 params 添加 cross_cluster: "true",则流水线生成的制品可跨集群部署。

通过流水线部署 - 图3