手动推送 tag 触发 GitHub 工作流

本文使用kimi对文章进行润色处理


在使用 GitHub 工作流发布 npm 包时,手动管理版本号的方式比自动更新版本号更加灵活和可靠。以下是一个基于手动推送 tag 触发 GitHub 工作流的示例,适用于同时发布到 GitHub Packages 和 npm 官方仓库。

GitHub 工作流配置

触发条件

通过手动推送带有版本号的 tag(如 v1.0.0)来触发工作流。

name: Publish Package

on:
  push:
    tags:
      - 'v*'  # 匹配所有以 v 开头的标签(如 v1.0.0)

工作流步骤

  1. Checkout 代码
    检出代码以便后续操作。

    - name: Checkout Code
      uses: actions/checkout@v4
    
  2. 设置 Node.js 环境
    配置 Node.js 环境,指定 Node.js 版本。

    - name: Setup Node.js
      uses: actions/setup-node@v4
      with:
        node-version: 20
    
  3. 缓存 Node 模块
    使用缓存加速依赖安装过程。

    - name: Cache Node Modules
      uses: actions/cache@v4
      with:
        path: node_modules
        key: ${{ runner.os }}-node-${{ hashFiles('package-lock.json') }}
    
  4. 安装依赖
    使用 npm ci 安装项目依赖。

    - name: Install Dependencies
      run: npm ci
    
  5. 构建项目
    执行构建命令,生成可发布的包。

    - name: Build Package
      run: npm run build
    
  6. 发布到 GitHub Packages
    将包发布到 GitHub Packages。

    - name: Publish to GitHub Packages
      run: |
        echo "//npm.pkg.github.com/:_authToken=${{ secrets.GH_PACKAGES_TOKEN }}" > .npmrc
        npm publish
      env:
        NODE_AUTH_TOKEN: ${{ secrets.GH_PACKAGES_TOKEN }}
    
  7. 发布到 npm 官方仓库
    将包发布到 npm 官方仓库。

    - name: Publish to npm
      run: |
        sed -i 's/"name": "@scope\/package-name"/"name": "package-name"/g' package.json
        echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" > .npmrc
        npm publish --access public --registry=https://registry.npmjs.org
        git checkout package.json
    

通过git推送标签触发工作流

git tag v1.1.0
git push origin v1.1.0

完整代码

name: Publish Package

on:
  push:
    tags:
      - 'v*'  # 匹配所有以 v 开头的标签(如 v1.0.0)

jobs:
  publish:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Code
        uses: actions/checkout@v4

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: 20

      - name: Cache Node Modules
        uses: actions/cache@v4
        with:
          path: node_modules
          key: ${{ runner.os }}-node-${{ hashFiles('package-lock.json') }}

      - name: Install Dependencies
        run: npm ci

      - name: Build Package
        run: npm run build

      - name: Publish to GitHub Packages
        run: |
          echo "//npm.pkg.github.com/:_authToken=${{ secrets.GH_PACKAGES_TOKEN }}" > .npmrc
          npm publish
        env:
          NODE_AUTH_TOKEN: ${{ secrets.GH_PACKAGES_TOKEN }}

      - name: Publish to npm
        run: |
          sed -i 's/"name": "@scope\/package-name"/"name": "package-name"/g' package.json
          echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" > .npmrc
          npm publish --access public --registry=https://registry.npmjs.org
          git checkout package.json

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Chelase

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值