# 自定义源流水线
支持用户灵活配置代码源和制品源,代码源可对接外部 Git 仓库、私有代码平台;制品源与本平台制品库file 类型库集成。通过高度可定制的流水线定义,满足多样化研发流程需求,实现从任意代码源到部署的自动化交付。
除了以下描述的方式不一样,其他使用方式均和内置源流水线使用一样。
# 流水线源
# 代码源
- 需要在服务集成->代码源中添加代码源仓库地址和鉴权方式。
- 在自定义源流水线新建流水线->阶段&任务->添加源->选择通用git,选择在1.服务集成中添加的代码源名称、填写默认分支、选择克隆方式、克隆深度及填写工作目录。(通用 git 一条流水线可以添加多个)
- 选择编译构建或构建镜像(涉及下载源代码)插件,都可以使用当前流水线配置的源,选择下载流水线源方式后,并填写工作目录(为空默认为流水线源所在同级目录或者选择代码源配置的工作目录)。
# 制品源
- 需要和本平台的制品库 file 类型制品库使用(半成品库和成品库)
- 在自定义源流水线新建流水线->阶段&任务->添加源->选择内置制品库,按页面操作进行配置。(内置制品库一条流水线可以添加多个)
- 制品源配置完后,后面任务需要配置主机部署发单。部署版本选择制品源版本 选择使用制品源的工作目录,配置完成后,在执行制品源流水线时,会将制品源选的版本传递给部署版本进行部署。
# 流水线权限
企业权限说明及默认配置,企业管理员可以给成员角色赋权或添加新的角色进行赋权
| 权限操作 | 管理员(内置) | 成员(内置) | 说明 |
|---|---|---|---|
| 新建和复制流水线 | ✔️ | ✔️ | 拥有此权限能新建和复制流水线 |
| 查看全部流水线 | ✔️ | ✖️ | 拥有此权限能够查看企业下所有流水线数据(查) |
| 管理全部流水线 | ✔️ | ✖️ | 拥有此权限能够管理企业下所有流水线数据(增、删、改) |
单条流水线权限说明及配置,创建人默认为单条流水线管理员
| 权限操作 | 管理员(内置) | 成员(内置) | 说明 |
|---|---|---|---|
| 查看流水线 | ✔️ | ✔️ | 勾选此选项,即可查看流水线 |
| 执行流水线 | ✔️ | ✔️ | 勾选此选项,即可触发流水线 |
| 编辑流水线 | ✔️ | ✔️ | 勾选此选项,即可对流水线的基本信息、阶段&任务、环境变量、通知提醒、构建集群进行编辑 |
| 管理流水线 | ✔️ | ✖️ | 勾选此选项,即可删除流水线,设置流水线权限 |
# 环境变量
流水线的上下游任务需要数据传递的时候,可以通过环境变量的方式进行。 使用方法:
${环境变量名}
# 环境变量分为三种:
# 1. 系统环境变量
指流水线开始运行时,流水线预制在系统中,可以直接使用的环境变量
| 系统流水线变量 | 说明 |
|---|---|
| SYS_PIPELINE_NAME | 流水线名称 |
| SYS_PIPELINE_ID | 流水线id,流水线全局唯一 |
| SYS_PIPELINE_BUILD_NUMBER | 流水线构建号,流水线范围内自增 |
| SYS_PIPELINE_BUILD_ID | 流水线构建id,流水线全局唯一 |
| SYS_TRIGGER_USER | 流水线触发人 |
| SYS_BUILD_DATE | 流水线触发日期,例如:2021-12-15,输出为:20211215 |
| SYS_BUILD_YEAR | 流水线触发年份,例如:2021-12-15,输出为:2021 |
| SYS_BUILD_MONTH | 流水线触发月份,例如:2021-12-15,输出为:12 |
| SYS_BUILD_DAY | 流水线触发月份中的第几天,例如:2021-12-15,输出为:15 |
| SYS_BUILD_DATE_TIMESTAMP | 流水线触发时间,格式为YYYY.MM.dd-hhmmss,例如:2021.12.15-134856 |
| SYS_COMPANY_NAME | 企业域名,例如:新建企业企业域名为baidu,输出为:baidu |
| SYS_BUILD_PACKAGES | 已经完成的制品包信息,例如:制品包信息:file类型的半成品类型库名为bankiphone、包名为bankiphone/frontend、版本为V2026-0618-001;file类型的半成品类型库名为bankiphone、包名为bankiphone/backend、版本为V2026-0618-001,输出:[{"repoFormat":"raw","repoType":"snapshot","repoName":"bankiphone","pkgName":"bankiphone/frontend","pkgVersion":"V2026-0618-001"},{"repoFormat":"raw","repoType":"snapshot","repoName":"bankiphone","pkgName":"bankiphone/backend","pkgVersion":"V2026-0618-001"}] 。制品类型:半成品库repoType为snapshot、成品库repoType为release;制品格式为file的repoFormat为raw、制品类型为ipa的repoFormat为ipa、制品类型为apk的repoFormat为apk、制品类型为docker的repoFormat为docker。 |
| 系统流水线源变量 | 说明 |
|---|---|
| SYS_SOURCE_REPO_NAME_工作目录 | 流水线源仓库名称 |
| SYS_SOURCE_WORKSPACE_工作目录 | 流水线源代码源工作目录 |
| SYS_SOURCE_REPO_URL_工作目录 | 流水线源仓库地址 |
| SYS_SOURCE_REF_NAME_工作目录 | 流水线源代码库的分支名或者 Tag 名(根据用户运行时选择) |
| SYS_SOURCE_COMMIT_工作目录 | 流水线源触发提交的代码版本的 commit ID |
| SYS_SOURCE_COMMIT_SHORT_工作目录 | 流水线源触发提交的代码版本的前7位 commit ID |
| 系统任务变量 | 说明(系统变量只能在任务执行时使用,任务结束后即失效) |
|---|---|
| SYS_SERVER_URL | agent注册设置时server_url字段 |
| SYS_SERVER_SCHEME | 通过解析agent端设置的server_url字段解析的协议(http或https) |
| SYS_SERVER_HOST | 通过解析agent端设置的server_url字段解析的主机地址 |
| SYS_SERVER_PORT | 通过解析agent端设置的server_url字段解析的端口(未设置的默认值,https为443,http为80) |
| SYS_WORKSPACE | 构建时的工作空间(如:/builds/xxx) |
| SYS_CI_TOKEN | 构建用户的token,任务创建时自动生成,任务结束即自动销毁 |
# 2. 用户自定义静态环境变量
是指用户在流水线配置界面,定义的变量,定义变量支持设置是否启用【触发时设置】
- 触发时设置启用:
- 手动触发时支持对定义的变量进行修改。
- 任务执行时允许通过动态环境变量对定义的变量重新赋值。
例如定义了变量 name 为 zhangsan,在执行完第一个【任务】后要给 name 重新赋值为 lisi并在第二个【任务】中使用 name 为 lisi,则在第一个【任务】命令行中执行:echo "name=lisi" > runtime_variables.txt
- 触发时设置关闭:
- 手动触发时不支持对定义的变量进行修改。
- 任务执行时不允许通过动态环境变量对定义的变量重新赋值。
# 3. 用户自定义动态环境变量
如需在流水线执行时,动态修改或创建自定义环境变量,可在插件脚本中, 在插件工作空间根目录下(和插件下载代码的根目录相同)创建: runtime_variables.txt 的文件,在文件中使用key=value这种形式为变量赋值或新增。
# 对已定义的变量执行时修改变量值,则在插件脚本中执行:
echo "name=value" > runtime_variables.txt
# 新增自定义变量,则在插件脚本中执行:
echo "password=value" >> runtime_variables.txt
# ⚠️注意1:用户自定义动态环境变量说明:
1.动态环境变量定义不能有空格;
2.不能修改和创建SYS开头的系统环境变量;
3.文件必须放在工作空间根目录下;
4.动态变量如重新赋值了多个或新增了多个重名的 key 则以最后定义的生效;
# ⚠️注意2:环境变量的使用范围:
1.对于系统环境变量,其使用范围是流水线所有阶段和任务;
2.用户自定义动态环境变量,其只能在当前任务执行结束后,后续执行的任务中生效;
# ⚠️注意2:环境变量值的修改:
1.SYS开头的系统环境变量不允许修改;
2.用户自定义环境变量可以通过3.中描述的修改runtime_variables.txt文件内容的方法进行动态创建和修改;