Crates.io | cargo-actions |
lib.rs | cargo-actions |
version | 0.3.8 |
source | src |
created_at | 2024-01-28 11:49:57.909807 |
updated_at | 2024-06-25 13:55:31.918574 |
description | cargo, create a CI github action |
homepage | |
repository | https://github.com/yexiyue/yexiyue/cargo-actions |
max_upload_size | |
id | 1117524 |
size | 139,620 |
Cargo Actions 是一个基于 Rust 语言开发的命令行工具,旨在为 GitHub Actions 提供高效的工作流模板管理和部署功能。它通过与 GitHub 账号的集成,允许用户方便地上传、搜索和应用工作流模板,从而简化了持续集成和持续部署(CI/CD)的流程。
在终端中运行以下命令:
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 git@github.com:yexiyue/cargo-actions.git
同时也可以使用Cargo Actions 平台上的工作流,
复制喜欢的工作流模版到终端
示例:
cargo actions init 1 -i
如果你想上传自己的工作流到 cargo actions 平台的话,请先登陆。
cargo actions login
然后准备一个工作流模版
一个标准的工作流模版应该具有下面文件
cargo-action.json
配置字段说明
字段名 | 类型 | 描述 |
---|---|---|
name | string | 模板名称 |
description | string | 模板简短描述 |
path | string | 模板文件路径,默认为 ${name}.yaml.hbs |
prompts | Prompt[] | 定义命令行交互输入项 |
success_message | string | 模板创建成功后的提示信息 |
Prompt 配置说明
prompt 有以下 4 种类型
字段名 | 类型 | 描述 |
---|---|---|
field | string | 字段名称(与模版中的变量名对应) |
prompt | string | 输入提示 |
default | string | 默认值 |
字段名 | 类型 | 描述 |
---|---|---|
field | string | 字段名称(与模版中的变量名对应) |
prompt | string | 输入提示 |
default | bool | 默认值 |
字段名 | 类型 | 描述 |
---|---|---|
field | string | 字段名称(与模版中的变量名对应) |
prompt | string | 输入提示 |
default | number | 默认选项对应的索引值 |
options | {value:any,label:string}[] | 选项列表,label 是提示的值,value 是最后在模版中使用的值 |
字段名 | 类型 | 描述 |
---|---|---|
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)
模版文件示例:
name: web on: push: branches: - "master" workflow_dispatch: jobs: deploy:
runs-on: ubuntu-latest permissions: contents: write concurrency: group:
{{#raw}}$\{{ github.workflow }}-$\{{ github.ref }}{{/raw}}
steps: - name: Checkout repository uses: actions/checkout@v4
{{#if (eq toolchain "pnpm")}}
- name: Install pnpm run: npm install -g pnpm
{{/if}}
- name: Sync node version and setup cache uses: actions/setup-node@v4 with:
node-version: "{{node_version}}"
{{#if enable_cache}}
{{#if (eq toolchain "pnpm")}}
cache: "{{folder}}/pnpm-lock.yaml"
{{/if}}
{{#if (eq toolchain "npm")}}
cache: "{{folder}}/package-lock.json"
{{/if}}
{{#if (eq toolchain "yarn")}}
cache: "{{folder}}/yarn.lock"
{{/if}}
{{/if}}
- name: Install dependencies run: | cd
{{folder}}
{{toolchain}}
install - name: Build run: | cd
{{folder}}
{{toolchain}}
build
{{#if copy_index}}
cp
{{target_dir}}/index.html
{{target_dir}}/404.html
{{/if}}
- name: Deploy uses: peaceiris/actions-gh-pages@v4 with:
{{#raw}}github_token: $\{{ secrets.GITHUB_TOKEN }}{{/raw}}
publish_dir:
{{folder}}/{{target_dir}}
注意:
{{{{raw}}}} {{{{/raw}}}}
中的表达式不会被转义。
在上传之前,可以使用check
命令验证工作流模版是否正常工作。
cargo actions check
然后使用upload
命令上传工作流模版
cargo actions upload
使用以下命令可以快速使用自己创建的工作流模版,注意需要登陆。
cargo actions mine
同时您也可以登陆 Cargo Actions 平台个人中心里查看自己创建的工作流模版。
cargo actions favorite
该命令使用与mine
命令类似,从您在 Cargo Actions 平台收藏的模版中进行选择工作流,来初始化。
cargo actions --help
如果你对 Cargo Actions 有任何贡献或反馈,欢迎通过 GitHub 仓库进行提交。欢迎任何形式的贡献,包括代码改进、文档更新、新功能建议等。
Cargo Actions 遵循 MIT 许可证。