流水线任务jobs
一条流水线由定义在jobs中的多个任务组成。
jobs.<job_id>
使用jobs.<job_id>定义任务的唯一标识,流水线内不能重复,该标识只能由大小写字母、数字、“-”、“_”组成,最长32位。
jobs: job1: name: first job job2: name: second job
如上定义表示两个唯一标识分别为job1和job2的任务。
jobs.<job_id>.name
使用jobs.<job_id>.name定义任务的名称,在图形化界面中会展示该名称。
jobs: job1: name: first job job2: name: second job
如上定义表示job1和job2任务的名称分别为first job和second job。
jobs.<job_id>.needs
使用jobs.<job_id>.needs可定义任务在指定的任务结束后才开始运行。
jobs: job1: name: first job job2: needs: [ job1 ] name: second job
如上定义表示job2会在job1运行成功后开始执行。
jobs.<job_id>.if
使用jobs.<job_id>.if可定义任务的运行条件,表达式编写请参考流水线执行条件表达式。
jobs: job1: name: first job job2: needs: [ job1 ] if: ${{ always() }} name: second job
如上定义表示job2会在job1运行结束后开始执行,不论job1的最终状态如何。
jobs.<job_id>.steps
每个任务由定义在steps中的多个步骤组成,每个步骤可运行一个指定的插件。
jobs.<job_id>.steps<*>.name
使用jobs.<job_id>.steps<*>.name定义步骤的名称,在图形化界面中会展示该名称。
jobs.<job_id>.steps<*>.uses
使用jobs.<job_id>.steps<*>.uses可指定步骤运行的插件。
jobs: demo_job: name: simple demo job steps: - name: simple custom step uses: custom_plugin@1.0.0
如上定义表示一个名称为custom_plugin,版本为1.0.0的插件。
流水线官方插件YAML语法
- Build构建
调用编译构建能力进行构建。
uses: CodeArtsBuild with: jobId: 878b4d13cb284d9e8f33f988a902f57c artifactIdentifier: my_pkg customParam: value
- jobId:编译构建任务id。获取方法:在构建任务详情页,复制浏览器URL末尾的32位数字、字母组合的字符串,即为构建任务ID。
- artifactIdentifier:构建产物标识。
- customParam:在构建任务定义的支持运行时设置的参数值,可能有0到多个。
- TestPlan接口测试
调用CodeArts TestPlan能力进行测试。
uses: CodeArtsTestPlan with: jobId: vb180000vnrgoeib environmentModel: 1 environmentId: 7c2eff2377584811b7981674900158e8
- jobId:接口测试任务的id。
- environmentModel:参数来源(0表示使用全新执行参数,1表示使用选中环境的全局参数)。
- environmentId:environmentModel为1时的环境id。
- Deploy部署
调用CodeArts Deploy能力进行部署。
uses: CodeArtsDeploy with: jobId: 9c5a5cda6ffa4ab583380f5a014b2b31 customParam: value
- jobId:部署任务的id。
- customParam:在部署任务处定义的支持运行时设置的参数值,可能有0到多个。
- Check代码检查
调用CodeArts Check能力进行代码检查。
uses: CodeArtsCheck with: jobId: 43885d46e13d4bf583d3a648e9b39d1e checkMode: full|push_inc_full||push_multi_inc_full
- jobId:代码检查任务的id。
- checkMode:检查模式。
- full:表示对本次commit所在分支的全量代码进行检查。
- push_inc_full:表示对本次commit的变更文件内容进行检查。
- push_multi_inc_full:表示对上一次检查成功的commit到本次commit之间的变更文件内容进行检查。
- 创建仓库标签
为代码仓创建标签并推送。
uses: CreateTag with: tagName: v1
tagName为标签名称。
- 子流水线
配置并调用项目下其他流水线任务。
uses: SubPipeline with: pipelineId: 80ea2d9ffba94c20b9a0a0be47d3a0d8 branch: master
- pipelineId:调用的流水线的id。
- branch:子流水线运行使用的分支。
- branch参数可以不定义,表示使用子流水线默认分支运行。
- 若定义branch参数则表示以指定的分支运行,可以引用参数或上下文,如:使用父流水线源的运行分支,假设代码源别名为“my_repo”,则引用形式为${{ sources.my_repo.target_branch }}。
- Jenkins任务
调用Jenkins任务以扩展并实现自定义动作。
uses: Jenkins with: endpoint: eac965b206e74e2b898a24a4375b6df6 jobName: job params: '{ \"key\":\"value\" }' async: true|false description: description
- endpoint:jenkins扩展点的id。
- jobName:jenkins的job名称。
- params:启动任务传递的参数(json格式)。
- async:是否异步执行。
- description:执行说明。
- 挂起流水线
配置以挂起当前流水线。
uses: SuspendPipeline
- 延时执行
让流水线暂停运行一段时间或暂停至指定时间点,用户可以手动继续、终止流水线运行或进行最多3次的额外延时。
uses: Delay with: timerType: delay|scheduled delayTime: 300 scheduledTime: '00:00' timeZone: China Standard Time
- timerType:延时类型。delay表示延时一段时间;scheduled表示延时至指定时间。
- delayTime:timerType为delay时的延时时间(单位为秒)。
- scheduledTime:timerType为scheduled时的延时时间点。
- timeZone:对应时区,可选值见下表。
表1 时区 可选值
时区
GMT Standard Time
GMT
South Africa Standard Time
GMT+02:00
SE Asia Standard Time
GMT+07:00
Singapore Standard Time
GMT+08:00
China Standard Time
GMT+08:00
Pacific SA Standard Time
GMT-04:00
E. South America Standard Time
GMT-03:00
Central Standard Time (Mexico)
GMT-06:00
Egypt Standard Time
GMT+02:00
Saudi Arabia Standard Time
GMT+03:00
- 人工审核
以单签或会签的方式配置人工审核任务。
uses: Checkpoint with: mode: members|roles approvers: 05d8ca972f114765a8984795a8aa4d41 roles: PROJECT_MANAGER checkStrategy: all|any timeout: 300 timeoutStrategy: reject|pass comment: comment
- mode:审核模式。members表示按成员审核,roles表示按角色审核。
- approvers:审核模式为members时的审核人员用户id,多个用户以“,”分隔。
- role:审核模式为roles时的角色,可选值见表2,多个角色以“,”分隔。
- checkStrategy:审核模式为members时的审核策略。all表示需所有人员审核才能通过;any表示任一人员审核即可通过。
- timeout:审核超时时长(单位为秒)。
- timeoutStrategy:审核超时时的策略。reject表示中止;pass表示通过。
- comment:审核描述。