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值。