# 自定义源流水线

支持用户灵活配置代码源和制品源,代码源可对接外部 Git 仓库、私有代码平台;制品源与本平台制品库file 类型库集成。通过高度可定制的流水线定义,满足多样化研发流程需求,实现从任意代码源到部署的自动化交付。

除了以下描述的方式不一样,其他使用方式均和内置源流水线使用一样。

# 流水线源

# 代码源

  1. 需要在服务集成->代码源中添加代码源仓库地址和鉴权方式。
  2. 在自定义源流水线新建流水线->阶段&任务->添加源->选择通用git,选择在1.服务集成中添加的代码源名称、填写默认分支、选择克隆方式、克隆深度及填写工作目录。(通用 git 一条流水线可以添加多个)
  3. 选择编译构建或构建镜像(涉及下载源代码)插件,都可以使用当前流水线配置的源,选择下载流水线源方式后,并填写工作目录(为空默认为流水线源所在同级目录或者选择代码源配置的工作目录)。

# 制品源

  1. 需要和本平台的制品库 file 类型制品库使用(半成品库和成品库)
  2. 在自定义源流水线新建流水线->阶段&任务->添加源->选择内置制品库,按页面操作进行配置。(内置制品库一条流水线可以添加多个)
  3. 制品源配置完后,后面任务需要配置主机部署发单。部署版本选择制品源版本 选择使用制品源的工作目录,配置完成后,在执行制品源流水线时,会将制品源选的版本传递给部署版本进行部署。

# 流水线权限

企业权限说明及默认配置,企业管理员可以给成员角色赋权或添加新的角色进行赋权

权限操作 管理员(内置) 成员(内置) 说明
新建和复制流水线 ✔️ ✔️ 拥有此权限能新建和复制流水线
查看全部流水线 ✔️ ✖️ 拥有此权限能够查看企业下所有流水线数据(查)
管理全部流水线 ✔️ ✖️ 拥有此权限能够管理企业下所有流水线数据(增、删、改)

单条流水线权限说明及配置,创建人默认为单条流水线管理员

权限操作 管理员(内置) 成员(内置) 说明
查看流水线 ✔️ ✔️ 勾选此选项,即可查看流水线
执行流水线 ✔️ ✔️ 勾选此选项,即可触发流水线
编辑流水线 ✔️ ✔️ 勾选此选项,即可对流水线的基本信息、阶段&任务、环境变量、通知提醒、构建集群进行编辑
管理流水线 ✔️ ✖️ 勾选此选项,即可删除流水线,设置流水线权限

# 环境变量

流水线的上下游任务需要数据传递的时候,可以通过环境变量的方式进行。 使用方法:

${环境变量名}

# 环境变量分为三种:

# 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文件内容的方法进行动态创建和修改;