使用 GitHub Actions 发布您的插件
通过手动的方式创建插件的 release 比较费事也容易出错。在本指南中,您将通过配置 GitHub Actions 的方式,在您创建新的 tag 时自动创建对应的 release。
TIP
Github Action 工作流起初由 argentum 创建和共享。想要获取更多信息以及其他变更,可以查阅 forum announcement 这篇文档。
在您插件的根目录下,创建
.github/workflows/release.yml
文件,并将以下内容写入文件:bashname: 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
在控制台中提交这些文件。
bashgit add .github/workflows/release.yml git commit -m "Add release workflow" git push origin main
创建一个与
manifest.json
文件中的版本号相对应的 tag。bashgit tag -a 1.0.1 -m "1.0.1" git push origin 1.0.1
-a
创建了一个 注释标签.-m
用来指定版本的名称。在 Obsidian 插件中必须与版本号一致。
打开仓库所在的 github 地址并点击 Actions 标签。您的工作流可能还在运行或者已经运行结束。
当工作流运行结束,回到仓库首页并点击 Releases 标签。该工作流已创建 GitHub 版本并将所需资产作为二进制附件上传。
您已将插件设置为在创建新标签时自动创建 GitHub 版本。
- 如果这是插件的第一个版本,您现在可以去 提交您的插件。
- 如果是插件的版本更新,那么现在插件的使用者们可以去更新插件的最新版本了。
使用标准版本自动标记您的版本
您也可以使用标准版本根据您您创建的提交自动应用标签。
标准版本使用 Conventional Commits 给您的提交添加一致性,并根据您的提交自动生成 CHANGELOG.md
。举个栗子:
- 如果您的提交信息以
fix:
开头,那么它会影响补丁版本。 - 如果您的提交信息以
feat:
开头,那么它会影响次级版本。 - 如果您的提交信息的第三行以
BREAKING CHANGE:
开头,那么它会影响主要版本。
TIP
如果您使用的是 Visual Studio Code,Conventional Commits 插件可以帮您去创建 Conventional Commits。
要想开启插件的标准版本:
- 安装标准版本。
npm install --save-dev standard-version
yarn add --save-dev standard-version
- 在
package.json
文件中添加以下属性:
{
"scripts": {
"release": "standard-version"
},
"standard-version": {
"t": ""
}
}
"t": ""
配置标准版本移除开头的v
以符合 Obsidian 的规则。
要想创建版本:
- 根据 Conventional Commits 提交您的修改。
git commit -m "feat: Add settings"
- 创建新的 release 并更新 changelog.
npm run release
yarn release
TIP
默认情况下,如果主版本号低于 1,比如 0.3.4,feat:
和 BREAKING CHANGE:
会更新补丁和次要版本,而不是更新次要和主要版本。要想提高次要版本和主要版本,可以使用如下命令:
# Release as minor
npm run release -- --release-as minor
# Release as major
npm run release -- --release-as major
# Release as minor
yarn release -- --release-as minor
# Release as major
yarn release -- --release-as major
- 推送的新的 tag。
git push --follow-tags origin main
main
是指想要推送的远程分支的名称。
Github 会通过 GitHub Actions 打包并发布插件。