Skip to content
On this page

使用 GitHub Actions 发布您的插件

通过手动的方式创建插件的 release 比较费事也容易出错。在本指南中,您将通过配置 GitHub Actions 的方式,在您创建新的 tag 时自动创建对应的 release。

TIP

Github Action 工作流起初由 argentum 创建和共享。想要获取更多信息以及其他变更,可以查阅 forum announcement 这篇文档。

  1. 在您插件的根目录下,创建 .github/workflows/release.yml 文件,并将以下内容写入文件:

    bash
    name: Release Obsidian plugin
    
    on:
      push:
        tags:
          - "*"
    
    env:
      PLUGIN_NAME: your-plugin-id # Change this to match the id of your plugin.
    
    jobs:
      build:
        runs-on: ubuntu-latest
    
        steps:
          - uses: actions/checkout@v2
          - name: Use Node.js
            uses: actions/setup-node@v1
            with:
              node-version: "14.x"
    
          - name: Build
            id: build
            run: |
              npm install
              npm run build
              mkdir ${{ env.PLUGIN_NAME }}
              cp main.js manifest.json styles.css ${{ env.PLUGIN_NAME }}
              zip -r ${{ env.PLUGIN_NAME }}.zip ${{ env.PLUGIN_NAME }}
              ls
              echo "::set-output name=tag_name::$(git tag --sort version:refname | tail -n 1)"
    
          - name: Create Release
            id: create_release
            uses: actions/create-release@v1
            env:
              GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
              VERSION: ${{ github.ref }}
            with:
              tag_name: ${{ github.ref }}
              release_name: ${{ github.ref }}
              draft: false
              prerelease: false
    
          - name: Upload zip file
            id: upload-zip
            uses: actions/upload-release-asset@v1
            env:
              GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
            with:
              upload_url: ${{ steps.create_release.outputs.upload_url }}
              asset_path: ./${{ env.PLUGIN_NAME }}.zip
              asset_name: ${{ env.PLUGIN_NAME }}-${{ steps.build.outputs.tag_name }}.zip
              asset_content_type: application/zip
    
          - name: Upload main.js
            id: upload-main
            uses: actions/upload-release-asset@v1
            env:
              GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
            with:
              upload_url: ${{ steps.create_release.outputs.upload_url }}
              asset_path: ./main.js
              asset_name: main.js
              asset_content_type: text/javascript
    
          - name: Upload manifest.json
            id: upload-manifest
            uses: actions/upload-release-asset@v1
            env:
              GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
            with:
              upload_url: ${{ steps.create_release.outputs.upload_url }}
              asset_path: ./manifest.json
              asset_name: manifest.json
              asset_content_type: application/json
    
          - name: Upload styles.css
            id: upload-css
            uses: actions/upload-release-asset@v1
            env:
              GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
            with:
              upload_url: ${{ steps.create_release.outputs.upload_url }}
              asset_path: ./styles.css
              asset_name: styles.css
              asset_content_type: text/css
  2. 在控制台中提交这些文件。

    bash
    git add .github/workflows/release.yml
    git commit -m "Add release workflow"
    git push origin main
  3. 创建一个与 manifest.json 文件中的版本号相对应的 tag。

    bash
    git tag -a 1.0.1 -m "1.0.1"
    git push origin 1.0.1
    • -a 创建了一个 注释标签.
    • -m 用来指定版本的名称。在 Obsidian 插件中必须与版本号一致。
  4. 打开仓库所在的 github 地址并点击 Actions 标签。您的工作流可能还在运行或者已经运行结束。

  5. 当工作流运行结束,回到仓库首页并点击 Releases 标签。该工作流已创建 GitHub 版本并将所需资产作为二进制附件上传。

您已将插件设置为在创建新标签时自动创建 GitHub 版本。

  • 如果这是插件的第一个版本,您现在可以去 提交您的插件
  • 如果是插件的版本更新,那么现在插件的使用者们可以去更新插件的最新版本了。

使用标准版本自动标记您的版本

您也可以使用标准版本根据您您创建的提交自动应用标签。

标准版本使用 Conventional Commits 给您的提交添加一致性,并根据您的提交自动生成 CHANGELOG.md 。举个栗子:

  • 如果您的提交信息以 fix: 开头,那么它会影响补丁版本。
  • 如果您的提交信息以 feat: 开头,那么它会影响次级版本。
  • 如果您的提交信息的第三行以 BREAKING CHANGE: 开头,那么它会影响主要版本。

TIP

如果您使用的是 Visual Studio Code,Conventional Commits 插件可以帮您去创建 Conventional Commits。

要想开启插件的标准版本:

  1. 安装标准版本。
bash
npm install --save-dev standard-version
bash
yarn add --save-dev standard-version
  1. package.json 文件中添加以下属性:
json
{
  "scripts": {
    "release": "standard-version"
  },
  "standard-version": {
    "t": ""
  }
}
  • "t": "" 配置标准版本移除开头的 v 以符合 Obsidian 的规则。

要想创建版本:

  1. 根据 Conventional Commits 提交您的修改。
bash
git commit -m "feat: Add settings"
  1. 创建新的 release 并更新 changelog.
bash
npm run release
bash
yarn release

TIP

默认情况下,如果主版本号低于 1,比如 0.3.4,feat:BREAKING CHANGE: 会更新补丁和次要版本,而不是更新次要和主要版本。要想提高次要版本和主要版本,可以使用如下命令:

bash
# Release as minor
npm run release -- --release-as minor
# Release as major
npm run release -- --release-as major
bash
# Release as minor
yarn release -- --release-as minor
# Release as major
yarn release -- --release-as major
  1. 推送的新的 tag。
bash
git push --follow-tags origin main
  • main 是指想要推送的远程分支的名称。

Github 会通过 GitHub Actions 打包并发布插件。