在Travis CI服务器上使用Electron自动进行跨平台部署

这是一个有关如何在Travis CI上设置Electron应用程序的教程,以便通过简单的请求即可将新版本部署到Github Releases

样板

我创建了一个样板副本 ,该样例具有所有必需的配置,可以将一个简约的应用程序部署到Github版本中。 如果您在本教程中迷路了,可以参考该示例。 另外,如果您还没有电子应用程序,并且只想以它为例,请随意。

电子生成器

我们需要一个软件包来处理将应用程序打包为可执行文件并部署到Github版本。 Electron Builder是一个很棒的npm软件包,可在所有三个操作系统上处理电子应用程序的构建,签名,公证和部署。 使用纱线( Electron Builder推荐 )添加:

yarn add  electron- builder  --dev

Electron Builder使用应用程序的package.json文件进行大多数配置。

{
  "name" : "{APP_NAME}" ,
  "version" : "{VERSION_NUMBER}" ,
  "description" : "A minimal Electron application that deploys on CI servers" ,
  "main" : "main.js" ,
  "scripts" : {
    "start" : "electron ." ,
    "release" : "electron-builder" ,
    "test" : "echo success"
  },
  "repository" : "https://github.com/{USER_NAME}/{REPO_NAME}" ,
  "keywords" : [
    "electron" ,
    "ci" ,
    "travis" ,
    "tutorial" ,
    "demo"
  ],
  "author" : "{USER_NAME}" ,
  "build" : {
    "appId" : "{APP_ID}" ,
    "publish" : "github" ,
    "dmg" : {
      "contents" : [
        {
          "x" : 110 ,
          "y" : 150
        },
        {
          "x" : 240 ,
          "y" : 150 ,
          "type" : "link" ,
          "path" : "/Applications"
        }
      ]
    },
    "appImage" : {
      "license" : "LICENSE"
    },
    "nsis" : {
      "createDesktopShortcut" : "always" ,
      "license" : "LICENSE"
    }
  },
  "devDependencies" : {
    "electron" : "^4.0.1" ,
    "electron-builder" : "^21.2.0"
  }
}

用您自己的值替换所有配置变量。 配置变量均为{BRACKETS}中的大写字母。

您应该在目录的根目录中有一个名为LICENSE的许可证文件,并且在您的构建文件夹( build/license_en.txt )中有一个名为license_en.txt的副本。 Electron Builder将这些许可证用作安装程序的许可证协议。

appId的良好做法是反向域名。 例如,我们的是io.qvault.app

您可以根据需要将测试脚本设置为实际运行测试,以上只是在屏幕上打印“成功”。 我们将配置Travis以在CI服务器上运行这些测试。

此时,您应该可以运行

yarn release --publish never

它将在本地构建您的应用并将其打包到dist目录中。 但是,仅会为您的本地操作系统构建该程序包。

特拉维斯CI

导航至https://travis-ci.org/并使用您的Github帐户进行注册。 登录后,您应该能够选择要连接到Travis的存储库。

将此代码复制到存储库根目录下的.travis.yml中:

language : node_js

node_js : 
  - '11.6.0'

# Always run two parallel builds: one on mac and one on linux
# the linux build will use wine to be able to build windows and
# linux apps
matrix : 
  include : 
    - os: osx
      osx_image : xcode10.2
      language : node_js
      node_js : "11.6.0"
      env : 
        - ELECTRON_CACHE=$HOME/.cache/electron
        - ELECTRON_BUILDER_CACHE=$HOME/.cache/electron-builder

    - os: linux
      dist : trusty
      sudo : required
      services : docker
      language : generic

notifications : 
  email : false

# cache some files for faster builds
cache : 
  yarn : true
  directories : 
    - node_modules
    - $HOME/.cache/electron
    - $HOME/.cache/electron-builder

# add git lfs for large file support
before_install : 
  - |
    if [ "$TRAVIS_OS_NAME" == "osx" ]; then
      mkdir -p /tmp/git-lfs && curl -L https://github.com/github/git-lfs/releases/download/v2.3.1/git-lfs-$([ "$TRAVIS_OS_NAME" == "linux" ] && echo "linux" || echo "darwin")-amd64-2.3.1.tar.gz | tar -xz -C /tmp/git-lfs --strip-components 1
      export PATH="/tmp/git-lfs:$PATH"
    fi
before_script : 
  - git lfs pull

# on PRs and merges to master and prod run tests and build the app
script : 
  - |
    if [ "$TRAVIS_OS_NAME" == "linux" ]; then
      docker run --rm \
        -v ${PWD}:/project \
        -v ~/.cache/electron:/root/.cache/electron \
        -v ~/.cache/electron-builder:/root/.cache/electron-builder \
        electronuserland/builder:wine \
        /bin/bash -c "yarn --link-duplicates --pure-lockfile && yarn test"
    else
      yarn test
    fi
# only deploy to github on a merge to the prod branch
deploy : 
  provider : script
  script : bash deploy.travis.sh
  skip_cleanup : true
  on : 
    branch : prod
    
before_cache : 
  - rm -rf $HOME/.cache/electron-builder/wine

# only run this script on pull requests and merges into 
# the 'master' and 'prod' branches
branches : 
  only : 
  - master
  - prod

上面文件中的注释应该解释每个步骤的作用,但是基本思想是对每个请求请求进行纱线测试 ,以验证请求是否不会破坏应用程序。 然后,一旦代码合并到prod分支中,我们将触发以下部署脚本来构建并将我们的代码推送到Github Releases:

将此文件复制到deploy.travis.sh

#! /bin/bash
if [ " $TRAVIS_OS_NAME " == osx ]; then
    # deploy on mac
    yarn release
else
    # deploy on windows and linux
    docker run --rm -e GH_TOKEN -v " ${PWD} " :/project -v ~/.cache/electron:/root/.cache/electron -v ~/.cache/electron-builder:/root/.cache/electron-builder electronuserland/builder:wine /bin/bash -c "yarn --link-duplicates --pure-lockfile && yarn release --linux AppImage --win"
fi

为了使您的.travis.yml脚本具有将代码上传到Github Releases的权限,则需要设置一个包含API令牌的环境变量。

在Github中,导航到您的个人设置/开发人员设置/生成新令牌。 然后转到Travis中的存储库设置,您可以添加环境变量。 变量名是GH_TOKEN ,令牌是您在Github上创建的令牌。 确保在Travis上将变量设置为私有(默认),以免其在日志中显示令牌。

做完了!

现在,所有对master和prod的拉取请求都应该运行测试,并且所有合并到prod分支中的代码都应触发一个新版本。 发布的资产和可下载的安装程序将发布到“ 发布”选项卡下的Github存储库中。

该版本将是草稿,因此在每次部署后,您都需要手动进入并将其从草稿转换为已发布的版本,只需单击一个按钮即可。

困惑?

如果您迷路了,请随时回顾工作示例存储库 ,并确保查看Travis中记录的错误。 如果您有疑问,可以在以下的不和谐服务器上找到我: https : //discord.gg/EEkFwbv

另外,如果您正在寻找更高级的选项,请查看Qvault代码 。 它使用此方法以及对代码签名,自动更新和公证的支持。

莱恩·瓦格纳(Lane Wagner) @wagslane在推

先前发布在https://qvault.io/2019/08/08/automatic-cross-platform-deployments-with-electron-on-a-ci-server-travis/

From: https://hackernoon.com/automatic-cross-platform-deployments-with-electron-on-a-travis-ci-server-vf8q3yyq

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值