YAML构架
详细了解Buddy中流水线和操作的架构
buddy.yml
文件定义了项目中的所有流水线,每个流水线都包含要执行的操作列表,您将在下面找到流水线和操作的模式。
流水线构架
该文件由一系列流水线组成:
- pipeline: "production"
on: "CLICK"
refs:
- "refs/heads/master"
variables:
- key: "username"
value: "Buddy"
settable: false
description: "var_descrption"
- pipeline: "build"
on: "EVENT"
events:
- type: "PUSH"
refs:
- "*"
属性
名称 | 类型 | 描述 |
---|---|---|
pipeline 必填 | String | 流水线ID |
on 必填 | String | 流水线触发模式:CLICK (手动)、 EVENT (事件/自动)、 SCHEDULE (定时/周期) |
refs | String[] | Set it if on is set to CLICK or SCHEDULE . The list of refs for which the pipeline will be triggered. Automatically set to NONE if not provided. |
events | Event[] | The list of events for which the pipeline will be triggered. Set it if on is set to EVENT . |
trigger_conditions | TriggerCondition[] | The list of trigger conditions to meet so that the pipeline can be triggered. |
always_from_scratch | Boolean | Defines whether or not to upload everything from scratch on every execution. |
auto_clear_cache | Boolean | Defines whether or not to automatically clear cache before running the pipeline . |
no_skip_to_most_recent | Boolean | Defines whether or not to skip execution to the most recent execution. |
do_not_create_commit_status | Boolean | Defines whether or not to omit sending commit statuses to Github or Gitlab upon execution. |
start_date | iso 8601 utc date | Required if the pipeline is set to on: SCHEDULE and no cron is specified. Defines when the pipeline execution should start. Format: 2016-11-18T12:38:16.000Z |
delay | Integer | Required if the pipeline is set to on: SCHEDULE and no cron is specified. Defines the intervals in which the pipeline should be executed (in minutes). |
cron | String | Required if the pipeline is set to on: SCHEDULE and neither start_date nor delay is specified. The standard CRON expression defining the execution schedule. |
actions | Action[] | The list of actions executed in the pipeline. |
variables | Variable[] | The list of variables you can use in the pipeline. |
ignore_fail_on_project_status | Boolean | If set to true the status of a given pipeline will not impact the project status on the dashboard. |
execution_message_template | String | The title of every execution in this pipeline. By default it is set to $BUDDY_EXECUTION_REVISION_SUBJECT . |
worker_assignment | String | Defines the worker assignment method. Can be one of FIXED or TAGS . Only for Buddy On-Premises. Read here for more details. |
worker | String | Defines the worker on which the pipeline runs when worker_assignment is set to FIXED . Only for Buddy On-Premises. |
target_site_url | String | The URL of the target website. |
disabled | Boolean | Set it, if you want the pipeline to be disabled |
disabled_reason | String | Specify the reason for disabling the pipeline |
操作构架
每个流水线都包含一个操作列表。这些操作按照 .yml
文件中提供的顺序执行:
- pipeline: "production"
on: "CLICK"
refs:
- "refs/heads/master"
execution_message_template: "test"
ignore_fail_on_project_status: "true"
actions:
- action: "Execute: npm test"
type: "BUILD"
docker_image_name: "library/node"
docker_image_tag: "6"
execute_commands:
- "npm install"
- "npm test"
setup_commands:
- "npm install -g gulp grunt-cli"
variables:
- key: "username"
value: "Buddy"
settable: true
description: "var_description"
retry_interval: 1
retry_count: 3
- action: "Upload files to buddy.server"
type: "FTP"
input_type: "BUILD_ARTIFACTS"
local_path: "/"
login: "buddy"
password: "password"
host: "buddy.server"
port: "21"
retry_interval: 1
retry_count: 3
属性
名称 | 类型 | 描述 |
---|---|---|
action 必填 | String | 操作ID |
type 必填 | String | 操作类型 |
variables | Variable[] | 您可以使用操作的变量列表 |
trigger_conditions | TriggerCondition[] | 满足条件才能触发操作的[触发条件列表 |
timeout | Integer | The timeout in seconds. |
disabled | Boolean | When set to true the action is disabled. By default it is set to false . |
run_next_parallel | Boolean | When set to true , the subsequent action defined in the pipeline will run in parallel to the current action. |
run_only_on_first_failure | Boolean | Defines whether the action should be executed on each failure. Restricted to and required if the trigger_time is ON_FAILURE . |
ignore_errors | Boolean | If set to true the execution will proceed, mark action as a warning and jump to the next action. Doesn't apply to deployment actions. |
retry_interval | Integer | Delay time between auto retries in seconds. |
retry_count | Integer | Number of retries if the action fails. |
信息
On top of these properties every action has a set properties unique to its type. You can read how to define each type of action in separate articles.
变量构架
您可以通过以下方式定义变量:
variables:
- key: "my_file"
type: "FILE"
value: "dGVzdA0K"
file_name: "file"
file_path: "/buddy-variables/file"
file_chmod: "644"
file_place: "CONTAINER"
- key: "id_my_key"
value: "secure!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.qiYL/5JiylAVf8oeD57u9w=="
type: "SSH_KEY"
encrypted: true
file_name: "id_my_key"
file_path: "~/.ssh/id_my_key"
file_chmod: "600"
file_place: "CONTAINER"
- key: "my_variable"
value: "my_value"
type: "VAR"
属性
名称 | 类型 | 描述 |
---|---|---|
key 必填 | String | The name of the variable. |
value 必填 | String | The value of the variable. If the type is FILE , the value must be Base64 encoded. |
type | String | The type of the added variable. Can be one of VAR , SSH_KEY or FILE . |
description | String | The optional description of the variable. |
encrypted | Boolean | When set to true the variable value will be encrypted and hidden. |
settable | Boolean | When set to true the variable value can be shifted between subsequent actions or executions as well as pipelines. |
file_place | String | Available values: CONTAINER , NONE . Set if type is SSH_KEY or FILE . If it's NONE , the variable can be used as a parameter in an action. For CONTAINER , the given file/key is additionally copied to an action container on each run. |
file_name | String | The name of the file. Set if type is SSH_KEY or FILE . |
file_path | String | Specifies where to copy the file on each run. Set if type is SSH_KEY or FILE . |
file_chmod | String | File permission set on copy to a container on each run. Set if type is SSH_KEY or FILE . |
通过Buddy加密工具在YAML中使用加密变量
使用加密值定义变量:
进入“项目设置” -> "YAML工具" -> "为YAML加密敏感值":
提供输入值并单击加密。它将生成一个哈希值,您可以在YAML中复制并安全地使用该哈希值:
提醒
用于加密值的盐对于每个工作区都是唯一的。如果您更改它,您将需要更改YAML中的所有加密值。
仅当您使用导出/导入选项将流水线移动到另一个工作区或从云服务移动到自托管版本时,才应更改该值。
事件构架
以下是定义触发流水线事件/自动的方法:
events:
- type: "PUSH"
refs:
- "refs/heads/master"
- "refs/heads/dev-*
属性
名称 | 类型 | 描述 |
---|---|---|
type 必填 | String | The type of the event. Available values: PUSH , CREATE_REF , DELETE_REF . |
refs 必填 | String[] | The list of refs for which the pipeline will be triggered in the given event. |
触发条件构架
您可以通过以下方式定义触发条件:
trigger_conditions:
- trigger_condition: "VAR_IS"
trigger_variable_value: "expectedValue"
trigger_variable_key: "myVar"
- trigger_condition: "ON_CHANGE"
属性
名称 | 类型 | 描述 |
---|---|---|
trigger_condition | String | Defines when the build action should be run. Can be one of ALWAYS , ON_CHANGE , ON_CHANGE_AT_PATH , VAR_IS , VAR_IS_NOT , VAR_CONTAINS , VAR_NOT_CONTAINS , DATETIME or SUCCESS_PIPELINE . Can't be used in deployment actions. |
trigger_condition_paths | String[] | Required when trigger_condition is set to ON_CHANGE_AT_PATH . |
trigger_variable_key | String | Required when trigger_condition is set to VAR_IS , VAR_IS_NOT or VAR_CONTAINS or VAR_NOT_CONTAINS . Defines the name of the desired variable. |
trigger_variable_value | String | Required when trigger_condition is set to VAR_IS , VAR_IS_NOT or VAR_CONTAINS or VAR_NOT_CONTAINS . Defines the value of the desired variable which will be compared with its current value. |
trigger_hours | Integer[] | Available when trigger_condition is set to DATETIME . Defines the time – by default running from 1 to 24. |
trigger_days | Integer[] | Available when trigger_condition is set to DATETIME . Defines the days running from 1 to 7 where 1 is for Monday. |
zone_id | String | Available when trigger_condition is set to DATETIME . Defines the timezone (by default it is UTC) and takes values from here. |
trigger_project_name | String | Required when trigger_condition is set to SUCCESS_PIPELINE . Defines the name of the project in which the trigger_pipeline_name is. |
trigger_pipeline_name | String | Required when trigger_condition is set to SUCCESS_PIPELINE . Defines the name of the pipeline. |
工作器分配构架
信息
将流水线分配给工作器是Buddy自托管独有的功能。阅读此文了解更多信息>>>
此为定义流水线工作器分配标准的方式:
tags:
- "tag1"
- "tag2"
worker_assignment: "TAGS"
worker: "worker-4"
属性
名称 | 类型 | 描述 |
---|---|---|
worker_assignment | String | Defines the worker assignment method. Can be one of FIXED or TAGS . When set to FIXED , the worker is assigned in the worker property. |
tags | String[] | Required when worker_assignment is set to TAGS . Runs the pipeline on the worker with tags that match those specified in the array. |
worker | String | Defines the worker on which the pipeline runs when worker_assignment is set to FIXED . If you don't specify the worker, Buddy automatically runs the pipeline on the main worker of the On-Premises instance. |
多行YAML
要在YAML中应用多行,请使用 |
(竖线)符:
pipeline: |
first line
second line
请注意,某些字段是集合,应保留集合结构。这适用于SSH和构建操作:
- action: "Execute: ls"
type: "BUILD"
execute_commands:
- npm install
- npm test
- npm build
如果要在此类操作中应用多行执行命令,则需要将其定义为 execute_commands
集合的元素:
- action: "Execute: ls"
type: "BUILD"
execute_commands:
- |
npm install &&
npm test
- npm build