Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

77 Commits

Repository files navigation

node-modules/github-actions

为开源项目提供常见的可复用的 GitHub Actions Workflow

功能列表

  • 单元测试
  • 自动发包
  • 自动初始化仓库配置

单元测试

自动跑 Lint 和 Cov 单测

参考示例:https://github.com/artus-cli/examples/actions

  • 配置 npm scripts
{
"name": "your-project",
"scripts": {
"lint": "eslint .",
"test": "mocha",
"ci": "c8 npm test"
}
}
  • 创建 .github/workflows/ci.yml
name: CIon:
push:
branches: [ master, main ]pull_request:
branches: [ master, main, next, beta, '*.x' ]jobs:
Job:
name: Node.jsuses: node-modules/github-actions/.github/workflows/node-test.yml@master# 支持以下自定义配置,一般用默认值即可# with:# os: 'ubuntu-latest, macos-latest, windows-latest'# version: '18, 20, 22'# test: 'npm run ci'# secrets:# CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}

开启 MySQL 和 Redis 服务依赖

name: CIon:
push:
branches: [ master ]pull_request:
branches: [ master ]jobs:
Job:
name: Node.jsuses: node-modules/github-actions/.github/workflows/node-test-mysql.yml@master# with:# os: 'ubuntu-latest'# version: '18, 20, 22'# secrets:# CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}

开启并行测试

name: CIon:
push:
branches: [ master ]pull_request:
branches: [ master ]jobs:
Job:
name: Node.jsuses: node-modules/github-actions/.github/workflows/node-test-parallel.yml@master# with:# os: 'ubuntu-latest'# version: '18, 20, 22'# parallel: 3# secrets:# CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}

发布 NPM 包

使用 semantic-release 自动发布 NPM 包。

功能详情

  • 根据 Git 日志自动计算版本号
  • 自动生成 ChangeLog 文件
  • 自动创建 GitHub Release 说明
  • 自动打 Tag 标签
  • 自动发布到 Registry,支持 NPM 和 GitHub
  • 自动触发 CNPM 同步

支持合并到主干分支后自动发布,也支持手动发布。

手动发布方式:访问仓库的 Actions 页面,左侧选择 Release Workflow,点击右侧的 Run Workflow 即可。

版本号规则

根据 Commit Message 自动计算下一个版本号:

  • major 大版本:BREAKING CHANGE:,必须加到 commit body 里面而不是第一行标题,否则不生效
perf(pencil): remove graphiteWidth option
BREAKING CHANGE: The graphiteWidth option has been removed.
The default graphite width of 10mm is always used for performance reason.
feat: support WebStream
BREAKING CHANGE: Drop Node.js < 18 support

注意:

  • 不支持发布 0.x 版本,master 首次发布将是 1.0.0 版本
  • 如果你不期望直接发布,请在 beta 分支提交代码运行,将发布 1.0.0-beta.1 版本
  • 多版本发布实践参见 semantic-release 文档

配置方式

  • 创建 GitHub Token

    • 因为生成的 CHANGELOG.md 和 package.json 需回写 GitHub,而默认的 GITHUB_TOKEN 没有该权限。如会被保护分支规则拦截。
    • 因此需要创建一个新的 Token,参见文档
  • 配置 Token

    • 在项目或组织维度配置 GIT_TOKEN
    • 参见文档
  • 创建 .github/workflows/release.yml

name: Releaseon:
# 合并后自动发布push:
branches: [ master, main, next, beta, '*.x' ]# 手动发布# workflow_dispatch: {}permissions:
contents: writedeployments: writeissues: writepull-requests: writeid-token: writejobs:
release:
name: NPMuses: node-modules/github-actions/.github/workflows/npm-release.yml@mastersecrets:
GIT_TOKEN: ${{ secrets.GIT_TOKEN }}# with:# checkTest: false# dryRun: true

发布到 GitHub Package

修改 package.json

{
"publishConfig": {
"access": "public",
"registry": "https://npm.pkg.github.com"
},
}

About

Reusable Workflow For Organization

Resources

Stars

1 star

Watchers

0 watching

Forks

Used by

Contributors

Languages