带你上手GitHub的Actions功能
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的执行定义周期性执行,具体参见官方文档,如下截图部分,注意时区问题:
欢迎关注我的公众号“前端小鑫同学”,原创技术文章第一时间推送。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了