Skip to content

Reusable Workflow For Organization

License

Notifications You must be signed in to change notification settings

eggjs/github-actions

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

60 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: CI

on:
  push:
    branches: [ master, main ]
  pull_request:
    branches: [ master, main, next, beta, '*.x' ]

jobs:
  Job:
    name: Node.js
    uses: 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: CI

on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

jobs:
  Job:
    name: Node.js
    uses: 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: CI

on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

jobs:
  Job:
    name: Node.js
    uses: 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 文档

配置方式

  • 创建 NPM Token

    • NPM Registry 需创建 Automation Token,参见文档
    • GitHub Package 无需创建,默认支持
  • 创建 GitHub Token

    • 因为生成的 CHANGELOG.md 和 package.json 需回写 GitHub,而默认的 GITHUB_TOKEN 没有该权限
    • 因此需要创建一个新的 Token,参见文档
  • 配置 Token

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

name: Release
on:
  # 合并后自动发布
  push:
    branches: [ master, main, next, beta, '*.x' ]
  # 手动发布
  # workflow_dispatch: {}

jobs:
  release:
    name: Node.js
    uses: node-modules/github-actions/.github/workflows/node-release.yml@master
    secrets:
      NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
      GIT_TOKEN: ${{ secrets.GIT_TOKEN }}
    # with:
      # checkTest: false
      # dryRun: true

发布到 GitHub Package

修改 release.yml 的 secrets:

secrets:
  NPM_TOKEN: ${{ secrets.GITHUB_TOKEN }}

修改 package.json

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

About

Reusable Workflow For Organization

Resources

License

Stars

Watchers

Forks

Languages

  • JavaScript 100.0%
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy