热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

这是一个有关如何在TravisCI上设置Electron应用程序的教程,以便通过简单的请求即可将新版本部署到GithubReleases。样板我创建了一个样板副本&#

这是一个有关如何在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



推荐阅读
  • Node.js学习笔记(一)package.json及cnpm
    本文介绍了Node.js中包的概念,以及如何使用包来统一管理具有相互依赖关系的模块。同时还介绍了NPM(Node Package Manager)的基本介绍和使用方法,以及如何通过NPM下载第三方模块。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 使用在线工具jsonschema2pojo根据json生成java对象
    本文介绍了使用在线工具jsonschema2pojo根据json生成java对象的方法。通过该工具,用户只需将json字符串复制到输入框中,即可自动将其转换成java对象。该工具还能解析列表式的json数据,并将嵌套在内层的对象也解析出来。本文以请求github的api为例,展示了使用该工具的步骤和效果。 ... [详细]
  • 关于我们EMQ是一家全球领先的开源物联网基础设施软件供应商,服务新产业周期的IoT&5G、边缘计算与云计算市场,交付全球领先的开源物联网消息服务器和流处理数据 ... [详细]
  • 本文介绍了P1651题目的描述和要求,以及计算能搭建的塔的最大高度的方法。通过动态规划和状压技术,将问题转化为求解差值的问题,并定义了相应的状态。最终得出了计算最大高度的解法。 ... [详细]
  • r2dbc配置多数据源
    R2dbc配置多数据源问题根据官网配置r2dbc连接mysql多数据源所遇到的问题pom配置可以参考官网,不过我这样配置会报错我并没有这样配置将以下内容添加到pom.xml文件d ... [详细]
  • 本文详细介绍了git常用命令及其操作方法,包括查看、添加、提交、删除、找回等操作,以及如何重置修改文件、抛弃工作区修改、将工作文件提交到本地暂存区、从版本库中删除文件等。同时还介绍了如何从暂存区恢复到工作文件、恢复最近一次提交过的状态,以及如何合并多个操作等。 ... [详细]
  • uniapp开发H5解决跨域问题的两种代理方法
    本文介绍了uniapp开发H5解决跨域问题的两种代理方法,分别是在manifest.json文件和vue.config.js文件中设置代理。通过设置代理根域名和配置路径别名,可以实现H5页面的跨域访问。同时还介绍了如何开启内网穿透,让外网的人可以访问到本地调试的H5页面。 ... [详细]
  • 本文介绍了一个React Native新手在尝试将数据发布到服务器时遇到的问题,以及他的React Native代码和服务器端代码。他使用fetch方法将数据发送到服务器,但无法在服务器端读取/获取发布的数据。 ... [详细]
  • 微信官方授权及获取OpenId的方法,服务器通过SpringBoot实现
    主要步骤:前端获取到code(wx.login),传入服务器服务器通过参数AppID和AppSecret访问官方接口,获取到OpenId ... [详细]
  • 本文介绍了JavaScript进化到TypeScript的历史和背景,解释了TypeScript相对于JavaScript的优势和特点。作者分享了自己对TypeScript的观察和认识,并提到了在项目开发中使用TypeScript的好处。最后,作者表示对TypeScript进行尝试和探索的态度。 ... [详细]
author-avatar
韦凯孟强志宪
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有