如何运用 GitHub Action 自动化技术公布 npm

lxf2023-03-11 11:45:01

GitHub Action 是一套发放给 GitHub 库房所使用的 CI/CD 专用工具。它能够自动化技术、自定与执行软件开发工作步骤。本文详细介绍如何运用 GitHub Action 自动化技术公布 npm 包版本号和 GitHub release。

CHANGELOG

作为一个开源系统库房,CHANGELOG 修改记录是不可缺少的。还有很多专用工具能够形成 CHANGELOG.md,接下来我们应用@changesets/cli

组装

pnpm i @changesets/cli

应用

实行下列指令开展复位,它会在你新项目网站根目录生成一个.changeset 文件夹名称,里边包括一个环境变量和 README。

pnpm exec changeset init

每一次修改代码以后,运作下列指令:

pnpm exec changeset

如何运用 GitHub Action 自动化技术公布 npm

这儿会提示我们在选择此次变更的种类。不理解的可以自己检索 npm semver 版本信息标准

简单来说 patch是小一点 bug 改动,不受影响以前作用这个小 feature 作用提升可以选择 minjormajor 意味着包括了 breaking change 大版本信息变化,例如 1.0.0 到 2.0.0。

键入此次改动的信息,一路回车键就可以了。

如何运用 GitHub Action 自动化技术公布 npm

此刻它会在.changeset 文件夹名称生成一个任意姓名的md 文档,包括你刚才递交的信息。

如何运用 GitHub Action 自动化技术公布 npm

下面形成版本信息。

pnpm exec changeset version

这一指令会载入你刚才产生的 changeset 文档,载入 CHANGELOG.md,并把 package.json 里的版本信息依照你选择了的种类进行升级

以上就是关于 changeset 的一体化使用方法

release.yml

下面逐渐建立 GitHub Action 的自动化脚本。

在您的新项目网站根目录创建一个.github的文件夹名称,里边再创建一个workflows的文件夹名称,创建一个release.yml文件。

文档内容如下,我一一讲解:

# 整个过程的名称
name: Release

# 开启机会,在 main 支系 push 实际操作开启
on:
  push:
    branches:
      - main

# 默认设置shell
defaults:
  run:
    shell: bash

# 每日任务,界定个changelog 任务
jobs:
  changelog:
    name: Changelog PR or Release
    # 这儿分辨库房owner是不是自己,为了防止他人 fork 库房开启,请自行改动
    if: ${{ github.repository_owner == 'liruifengv' }}
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      # 设定 pnpm。特定版本号7.0,不然就会出错
      - name: Setup PNPM
        uses: pnpm/action-setup@v2.2.1
        with:
          version: ^7.0

      # 设定 Node
      - name: Setup Node
        uses: actions/setup-node@v3
        with:
          node-version: 16
          cache: 'pnpm'
      # 组装依靠
      - name: Install dependencies  run: pnpm install
      # 装包
      - name: Build Packages
        run: pnpm run build
      # 这一步是最关键的。应用changesets/action全自动建立 PR 或是公布
      - name: Create Release Pull Request or Publish
        id: changesets
        uses: changesets/action@v1
        with:
          # 实行升级版本和发布的命令
          version: pnpm run version
          publish: pnpm exec changeset publish
          commit: '[ci] release'
          title: '[ci] release'
        env:
          # 这里要好多个 Token 自变量
          # GITHUB_TOKEN 是 CI 里带有的默认设置 token
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          # NPM_TOKEN 必须稍候在 npm 网址形成。
          NPM_TOKEN: ${{ secrets.NPM_TOKEN }}

为了更好地,大家在工程项目的package.json中加入好多个脚本制作:

// package.json
{
  "scripts": {
    "changeset": "changeset",
    "version": "changeset version && pnpm install"
  }
}

设定 TOKEN

把上述文档递交以后,我们一起来设置一下 token。

登陆你 npm 账户,点一下头像图片挑选 Access tokens。

如何运用 GitHub Action 自动化技术公布 npm

点一下 Generate New Token。能选一键生成还可以更粗粒度控制管理权限

如何运用 GitHub Action 自动化技术公布 npm

形成以后还记得拷贝,关闭页面以后就看不到了。

返回 GitHub,你库房,点一下 Settings,挑选Secrets and variables。创建一个 NPM_TOKEN。那样 GitHub Action 中就可得到他了。

如何运用 GitHub Action 自动化技术公布 npm

详细工作内容

当地递交改动

改动你需要改动的代码。

运作形成 changeset 文档

pnpm exec changeset

形成 changeset 文档以后,留意无需实行再 version 指令了。

储存,把 changeset 文档与我们的编码改动一并递交。

进行 PR

如何运用 GitHub Action 自动化技术公布 npm

在这里我装上changeset-bot。它会自动检测 PR 中是否包含了 changeset 文档然后进行评价。你能点链接组装它。

做为库房 owner 你可以直接 push 到 main 支系,但更多开源系统推动者爱用 PR 的形式。

CI 进行 release PR

PR 合拼进 main 支系以后,就触动了我们前面设定的 action。

如何运用 GitHub Action 自动化技术公布 npm

点一下 Actions 查询,大家刚才那递交,触动了一个叫做 Release 的工作流引擎。你能打开查询,它会在 CI 环境中实行大家预置好一点的脚本制作。

我们自己的脚本制作便是,假如检测出递交带上有 changeset 信息内容,就行全自动进行一个叫做 [ci] release 的 PR。这一 PR 中,CI 全自动帮助我们都做好了 CHANGELOG 的生成,版本信息升级。

如何运用 GitHub Action 自动化技术公布 npm

如果你点一下 merge,合到 main 支系以后,它会自动地发布版本,与此同时分享到 npm 库房和 GitHub release。

未合拼期内,全部带上有 changeset的递交都是会升级这一 PR。

公布

点一下 merge 公布!祝贺你了实现了整个过程。

过一会就可以看到 GitHub release 和 npm 包都公布通过了。

汇总

很有可能有些人说,仿佛都是全自动流水线哦。

实际上这是一套开源系统合作步骤。

  • 仓库推动者,修改代码,形成 changeset
  • CI 全自动归结为,形成 CHANGELOG 并 PR。
  • 仓库管理者,点一下 merge 自动发布。

你一直在手动式改版本升级吗?你开源软件还缺乏完备的合作步骤吗?来试一下这一套步骤吧。

结束语

GitHub Action 也可以做很多事情,例如lint、format 编码;自动化部署这些。我们可以在我 GitHub 找出大量事例。