带你上手GitHub的Actions功能

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. 结果演示:

image.png

image.png

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

image.png


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

posted @   前端小鑫同学  阅读(10)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示