Dear,大家好,我是“前端小鑫同学”,????长期从事前端开发,安卓开发,热衷技术,在编程路上越走越远~


这里我们通过编写一个JavaScript版本的自动创建issuse的例子来演示一下Actions功能,你也可以通过Actions来做更多自动化的事情哟。

准备和说明:

  1. 在GitHub上创建空项目并克隆到本地:auto-create-issuse-action;
  2. Node环境要求为12.x版本;
  3. 使用npm初始化目录:​​npm init -y​​;

编写Action:

  1. 定义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"

  1. 安装需要的依赖:
    1. @actions/core:提供了工作流命令、输入和输出变量、退出状态和调试消息的接口。
    2. @actions/github:得到经过身份验证的 Octokit REST 客户端和对 GitHub 操作上下文的访问。
  2. 编写​​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");
}
  1. 安装​​@vercel/ncc​​后执行​​npx ncc build index.js --license licenses.txt​​进行编译;
  2. 添加说明文档:
# 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:

  1. 创建:​​.github/workflows/main.yml​
  2. 编写脚本:
# 触发条件代码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
  1. 结果演示:

带你上手GitHub的Actions功能_运行环境

带你上手GitHub的Actions功能_GitHub_02

  1. 可以将action的执行定义周期性执行,具体参见​​官方文档​​,如下截图部分,注意时区问题:

带你上手GitHub的Actions功能_github_03


欢迎关注我的公众号“前端小鑫同学”,原创技术文章第一时间推送。