构建
本文主要介绍 Zadig 的构建模块。Zadig 构建模块支持 Zadig 构建和其他第三方构建系统,比如 Jenkins 构建。
新建构建
在项目页面中点击构建
进入构建的详情页面,可以选择 Zadig 构建或者 Jenkins 构建。
Zadig 构建
tip 如果项目中使用了其他项目提供的共享服务,那么该服务的构建过程也相应使用其所属项目中配置的构建脚本。
Zadig 构建提供模版化构建能力,构建过程通过配置构建脚本实现,简单易用。整个构建模块分成通用配置、编译环境、应用、代码库信息、敏感信息、构建脚本、镜像构建、二进制包归档和 Shell 脚本。
准备工作
无论用何种工具构建一个服务,首先都要明确构建需要的依赖,依赖项包括:
- 服务编译的代码依赖(比如依赖 Base 库,开源库等)
- 服务编译的环境依赖(比如 Go 版本、Node 版本、编译工具等)
- 服务编译的系统依赖(比如操作系统等)
构建环境
构建环境包括 2 部分:
- 操作系统
- 操作系统上安装的构建所需要的依赖软件
目前平台默认提供以下操作系统:
- Ubuntu 16.04
- Ubuntu 18.04
- Ubuntu 20.04
其中已安装如下的软件包:
- docker
- tar
- curl
- git
- netcat-openbsd
- wget
- build-essential
- libfontconfig
- libsasl2-dev
- libfreetype6-dev
- libpcre3-dev
- pkg-config
- cmake
- python
- librrd-dev
这些工具可在应用安装脚本和构建脚本中直接使用。
Zadig 构建环境支持自定义镜像,详情请参阅构建镜像管理
应用列表
构建过程中需要用到的各类工具,比如不同版本的 Java、Go、Govendor、Node、Bower、Yarn、Phantomjs 等等。
tip 选择应用工具的过程中需要注意工具的依赖关系,顺序进行安装。例如:Govendor 依赖 Go,那么必须先选 Go,再选择 Govendor。
平台已内置一些常见的应用,如果有其他应用或者版本需求,系统管理员可以在系统设置
->应用设置
中配置应用的安装脚本。
代码库
参数说明:
托管平台
:代码库所在的平台,目前支持 GitHub、GitLab、Gerrit代码库拥有者
:支持开源库和所配置的组织下的所有代码代码库名称
:代码库的名称默认分支
:创建工作流任务时,默认选取的分支,与高级配置中的默认设置配合使用,可以限制每次编译的 BranchRemote name
:指定远程仓库名称,默认origin
克隆目录名
:定义项目目录名称子模块
:同步submodule
中配置的代码库默认设置
:开启后,创建工作任务时不提供参数化方式,使用工作流设置中的默认配置执行主库
:多个代码库构建时,如果该代码库设置为主库,构建产物(镜像、Tar 包等)会使用该库的对应信息命名
环境变量
平台支持用户在构建脚本中使用自定义环境变量,若构建脚本中存在敏感信息,可以设置勾选敏感信息来隐藏控制台 Console 输出。声明自定义环境变量后,工作流执行任务时可以修改变量值。
构建脚本
代码的构建过程可以在构建脚本中声明。
构建脚本除了可以使用自定义环境变量外,还可以使用系统内置变量,包括以下变量:
变量名称 | 描述 |
---|---|
WORKSPACE |
当前工作流工作目录 |
IMAGE |
输出镜像名称 |
SERVICE |
编译的服务名称 |
ENV_NAME |
环境名称 |
BUILD_URL |
构建任务的 URL |
<REPONAME>_PR |
构建过程中指定代码仓库使用的 Pull Request 信息 |
<REPONAME>_BRANCH |
构建过程中指定代码仓库使用的分支信息 |
<REPONAME>_TAG |
构建过程中指定代码仓库使用的 Tag 信息 |
tip 如果 REPONAME 包含 “-“ 中划线,将 “-” 替换成 “_” 即可正常打印变量
<REPONAME>_PR
、<REPONAME>_BRANCH
、<REPONAME>_TAG
。
镜像构建
平台默认支持通过 Dockerfile 参数化构建镜像,构建完成后会将镜像推送至镜像仓库。
点击新增构建步骤,并选择镜像构建.
相关参数说明:
镜像构建目录:
执行 Docker build 所在的目录。Dockerfile 文件的完整路径:
执行 Docker build 用到的 Dockerfile 路径。镜像编译参数:
支持所有 Docker build 的参数,比如:--build-arg key=value
。
Jenkins 构建
tip 使用 Jenkins 构建前必须先集成 Jenkins 服务器,详见Jenkins 集成
相关参数说明:
Jenkins Job
:Jenkins Server 中现有的 Jenkins Job。构建参数
:所选 Jenkins Job 中配置的 Build Parameters,其中必须包含IMAGE
变量,作为构建镜像名称,Jenkins 执行构建成功后,Zadig 部署会使用该镜像更新服务。