这是一个有关如何在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_jsnode_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: osxosx_image : xcode10.2language : node_jsnode_js : "11.6.0"env : - ELECTRON_CACHE=$HOME/.cache/electron- ELECTRON_BUILDER_CACHE=$HOME/.cache/electron-builder- os: linuxdist : trustysudo : requiredservices : dockerlanguage : genericnotifications : email : false# cache some files for faster builds
cache : yarn : truedirectories : - node_modules- $HOME/.cache/electron- $HOME/.cache/electron-builder# add git lfs for large file support
before_install : - |if [ "$TRAVIS_OS_NAME" == "osx" ]; thenmkdir -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 1export 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" ]; thendocker 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"elseyarn testfi
# only deploy to github on a merge to the prod branch
deploy : provider : scriptscript : bash deploy.travis.shskip_cleanup : trueon : branch : prodbefore_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 macyarn release
else# deploy on windows and linuxdocker 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