流水线源(Sources)是数据处理和集成系统中的一个关键组成部分,负责从不同的数据源中捕获和传输数据。
背景信息
流水线源sources:Flow 目前支持配置代码源、Jenkins源、Flow流水线源三种类型的流水线源,并且支持配置多个源。
代码源:支持配置 Codeup、GitHub、GitLab、Gitee 等常见代码源。
Jenkins源:支持配置外部 Jenkins 服务触发流水线运行。
Flow流水线源:支持配置其他Flow流水线作为源,流水线之间相互触发运行。
示例
单流水线源
以下为一个最简单的流水线源配置示例:
sources:
my_repo:
type: codeup
name: 代码源名称
endpoint: https://codeup.aliyun.com/abc/Codeup-Demo.git
branch: master
triggerEvents:
- push
- tagPush
certificate:
type: serviceConnection
serviceConnection: <your-service-connection-id>
多流水线源
以下为多流水线源配置示例:
sources:
repo1:
type: codeup
name: 代码源名称
endpoint: https://codeup.aliyun.com/abc/repo1.git
branch: master
triggerEvents:
- push
- tagPush
certificate:
type: serviceConnection
serviceConnection: <your-service-connection-id>
repo2:
type: codeup
name: 代码源名称
endpoint: https://codeup.aliyun.com/abc/repo2.git
branch: master
triggerEvents:
- push
- tagPush
certificate:
type: serviceConnection
serviceConnection: <your-service-connection-id>
defaultWorkspace: repo1
Jenkins 源示例
以下为 Jenkins 任务作为流水线源的配置示例:
sources:
my_jenkins:
type: jenkins
name: Jenkins 源名称
jenkinsJob: job/job-test
build: lastSuccessfulBuild
certificate:
type: serviceConnection
serviceConnection: <your-service-connection-id>
Flow 流水线源示例
以下为 Flow 流水线作为流水线源的配置示例:
sources:
ci_pipeline:
type: flowPipeline
name: Flow 流水线源名称
flowPipeline: 1479575
build: lastSuccessfulBuild
triggerEvents: buildSuccess
详细说明
sources
流水线源,支持配置多个流水线源信息,包括源类型、源地址、默认分支等。
defaultWorkspace
当流水线配置了多个代码源时,必填。默认工作区,后续流水线任务若未指明工作空间,自动进入默认工作区执行任务。填写具体 <source_id>,如:
sources:
repo1:
......
repo2:
......
defaultWorkspace: repo1
sources.<source_id>
必填。流水线源 id,唯一标识流水线源。流水线运行时,会将源文件下载至 <source_id> 文件目录下,即/root/workspace/<source_id>
。
source_id 只能包含字母、数字和 _ ,且必须以字母开头,长度限制 30 个字符。
sources.<source_id>.type
必填。流水线源类型,Flow 目前支持 codeup、github、gitlab、jenkins 等多种流水线源类型。
流水线源类型 | YAML 标识 | 备注 |
云效 Codeup | codeup | 支持触发事件:代码提交、Tag 创建、合并请求完成后、合并请求新建/更新 支持根据分支过滤 支持根据代码路径过滤 |
阿里云 Code | aliyunCode | 支持触发事件:代码提交、Tag 创建 支持根据分支过滤 |
自建 Gitlab | customGitlab | 支持触发事件:代码提交、Tag 创建 支持根据分支过滤 |
码云 | gitee | 支持触发事件:代码提交 支持根据分支过滤 |
通用 Git | git | 支持触发事件:代码提交、Tag 创建 支持根据分支过滤 |
Github | github | 支持触发事件:代码提交 支持根据分支过滤 |
Gitlab | gitlab | 支持触发事件:代码提交 支持根据分支过滤 |
Bitbucket | bitbucket | 支持触发事件:代码提交 支持根据分支过滤 |
Jenkins | jenkins | 支持配置外部 Jenkins 服务触发流水线运行 |
Flow 流水线 | flowPipeline | 支持配置其他Flow流水线作为源,流水线之间相互触发运行;支持触发事件:流水线运行成功、失败、取消 |
sources.<source_id>.name
选填。长度限制 30 个字符。流水线源的展示名称。
sources.<source_id>.endpoint
当流水线源为代码源时,必填。代码源地址,支持填写 SSH 和 HTTPS 地址。如:https://codeup.aliyun.com/abc/Codeup-Demo.git。
sources.<source_id>.branch
非必填,当流水线源为代码源时,默认为 master。 代码源默认分支,当流水线被定时触发或被外部系统触发时,默认使用的运行分支。 填写分支名,如:
sources:
my_repo:
endpoint: https://codeup.aliyun.com/abc/Codeup-Demo.git
branch: master
sources.<source_id>.submodule
非必填,默认为 false。当流水线源为代码源时,是否同时克隆子模块。填写true
或false
,如:
sources:
my_repo:
type: codeup
endpoint: https://codeup.aliyun.com/abc/Codeup-Demo.git
branch: master
submodule: true
sources.<source_id>.cloneDepth
非必填,默认克隆所有版本。仅支持填写大于等于 0 的数字整数。当流水线源为代码源时,克隆深度值代表克隆最近 commit 的版本数,自定义克隆深度可加速工作区准备效率,0 表示克隆所有版本。 如:
sources:
my_repo:
type: codeup
endpoint: https://codeup.aliyun.com/abc/Codeup-Demo.git
branch: master
cloneDepth: 10
sources.<source_id>.triggerEvents
非必填,默认无法通过流水线源事件触发。当发生对应配置的事件后,流水线触发运行。
触发事件 | YAML 标识 | 备注 |
代码推送 | push | |
Tag 创建 | tagPush | 仅支持部分代码源 |
合并请求完成后 | mergeRequestMerged | 仅支持部分代码源 |
合并请求新建/更新 | mergeRequestOpenedOrUpdate | 仅支持部分代码源 |
流水线运行成功 | buildSuccess | 仅支持 Flow 流水线源 |
流水线运行失败 | buildFail | 仅支持 Flow 流水线源 |
流水线运行取消 | buildCancel | 仅支持 Flow 流水线源 |
如:
sources:
my_repo:
type: codeup
endpoint: https://codeup.aliyun.com/abc/Codeup-Demo.git
branch: master
triggerEvents:
- push
- tagPush
sources.<source_id>.branchFilter
非必填,默认不对分支进行过滤。当流水线源为代码源且开启代码源提交触发时,可以设置分支过滤条件,满足过滤条件才会触发流水线运行。填写分支名,支持正则表达公式,如:
sources:
my_repo:
type: codeup
endpoint: https://codeup.aliyun.com/abc/Codeup-Demo.git
branch: master
triggerEvents: push
branchFilter: ^feature.*
sources.<source_id>.pathFilter
非必填,默认不对代码路径进行过滤。当流水线源为代码源且开启代码源提交触发时可以设置代码路径过滤条件,指定代码路径下的代码文件才会触发流水线运行。填写代码路径地址,支持正则表达式,如:
sources:
my_repo:
type: codeup
endpoint: https://codeup.aliyun.com/abc/Codeup-Demo.git
branch: master
triggerEvents: push
pathFilter: ^file_path.*
sources.<source_id>.branchMode
非必填,默认不打开分支模式。当流水线拥有多个流水线源时,仅允许一个代码源打开分支模式。
sources.<source_id>.branchMode.baseBranch
分支模式参数,若代码源打开了分支模式,则必须填写baseBranch
。baseBranch
为分支模式中拉取发布分支的基础分支,如:
sources:
my_repo:
type: codeup
endpoint: https://codeup.aliyun.com/abc/Codeup-Demo.git
branch: master
branchMode:
baseBranch: master
sources.<source_id>.certificate
必填。设置克隆代码源,或调用外部 Jenkins 服务的授权信息。使用服务连接,则 type 为 serviceConnection,并填写服务连接 ID 信息,如:
sources:
my_repo:
type: codeup
endpoint: https://codeup.aliyun.com/abc/Codeup-Demo.git
branch: master
certificate:
type: serviceConnection
serviceConnection: <your-service-connection-id>
部分代码源(如通用 Git、自建 GitLab等)支持通过企业公钥克隆代码,则可设置使用企业公钥,type 为 sshKey,如:
sources:
my_repo:
type: customGit
endpoint: https://codeup.aliyun.com/abc/Codeup-Demo.git
branch: master
certificate:
type: sshKey
sources.<source_id>.jenkinsJob
当流水线源为 Jenkins 源时,必填。 填写 Jenkins 的 Job 信息,如:
sources:
my_jenkins:
type: jenkins
jenkinsJob: job-test
......
sources.<source_id>.flowPipeline
当流水线源为 Flow 流水线时,必填。填写 Flow 的流水线 ID,如:
sources:
my_ci_pipeline:
type: flowPipeline
flowPipeline: 14795**
......
sources.<source_id>.build
当流水线源为 Jenkins 源或 Flow 流水线时,必填。填写具体 Jenkins 任务和 Flow 流水线构建编号。
触发事件 | YAML 标识 | 备注 |
最后一次运行 | lastBuild | Jenkins 源 |
最后一次成功运行 | lastSuccessfulBuild | Jenkins 源或 Flow 流水线 |
具体执行编号 | 构建编号数字 | Jenkins 源或 Flow 流水线 |
如:
sources:
my_jenkins:
type: jenkins
jenkinsJob: job-test
build: lastBuild