带你上手GitHub的Actions功能

简介: 带你上手GitHub的Actions功能

这里我们通过编写一个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 操作上下文的访问。
  1. 编写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. 结果演示:

1.png

2.png

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

3.png



相关文章
|
7月前
|
自然语言处理 搜索推荐 开发者
GitHub Copilot Enterprise三大创新功能
【2月更文挑战第9天】GitHub Copilot Enterprise三大创新功能
146 4
GitHub Copilot Enterprise三大创新功能
|
监控 安全 机器人
通过GitHub Actions给微信公众测试号和钉钉群定时推送消息(Python)
通过GitHub Actions给微信公众测试号和钉钉群定时推送消息(Python)
228 0
|
存储 Ubuntu 持续交付
GitHub Actions 指南(上)
GitHub Actions 指南
162 0
|
2月前
|
JavaScript API 开发工具
使用GitHub Actions自动发布electron多端安装程序
使用GitHub Actions自动发布electron多端安装程序
43 8
利用 GitHub Actions 自动化你的软件开发流程
GitHub Actions 是由 GitHub 提供的自动化工具,可让你在仓库中触发和执行自动化工作流程,如自动运行测试和部署应用。其核心概念包括工作流程(定义在 YAML 文件中的一系列自动化步骤)、作业和步骤。本文将指导你如何设置和使用 GitHub Actions,并提供实用的自动化示例,帮助你提高开发效率和代码质量。通过简单的配置文件,你可以实现自动运行测试、部署应用甚至自动合并 Pull Requests。
利用 GitHub Actions 自动化你的软件开发流程
在现代软件开发中,自动化是提升效率与质量的关键。GitHub Actions 作为 GitHub 的强大自动化工具,允许你在仓库中自动执行多种任务,如测试、打包、部署代码及自动合并 Pull Requests。本文介绍了 GitHub Actions 的核心概念、设置方法及其实用示例,帮助你快速上手并优化开发流程。通过 YAML 文件定义的工作流程可显著提高工作效率和代码质量。
|
3月前
|
开发者
利用 GitHub Actions 自动化你的软件开发流程
在快速发展的软件开发环境中,自动化对于提升效率与质量至关重要。GitHub Actions 作为一款强大的工具,能帮助开发者实现从自动运行测试到部署应用等工作的自动化。本文详细介绍了 GitHub Actions 的核心概念、设置方法及实际应用示例,如自动测试、部署和合并 Pull Requests,助力提升开发流程的自动化水平。
|
4月前
|
CDN
惊呆了、老铁。CSDN竟然有GitHub的加速功能????
这篇文章介绍了几种加速访问GitHub的方法,包括使用镜像网站、代理网站下载、利用CDN加速以及转入Gitee平台进行加速。作者建议,对于较大的项目推荐使用代理网站或Gitee下载,而对于较小的项目,使用CDN加速即可满足需求。
惊呆了、老铁。CSDN竟然有GitHub的加速功能????
利用 GitHub Actions 自动化你的软件开发流程
GitHub Actions 是 GitHub 提供的自动化工具,可在仓库中触发和执行工作流程,包括自动运行测试、部署应用等。其核心概念包括工作流程(Workflow)、作业(Job)和步骤(Step),均定义在 YAML 文件中。本文将指导你如何设置和使用 GitHub Actions,并提供自动运行测试、部署应用及合并 Pull Requests 的示例,帮助提高开发效率和代码质量。
|
3月前
|
消息中间件 Kafka Go
使用github.com/IBM/sarama 编写消费kafka的功能
使用github.com/IBM/sarama 编写消费kafka的功能