前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >带你上手GitHub的Actions功能

带你上手GitHub的Actions功能

作者头像
前端小鑫同学
发布2022-12-26 09:38:39
7020
发布2022-12-26 09:38:39
举报
文章被收录于专栏:小鑫同学编程历险记

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

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

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

  1. 定义action执行脚本
代码语言:javascript
复制
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脚本
代码语言:javascript
复制
// 导入相关依赖
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. 添加说明文档:
代码语言:javascript
复制
# 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. 编写脚本
代码语言:javascript
复制
# 触发条件代码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
image.png
image.png
  1. 可以将action的执行定义周期性执行,具体参见官方文档,如下截图部分,注意时区问题:
image.png
image.png
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-12-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 准备和说明:
  • 编写Action:
  • 添加到Workflows:
相关产品与服务
多因子身份认证
多因子身份认证(Multi-factor Authentication Service,MFAS)的目的是建立一个多层次的防御体系,通过结合两种或三种认证因子(基于记忆的/基于持有物的/基于生物特征的认证因子)验证访问者的身份,使系统或资源更加安全。攻击者即使破解单一因子(如口令、人脸),应用的安全依然可以得到保障。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档