如需在创建工作流时提供语法支持,您可以在 Visual Studio Code (VS Code) 或 Intellij IDEA 等集成开发环境 (IDE) 中使用工作流 JSON 架构。语法支持包括自动补全、验证和内嵌文档。该架构还可集成到您的 CI/CD 流程中。
工作流 JSON 架构采用 JSON Schema 编写而成,JSON Schema 是一种声明式语言,可让您为 JSON 文档添加注解和进行验证。架构源托管在 SchemaStore.org 上,该网站是常见基于 JSON 的配置文件的架构代码库。请注意,SchemaStore.org 中的架构也可以应用于 YAML 文件。
根据您偏好的 IDE 或编辑器,您可以安装插件或应用内置支持来使用 Workflows 架构。架构可以存储在项目根目录下,也可以通过 SchemaStore.org 上的资源网址指定。
工作流定义文件的文件名格式
无论您使用的是哪种 IDE 或编辑器,如果您使用插件或扩展程序自动应用 SchemaStore.org 中的 Workflows 架构,则工作流定义文件的文件名格式必须如下所示:
workflows.json
workflows.yaml
workflows.yml
*.workflows.json
*.workflows.yaml
*.workflows.yml
如果您使用的是 VS Code,或者您使用的是内置支持来应用 Workflows 架构,则可以替换文件名格式。
限制
通过 Workflows JSON 架构提供的语法支持侧重于自动补全用于定义工作流的关键字。该架构支持对某些标准库函数进行自动补全,但对动态变量名称、表达式和其他表达式辅助功能的支持有限。该架构还假定工作流已完成,并且不考虑任何后处理(例如子工作流的组合)。
为避免 JSON 架构冲突,我们建议您不要使用多个扩展程序或插件来支持 Workflows 语法。
在 VS Code 中关联工作流 JSON 架构
VS Code 是一个在桌面设备上运行的源代码编辑器,适用于 Windows、macOS 和 Linux。它内置了对多种语言的支持,并支持其他语言和运行时的扩展程序。如需在您的机器上安装并设置 VS Code,请参阅 Visual Studio Code。
以下是您可以在 VS Code 中关联 Workflows JSON 架构的各种方式。
使用 Cloud Code 在 YAML 中创建工作流
Cloud Code 是一组 IDE 插件,可帮助您更轻松地创建、部署应用以及将应用与 Google Cloud 集成。
如果您使用 VS Code 作为 IDE,则可以在编写 YAML 工作流时使用 Cloud Code,它会自动从 SchemaStore.org 拉取工作流 JSON 架构。如需确认架构是否按预期应用,请在 VS Code 工作区或文件夹中创建 YAML 工作流,并确认系统是否会针对 Workflows 关键字执行自动补全。
Cloud Code 还支持离线 Google Cloud 架构,可供可能受到网络或 IDE 限制的用户使用。如需了解详情,请参阅以下资源:
使用 RedHat 的 YAML 在 YAML 中创建工作流
除了使用适用于 VS Code 的 Cloud Code 扩展程序之外,您还可以使用 YAML by RedHat 扩展程序。此扩展程序提供 YAML 语言支持,并包含内置的 Kubernetes 语法支持。它会自动从 SchemaStore.org 提取 Workflows JSON 架构。
安装该扩展程序后,创建一个 YAML 工作流。文件顶部应有一个 Google Cloud Workflows 配置文件 (workflows.json) 链接。如果您点击该链接,Workflows JSON 架构将在 VS Code 编辑器中打开。
替换文件名格式
使用 Cloud Code 或 RedHat 的 YAML 在 YAML 中创建工作流时,您可以替换应用于 Workflows 架构的默认文件名格式。您必须在 settings.json
文件中指定映射。设置以 JSON 格式编写,您可以直接在 VS Code 编辑器中打开此文件进行查看和修改。
例如,如果您使用的是 Cloud Code for VS Code 扩展程序,则可以在 cloudcode.yaml.schemas
属性下映射文件名格式:
{ "cloudcode.yaml.schemas": { "https://json.schemastore.org/workflows.json": [ "GLOB_PATTERN.yaml", "my-special-workflow.yaml" ] } }
或者,如果您使用的是 YAML by RedHat 扩展,请在 yaml.schemas
属性下映射文件名格式:
{ "yaml.schemas": { "https://json.schemastore.org/workflows.json": [ "GLOB_PATTERN.yaml", "my-special-workflow.yaml" ] } }
左侧的架构会应用于右侧的正则表达式;每个架构都使用 JSON 数组与多个正则表达式相关联。架构必须是相对路径,而不是绝对路径。架构可以是本地架构,也可以是在线架构。
使用内置支持在 JSON 中创建工作流
您可以使用 VS Code 中的内置支持,通过在 settings.json
文件的 json.schemas
属性下指定映射来关联 Workflows JSON 架构。您可以直接在 VS Code 编辑器中打开此文件,以便查看和修改该文件。
例如,如需从 SchemaStore.org 拉取工作流 JSON 架构,请执行以下操作:
{ "json.schemas": [ { "description": "SchemaStore.org", "fileMatch": [ "workflows.json", "*.workflows.json" ], "url": "https://json.schemastore.org/workflows.json" } ] }
左侧的架构会应用于右侧的正则表达式;架构使用 JSON 数组与多个正则表达式相关联。架构必须是相对路径,而不是绝对路径。架构可以是本地架构,也可以是在线架构。
您可以替换文件名格式。例如:
{ "json.schemas": [ { "description": "Workflows schema", "fileMatch": [ "GLOB_PATTERN.json", "FILE_NAME.json" ], "url": "https://json.schemastore.org/workflows.json" } ] }
如需了解详情,请参阅使用 Visual Studio Code 编辑 JSON。
在 IntelliJ IDEA 中关联工作流 JSON 架构
IntelliJ IDEA 是一款适用于 Java 虚拟机语言的跨平台 IDE。其他语言通过插件支持。如需在您的机器上安装和设置 IntelliJ IDEA,请参阅安装 IntelliJ IDEA。
以下是您可以在 IntelliJ IDEA 中关联 Workflows JSON 架构的各种方法。
使用 Cloud Code 在 YAML 或 JSON 中创建工作流
Cloud Code 是一组 IDE 插件,可帮助您更轻松地创建、部署应用以及将应用与 Google Cloud 集成。
如果您使用 IntelliJ 作为 IDE,则可以在 YAML 或 JSON 中编写工作流时使用 Cloud Code,它会自动从 SchemaStore.org 拉取工作流 JSON 架构。Cloud Code 还支持离线 Google Cloud 架构,可供可能受到网络或 IDE 限制的用户使用。如需了解详情,请参阅以下资源:
使用内置支持以 YAML 或 JSON 格式创建工作流
IntelliJ IDEA 可以自动下载和使用 SchemaStore.org 中的架构。您可以下载工作流 JSON 架构并将其存储在项目根目录下,也可以指定资源的网址,以便 IntelliJ IDEA 自动下载架构。如需映射架构,请按照说明配置自定义 JSON 架构。
默认情况下,会自动从 SchemaStore.org 下载架构,并且系统会根据架构对默认文件名模式进行验证。
如需替换默认文件模式,请通过设置对话框前往 JSON 架构映射,然后执行以下操作:
- 在名称字段中,输入 Workflows 架构。
- 在 Schema file or 网址(架构文件或网址)字段中,输入 https://json.schemastore.org/workflows.json。
- 在 Schema version 列表中,选择 JSON Schema version 7。
- 添加您选择的文件路径模式。
通过 jsonSchema.xml
映射架构
IntelliJ IDEA Community Edition 源代码可通过 https://github.com/JetBrains/intellij-community 获取。
您可以通过向 jsonSchemas.xml 添加条目,为 IntelliJ IDEA 编辑器映射工作流 JSON 架构。
向 CI/CD 流程添加工作流语法验证
在持续集成、交付和部署 (CI/CD) 流程中添加语法验证有助于减少集成、测试、交付和部署期间的错误。
例如,您可以使用 ajv-cli 工具根据工作流 JSON 架构对数据进行验证。请注意,安装该工具时,还应安装 ajv-formats。例如:
npm install -g ajv-cli ajv-formats
其他可能有用的工具:
- MegaLinter v8r - MegaLinter 是一款适用于 CI/CD 工作流的开源工具;v8r 会检查 JSON/YAML 文件的有效性,看它们是否在 SchemaStore.org 上定义了匹配的架构。
- JSON 验证器 - 按编程语言或开发平台对 JSON 验证工具进行分类。
后续步骤
- Google Cloud 博客:工作流获得更新后的 JSON 架构