用电子锻造发布电子应用到GitHub
#node #githubactions #electron

释放电子桌面应用程序可以通过电子锻造和github动作自动化。这篇文章涵盖了自动化的主要步骤。

先决条件

  • 自举电子应用
  • GitHub个人访问令牌(带有repowrite:packages权限)作为GitHub Action Secret(GH_TOKEN

设置

运行以下命令以配置应用程序版本的电子伪造。

npm i @electron-forge/cli @electron-forge/publisher-github -D
npx electron-forge import

最后一个命令应安装必要的依赖项并添加配置文件。

使用包含应用程序名称的“ bin”字段更新forge.config.js文件,并确保GitHub Publisher指向正确的存储库。

// forge.config.js
module.exports = {
  packagerConfig: {
    asar: true
  },
  rebuildConfig: {},
  makers: [
    {
      name: '@electron-forge/maker-squirrel',
      config: {
        bin: 'Electron Starter'
      }
    },
    {
      name: '@electron-forge/maker-zip',
      config: {
        bin: 'Electron Starter'
      },
      platforms: ['darwin']
    },
    {
      name: '@electron-forge/maker-deb',
      config: {
        bin: 'Electron Starter'
      }
    },
    {
      name: '@electron-forge/maker-rpm',
      config: {
        bin: 'Electron Starter'
      }
    }
  ],
  plugins: [
    {
      name: '@electron-forge/plugin-auto-unpack-natives',
      config: {}
    }
  ],
  publishers: [
    {
      name: '@electron-forge/publisher-github',
      config: {
        repository: {
          owner: 'delimitertech',
          name: 'electron-starter'
        },
        prerelease: true
      }
    }
  ]
};

在发布应用程序之前升级包版本。用于发布的NPM脚本应使用Publish Command。将“ productName”设置为应用程序启动时显示的应用程序名称。

// package.json
{
  // ...
  "version": "1.0.1",
  "scripts": {
    // ...
    "publish": "electron-forge publish"
  },
  "productName": "Electron Starter"
}

github操作工作流程用于手动释放Linux,Windows和MacOS的应用程序应包含以下配置。

# .github/workflows/release.yml
name: Release app

on:
  workflow_dispatch:

jobs:
  build:
    strategy:
      matrix:
        os:
          [
            { name: 'linux', image: 'ubuntu-latest' },
            { name: 'windows', image: 'windows-latest' },
            { name: 'macos', image: 'macos-latest' },
          ]

    runs-on: ${{ matrix.os.image }}

    steps:
      - name: Github checkout
        uses: actions/checkout@v3

      - name: Use Node.js
        uses: actions/setup-node@v3
        with:
          node-version: 20

      - run: npm ci

      - name: Publish app
        env:
          GITHUB_TOKEN: ${{ secrets.GH_TOKEN }}
        run: npm run publish

样板

这是我用于开发的样板的link。它包含上面提到的示例以及更多细节。