本文主要用于辅助编写构建过程,以及说明各项步骤的参数详情。
前提条件
进入项目
1. 登录 CODING 控制台,单击团队域名进入 CODING 使用页面。
2. 进入目标项目后,单击左侧的持续集成,单击构建计划 > 文本编辑器并在其中进行编排。
代码仓库
Git
用以检出当前项目的 Git 仓库源代码。本指令是 checkout 指令的一个简易写法。
参数列表:
参数 | 类型 |
Git 地址 url | string |
分支 branch | string |
变更日志 changelog | string |
身份认证 ID credentialsId | string |
Poll poll | boolean |
从版本控制检出
通用的检出 SCM(Git,SVN)代码。
这个步骤返回一个 Map 格式的内容。例如您用 Git,您可以这样:
def scmVars = checkout scmdef commitHash = scmVars.GIT_COMMIT// ordef commitHash = checkout(scm).GIT_COMMIT
参数
scm
是一个可配置 SCM 类型的对象,目前支持的有如下:GitSCM 示例写法:
checkout([$class: 'GitSCM', branches: [[name: env.GIT_BUILD_REF]],userRemoteConfigs: [[url: env.GIT_REPO_URL]]])
userRemoteConfigs 参数列表:
参数 | 类型 |
locations | 对象数组。 |
remote | string。 |
credentialsId | string。 |
local | string,指明一个本地目录(相对于 workspace)作为检出代码的位置。 |
depthOption | |
ignoreExternalsOption | boolean。 |
SubversionSCM 从 SVN 服务器检出代码。示例写法:
checkout([$class: 'SubversionSCM', remote: 'http://sv-server/repository/trunk'])
参数列表:
参数 | 类型 |
locations | 对象数组。 |
remote | string。 |
credentialsId | string。 |
local | string,指明一个本地目录(相对于 workspace)作为检出代码的位置。 |
depthOption | |
ignoreExternalsOption | boolean。 |
构建过程
子节点
参数列表:
label
:类型 string 环境标签名称,例如 java-8。收集构建物
把构建结果(例如 jar,war,apk 等)收集起来。请注意,这里收集的构建产物会跟随这个构建历史一起保存和删除,这里只是一个临时的保存空间,更建议用户使用”构建物管理“来进行构建结果的版本化管理。
参数列表:
参数 | 类型 |
artifacts | |
allowEmptyArchive | boolean,可选;通常情况下,本指令在找不到符合收集模式的文件时会导致构建失败。这个选项如果设置为 true ,那么当没有构建产物的时候,构建过程只会发出一个警告,不会导致失败。 |
caseSensitive | boolean,可选;默认对文件路径规则的匹配是大小写敏感的,如果设置为 false,则不区分大小写。 |
defaultExcludes | boolean,可选。 |
excludes | |
fingerprint | boolean,可选;收集的时候同时计算文件的 hash 信息。 |
onlyIfSuccessful | boolean,可选;只有当构建成功的时候才收集。 |
执行 Shell 脚本
执行一段 Shell 脚本,示例:
pipeline {agent anystages {stage('Example') {steps {echo 'Hello World'sh 'ls -al'}}}}
收集 JUnit 测试报告
收集 JUnit 和 TestNG 的测试报告(xml 格式),您可以指定收集哪些 xml 文件,例如
**/build/test-reports/*.xml
需要注意的是不要把那些不是报告文件的 xml 包含在内了,您可以用逗号隔开写多个规则。参数列表:
参数 | 类型 |
testResults | string。 |
allowEmptyResults | boolean,可选,允许测试报告文件不存在或为空。 |
keepLongStdio | boolean,可选,所有测试日志都会保留,即便是那些通过的测试用例。 |
其他
变更目录子步骤
变更目录子步骤。可以在 dir 块内填充若干子步骤,这些子步骤将会在指定的路径目录内执行。
参数列表:
path
:类型 string。睡眠
即暂停一段时间,直至所设定的截止时间。与 Unix 的
sleep xxx
类似。参数列表:
time
:类型 int。unit
:只能在 NANOSECONDS
,MICROSECONDS
,MILLISECONDS
,SECONDS
,MINUTES
,HOURS
,DAYS
中选择一个。错误信号
发送一个错误信号,往往用在需要根据条件终止部分执行过程的时候。您也可以使用 throw new Excepiton(),但使用 error 步骤可以避免打印过长的异常栈。
参数列表:
message
:类型 string。当前目录
把当前目录路径以字符串类型作为返回结果。
参数列表:
tmp
:类型 boolean 可选参数,如果选择了,则返回一个跟工作空间关联的临时目录。通常用于在不想污染工作空间目录,又想存放一些临时文件之类的场景。写文件
把指定内容写入文件。参数列表:
file
:类型 string。text
:类型 string。encoding
:类型 string 文件的编码,如果留空将会根据当前运行环境平台默认编码处理,如果遇到 Binary 文件,则会自动被以 Base64 编码后的结果返回。读文件
从相对路径读取文件,并把文件内容作为字符串返回。参数列表:
file
:类型 string 相对路径地址(相对于工作空间目录)。encoding
:类型 string 文件的编码,如果留空将会根据当前运行环境平台默认编码处理,如果遇到 Binary 文件,则会自动被以 Base64 编码后的结果返回。重试子步骤
重试一个指定的块直至达到设定的最多重试次数。如果在执行过程中正常结束,则不再重试,如果执行过程中出现异常,则会不断重试直至达到指定的最大重试次数,如果最后一次尝试出现异常,则构建过程会被终止。
参数列表:
count
:类型 int。限时子步骤
限定时间执行块内的过程。如果时间到了,将会抛出一个异常
org.jenkinsci.plugins.workflow.steps.FlowInterruptedException
。 单位参数是可选的,默认是分钟。参数列表:time
:类型 int。activity
:类型 boolean,以日志没有新的内容来计时,而不是以绝对执行时间来计时。unit
:只能在 NANOSECONDS
,MICROSECONDS
,MILLISECONDS
,SECONDS
,MINUTES
,HOURS
,DAYS
中选择一个。捕获错误子步骤
这里指定的子步骤中的错误将会被捕获。
计时子步骤
这里指定的子步骤的执行时间将会以 Unix 时间戳的形式被记录。
循环子步骤
这里指定的子步骤将会被循环执行指定次数。
条件循环子步骤
这里指定的子步骤将会被循环执行,直到子步骤的结果返回
true
。打印消息
在日志中打印消息。
参数列表:
message
: 类型 string
执行任意的 Pipeline 脚本
添加此步骤可以执行任意的 Pipeline 脚本。
执行 Groovy 源文件
构建过程将在此位置执行 Groovy 源文件。
示例:
pipeline {agent anystages {stage('Example') {steps {echo 'Hello World'load 'test.groovy'}}}}
执行 Yarn 审计
此步骤在指定的目录里执行 yarn audit,并且可以在持续集成结果页面看到对 yarn 依赖审查的漏洞情况。
参数列表:
directory
:类型 string,可选。 填写 yarn.lock 所在目录,默认在项目根目录执行。collectResult
:类型 boolean,可选。 收集 Yarn Audit 报告。执行 Npm 审计
此步骤在指定的目录里执行 npm audit,并且可以在持续集成结果页面看到对 npm 依赖审查的漏洞情况。
参数列表:
directory
:类型 string,可选。 填写 package.json 所在目录,默认在项目根目录执行。collectResult
:类型 boolean,可选。 收集 Npm Audit 报告。合并合并请求
合并代码。你可以在此步骤合并一个指定的合并请求。
参数列表:
token
:类型 string。 项目令牌。depot
:类型 string。 仓库名称。mrResourceId
:类型 string。 指定资源 ID。commitMessage
:类型 string。 合并提交信息模板。deleteSourceBranch
:类型 boolean,可选。 删除源分支。fastForward
:类型 boolean,可选。 尝试 Fast-Forward 模式合并。评论合并请求
评论合并请求。你可以在此步骤评论一个指定的合并请求。
参数列表:
token
:类型 string。 项目令牌。depot
:类型 string。 仓库名称。mrResourceId
:类型 string。 指定资源 ID。commentContent
:类型 string。 评论内容模板。