Cargo Actions 是一个基于 Rust 语言开发的命令行工具,旨在为 GitHub Actions 提供高效的工作流模板管理和部署功能。它通过与 GitHub 账号的集成,允许用户方便地上传、搜索和应用工作流模板,从而简化了持续集成和持续部署(CI/CD)的流程。
- 用户认证登录:通过 OAuth 2.0 协议与 GitHub 进行安全集成,用户可以使用他们的 GitHub 账号登录到 Cargo Actions。
- 工作流初始化:支持从 GitHub 仓库或模板 ID 初始化工作流,提供了灵活的方式来集成 GitHub Actions 工作流。
- 模板上传与分享:用户可以将自己创建的工作流模板上传到 Cargo Actions 平台,并与其他用户分享。
- 个性化模板管理:允许用户管理自己上传和收藏的模板,方便快速启动熟悉或常用的工作流配置。
在终端中运行以下命令:
cargo install cargo-actions
使用 github 仓库 url 创建项目,可以省略https://github.com/前缀。默认会使用https://github.com/yexiyue/cargo-actions里的工作流模版。
使用省略形式,规则(User/Repo)
cargo actions init yexiyue/cargo-actions
使用 url 形式
cargo actions init https://github.com/yexiyue/cargo-actions.git
使用 ssh 形式
cargo actions init [email protected]:yexiyue/cargo-actions.git
同时也可以使用Cargo Actions 平台上的工作流,
复制喜欢的工作流模版到终端
示例:
cargo actions init 1 -i
如果你想上传自己的工作流到 cargo actions 平台的话,请先登陆。
cargo actions login
然后准备一个工作流模版
一个标准的工作流模版应该具有下面文件
- cargo-action.json:配置文件,用于提示用户输入
- 模版名.yaml.hbs:模版文件
- README.md(可选)
cargo-action.json
配置字段说明
字段名 | 类型 | 描述 |
---|---|---|
name | string | 模板名称 |
description | string | 模板简短描述 |
path | string | 模板文件路径,默认为 ${name}.yaml.hbs |
prompts | Prompt[] | 定义命令行交互输入项 |
success_message | string | 模板创建成功后的提示信息 |
Prompt 配置说明
prompt 有以下 4 种类型
- type:"input"
字段名 | 类型 | 描述 |
---|---|---|
field | string | 字段名称(与模版中的变量名对应) |
prompt | string | 输入提示 |
default | string | 默认值 |
- type:"confirm"
字段名 | 类型 | 描述 |
---|---|---|
field | string | 字段名称(与模版中的变量名对应) |
prompt | string | 输入提示 |
default | bool | 默认值 |
- type:"select"
字段名 | 类型 | 描述 |
---|---|---|
field | string | 字段名称(与模版中的变量名对应) |
prompt | string | 输入提示 |
default | number | 默认选项对应的索引值 |
options | {value:any,label:string}[] | 选项列表,label 是提示的值,value 是最后在模版中使用的值 |
- type:"multiselect"
字段名 | 类型 | 描述 |
---|---|---|
field | string | 字段名称(与模版中的变量名对应) |
prompt | string | 输入提示 |
default | number[] | 默认选项对应的索引值数组 |
options | {value:any,label:string}[] | 选项列表,label 是提示的值,value 是最后在模版中使用的值 |
示例:
{
"name": "web-deploy",
"description": "构建web 应用到Github Pages",
"prompts": [
{
"type": "select",
"field": "toolchain",
"prompt": "请选择包管理工具",
"default": 0,
"options": [
{
"label": "npm",
"value": "npm"
},
{
"label": "yarn",
"value": "yarn"
},
{
"label": "pnpm",
"value": "pnpm"
}
]
},
{
"type": "confirm",
"field": "enable_cache",
"prompt": "是否启用缓存",
"default": true
},
{
"type": "input",
"field": "node_version",
"prompt": "请输入node版本号",
"default": "node"
},
{
"type": "input",
"field": "folder",
"prompt": "web 项目路径",
"default": "."
},
{
"type": "input",
"prompt": "构建产物目录(相对于web 项目路径)",
"field": "target_dir",
"default": "dist"
},
{
"type": "confirm",
"prompt": "是否需要复制index.html 为404.html 以支持spa",
"field": "copy_index",
"default": false
}
]
}
模版文件是使用handlebars渲染的,模版语法可以参考Handlebars (handlebarsjs.com)
模版文件示例:
注意:
{{{{raw}}}} {{{{/raw}}}}
中的表达式不会被转义。
在上传之前,可以使用check
命令验证工作流模版是否正常工作。
cargo actions check
然后使用upload
命令上传工作流模版
cargo actions upload
使用以下命令可以快速使用自己创建的工作流模版,注意需要登陆。
cargo actions mine
同时您也可以登陆 Cargo Actions 平台个人中心里查看自己创建的工作流模版。
cargo actions favorite
该命令使用与mine
命令类似,从您在 Cargo Actions 平台收藏的模版中进行选择工作流,来初始化。
cargo actions --help
- Rust:作为核心编程语言,Rust 确保了应用程序的高效率和内存安全。
- Cynic:作为 GraphQL 客户端,它使得与后端服务的数据交互变得高效和灵活。
- git2:该库支持对 GitHub 仓库进行克隆和高级操作。
- Clap:此库用于创建功能丰富且用户友好的命令行界面。
- Dialogue-macro:它优化了命令行交互,提供清晰直观的提示和反馈。
如果你对 Cargo Actions 有任何贡献或反馈,欢迎通过 GitHub 仓库进行提交。欢迎任何形式的贡献,包括代码改进、文档更新、新功能建议等。
Cargo Actions 遵循 MIT 许可证。