Dear,大家好,我是“前端小鑫同学”,????长期从事前端开发,安卓开发,热衷技术,在编程路上越走越远~
这里我们通过编写一个JavaScript版本的自动创建issuse的例子来演示一下Actions功能,你也可以通过Actions来做更多自动化的事情哟。
准备和说明:
- 在GitHub上创建空项目并克隆到本地:auto-create-issuse-action;
- Node环境要求为12.x版本;
- 使用npm初始化目录:
npm init -y
;
编写Action:
- 定义action执行脚本:
name: "auto-create-issuse-action"
description: "一个自动创建issuse的action"
# 定义输入参数
inputs:
token:
description: "Personal access tokens"
required: true
owner:
description: "项目作者"
required: true
repo:
description: "仓库名称"
required: true
runs:
# 脚本运行环境(按官方文档给的12版本来使用)
using: "node12"
# 脚本执行入口(这里我们要用@vercel/ncc编译)
main: "dist/index.js"
- 安装需要的依赖:
- @actions/core:提供了工作流命令、输入和输出变量、退出状态和调试消息的接口。
- @actions/github:得到经过身份验证的 Octokit REST 客户端和对 GitHub 操作上下文的访问。
- 编写
action
脚本:
// 导入相关依赖
const github = require("@actions/github");
const core = require("@actions/core");
const dayjs = require("dayjs");
const fs = require("fs");
// 接收输入参数
const token = core.getInput("token");
const owner = core.getInput("owner");
const repo = core.getInput("repo");
// 获取octokit对象进行后续操作
const octokit = github.getOctokit(token);
// 执行函数
(async () => {
try {
await octokit.rest.issues.create({
owner: owner,
repo: repo,
title: getTitle(),
body: getBody(),
});
} catch (error) {
console.log("[ error ] >", error);
}
})();
function getTitle() {
return `【每日计划】 ${getDate()}`;
}
function getBody() {
return fs.readFileSync('./template.md', "utf-8");
}
function getDate() {
return dayjs().add("8", "hour").format("YYYY-MM-DD");
}
- 安装
@vercel/ncc
后执行npx ncc build index.js --license licenses.txt
进行编译; - 添加说明文档:
# AutoCreateIssuseAction
这个Action可以辅助创建每日计划的一个issuse。
## Inputs
### `token`
**Required** Personal access tokens
### `owner`
**Required** 项目作者
### `repo`
**Required** 仓库名称
## Example usage
```yaml
uses: OSpoon/auto-create-issuse-action@master
with:
token: ${{secrets.TOKEN}}
owner: OSpoon
repo: auto-create-issuse-action
添加到Workflows:
- 创建:
.github/workflows/main.yml
- 编写脚本:
# 触发条件代码push后执行
on: [push]
# 执行工作列表
jobs:
# 执行的任务(自动创建issuse)
auto-create-issuse:
# 运行环境为最新ubuntu
runs-on: ubuntu-latest
steps:
# ①拉取代码
- name: Checkout
uses: actions/checkout@v2
# create issuse
- name: create issuse step
# 参照auto-create-issuse-action的说明文档
uses: OSpoon/auto-create-issuse-action@master
with:
token: ${{secrets.AUTO_TOKEN}}
owner: OSpoon
repo: auto-create-issuse-action
- 结果演示:
- 可以将action的执行定义周期性执行,具体参见官方文档,如下截图部分,注意时区问题:
欢迎关注我的公众号“前端小鑫同学”,原创技术文章第一时间推送。