流水线是持续交付的载体,通过构建自动化、集成自动化、验证自动化、部署自动化,完成从开发到上线过程的持续交付,包括:

  • 代码的静态检查,提早发现代码 bug、安全性问题。
  • java、go、node 项目的编译打包,镜像构建。
  • 部署应用到 kubernetes 集群。

# 功能特性

  • 支持多种代码仓库,包括 gothub、gitlab、gitee、gogs。
  • 支持代码静态检查 ,包括 java、go、node 等主流语言。
  • 支持多种语言的编译打包,包括 java、go、nodejs。
  • 支持多种应用部署方式,包括 kubectl 部署、helm 部署、ahs(应用托管服务)部署。
  • 支持在流水线中使用变量,包括系统变量、自定义变量。

# 如何使用流水线变量?

  1. 在流水线全局变量中定义变量,如下,设置变量运行时可更改。

  2. 在流水线中引用了该变量。

  3. 点击启动流水线时可在弹出的运行配置窗口修改该变量的值。

当前支持以下系统变量

变量名称 变量含义 变量类型 备注
SYS_TIMESTAMP 启动流水线的时间 系统变量 无限制
SYS_COMMIT_REF_NAME 代码库的分支名或者 Tag 名(根据用户运行时选择),比如 master or V1.0 系统变量 挂载代码源后可使用
SYS_COMMIT_SHA 最后一次提交的代码版本的 commit ID:如 2bfb63d779e3648c91950f82d374a25784cdabaf 系统变量 挂载代码源后可使用
SYS_COMMIT_ID 最后一次提交的代码版本的 8 位 commit ID,如 b4dadc7 系统变量 挂载代码源后可使用

# 支持的步骤模版

当前流水线支持的步骤模版包括

  • 代码扫描
    • SonarQube 代码扫描:集成了 sonarqube,为主流语言提供了开箱即用的代码扫描能力,为用户提供了快速检测代码质量的能力。
  • 构建
    • Java 编译:基于提供的 maven 环境构建 java 项目。
    • Go 编译:基于提供的 golang 环境构建项目。
    • NodeJS 编译:基于提供的 node 环境构建前端项目。
    • 镜像构建:基于 docker 提供镜像构建的能力。
  • 部署
    • Kubectl 部署:使用 kubectl 命令行操作集群,修改 kuberntes 资源。
    • Kubectl 镜像升级:使用 kubectl 命令行修改应用镜像。
    • Helm 部署:使用 helm 命令行修改资源。
    • AHS 部署:修改应用托管服务 AHS 的应用。
  • 发布
    • AHS 发布:发布 AHS 应用,发布内容包括应用镜像、应用模版。
  • 其他
    • 运行子流水线:提供流水线中运行流水线的功能。
    • 运行自定义脚本:用户可自行编写脚本执行。

下面对新增的步骤的使用操作进行说明

# 新增步骤 Kubectl 镜像更新

方式 1:表单填写参数更新应用。

方式 2:手写命令行更新应用,这种方式更灵活。

# 常见问题

编译 java 项目时私有依赖包无法下载导致编译失败,如何解决?

执行 maven 编译时,可勾选配置 settings.xml 与 pom.xml,填写私有 maven 仓库的账号密码, 勾选后,系统会在 settings.xml 与 pom.xml 中配置仓库认证信息,用于访问仓库内的私有依赖包。