GitHub actions实现自动发布npm package

之前写过一篇文章,如何将rollup + StoryBook实现的react组件库发布到私有仓库,文章链接
在注意到GitHub的Actions功能之后,觉得这才是我们需要的CICD解决方案,比之前Jenkins,Azure Pipeline方便多了。 因此这里记录下使用Github actions的使用过程。

先在https://www.npmjs.com注册一个账号,进入account

点击access tokens

生成一个新的token,注意:此token只显示一次

回到GitHub,新建一个repository,点击Settings->secrets,新建secret

进入actions页面,新建一个workflow,输入以下代码

name: Next release

on:
  push:
    branches: [ release ]
  pull_request:
    branches: [ release ]

jobs:
  publish-to-npm:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout release branch code
        uses: actions/checkout@v2

      - name: Use Node.js
        uses: actions/setup-node@v1.4.2
        with:
          node-version: 12
          registry-url: https://registry.npmjs.org

      - name: Publish to NPM
        run: npm publish || true
        env:
          NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}

上述代码的含义是在release分支做push/pull操作时触发该workflow,运行npm相关指令,将结果推送到https://registry.npmjs.org的NPM_TOKEN指定的账户下。

为了publish install能顺利执行,需要添加package.json文件,npm init -y

{
  "name": "cicd-demo",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "repository": {
    "type": "git",
    "url": "git+https://github.com/992990831/cicd-demo.git"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "bugs": {
    "url": "https://github.com/992990831/cicd-demo/issues"
  },
  "homepage": "https://github.com/992990831/cicd-demo#readme"
}

提交到Release分支,进入actions tab查看

回到NPM,查看账户下的packages

可以看到package发布成功。
需要注意的一点是,package的version,是由代码库中的package.json -> version节点指定的。 如果要重新发布,需要手动修改version值。 后续需要考虑怎么通过自动化的方式,动态指定version值。

posted @ 2021-08-31 10:47  老胡Andy  阅读(299)  评论(0编辑  收藏  举报