# 通过流水线部署
着手源码部署前,请确认已完成 项目和应用创建。
提示
假设新建项目名为 erda-test,新建应用名为 java-demo。下文 Git 仓库地址将涉及这两个名称。
# 准备示范代码
示范代码是一个基于 Spring Boot Web Service 的简单 Web 服务,代码托管于 GitHub (opens new window)。
提示
Erda 平台上可部署运行任意语言、任意框架开发的代码,并不局限于 Java、Spring Boot 等。
# 下载示范代码至本地
git clone https://github.com/bzdgn/docker-spring-boot-java-web-service-example.git
# 推送示范代码至平台
平台基于标准的 Git 协议内置 Git 代码仓库,您无需依赖于外部仓库(例如 GitLab 等)即可完成从源码开发到部署的全流程。
进入 我的应用 > 选择应用 > 代码 > 仓库地址,查看平台远程仓库服务器地址。
git remote add erda http://dice.dev.terminus.io/wb/erda-test/java-demo
git push -u erda --all
git push -u erda --tags
完成代码推送后,即可在代码仓库中查看代码信息。
# 定义流水线
为该示范代码工程添加平台配置文件 pipeline.yml 和 dice.yml。
# pipeline.yml
pipeline.yml 是描述从代码编译构建到应用部署的流水线配置文件,一般可设为 4 个 Stage,按照书写顺序依次执行:
- 拉取 Git 源码。
- 基于源码编译、构建,制作 Docker 镜像。
- 生成版本产物。
- 基于版本产物完成部署。
4 个 Stage 可分别以下列 Action 执行:
- Git-Checkout (opens new window)
- Java (opens new window)
- Release (opens new window)
- Erda (opens new window)
提示
此处列举的 4 个 Stage 仅为基本配置,您可根据实际需求设置更多的 Stage,例如单元测试等。
此外,Stage 和 Action 并非一对一关系,一个 Stage 中可设置多个 Action 并行执行。
该示例工程对应的 pipeline.yml 参考如下,更多信息请参见 pipeline.yml。
version: "1.1"
stages:
- stage:
- git-checkout:
- stage:
- java:
alias: java-demo
# 缓存对应目录,下次构建就可以加速
caches:
- path: /root/.m2/repository
params:
build_type: maven
#打包时的工作目录,此路径一般为根 pom.xml 的路径。
# ${git-checkout} 表示引用上一个 stage 流程里的输出结果,如有别名则使用别名表示
workdir: ${git-checkout}
# 打包产物,一般为 jar,填写相较于 workdir 的相对路径。文件必须存在,否则将会出错。
target: ./target/docker-java-app-example.jar
# 运行 target(如 jar)所需的容器类型,比如这里我们打包的结果是 spring-boot 的 fat jar,故使用 spring-boot container
container_type: spring-boot
- stage:
- release:
params:
dice_yml: ${git-checkout}/erda.yml
image:
java-demo: ${java-demo:OUTPUT:image}
- stage:
- dice:
params:
release_id: ${release:OUTPUT:releaseID}
# dice.yml
dice.yml 配置文件用于描述一个应用的服务架构、对 CPU 和内存等资源的配置、服务插件的依赖关系以及发布形式。
该示例工程对应的 dice.yml 参考如下,更多信息请参见 dice.yml。
version: "2.0"
services:
java-demo:
ports:
- port: 8080
expose: true
resources:
cpu: 0.2
mem: 512
deployments:
replicas: 1
# 提交文件
将新增的两个 YAML 文件提交至平台的代码仓库。
git add .
git commit -m "add pipeline.yml and dice.yml"
git push erda feature/demo
提示
此处提交的远程仓库分支前缀为 feature/*
,分支名称将直接决定应用部署的环境。
# 执行流水线
进入 流水线 页面,选择
feature/demo
分支创建新的流水线任务。完成流水线任务分析后,流水线处于待执行状态。点击右上角执行图标,开始流水线构建。
流水线任务执行过程中,可实时查看流水线各步骤的执行状态,点击日志可查看对应节点执行状况的日志信息。
# 查看部署结果
通过流水线构建源码并完成部署后,可在环境部署查看已成功部署的应用实例 Runtime。进入 Runtime 可进一步进行 应用管理 相关操作,例如配置域名、服务实例扩缩容等。
# 通过流水线部署项目/应用制品
项目/应用制品可通过流水线触发部署,pipeline.yml 示例参考如下,更多信息请参见 pipeline.yml。
提示
release_name 为制品版本名称。
项目制品部署
version: "1.1" stages: - stage: - dice: params: release_name: 1.0.0 type: project
应用制品部署
version: "1.1" stages: - stage: - dice: params: release_name: 1.0+20220221201012 application_name: java-demo type: application
触发流水线后,可前往 应用中心 > 环境部署 查看部署详情。
# 跨集群部署
在流水线文件中 Relese Action 部分的 params
添加 cross_cluster: "true"
,则流水线生成的制品可跨集群部署。