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

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

travis-ci自动部署这是一个有关如何在TravisCI上设置Electron应用程序的教程,以便通过简单的请求即可将新版本部署到GithubReleases。样

travis-ci自动部署

这是一个有关如何在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服务器上运行这些测试。

此时,您应该可以运行

yarnrelease --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/

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

travis-ci自动部署



推荐阅读
  • iOS超签签名服务器搭建及其优劣势
    本文介绍了搭建iOS超签签名服务器的原因和优势,包括不掉签、用户可以直接安装不需要信任、体验好等。同时也提到了超签的劣势,即一个证书只能安装100个,成本较高。文章还详细介绍了超签的实现原理,包括用户请求服务器安装mobileconfig文件、服务器调用苹果接口添加udid等步骤。最后,还提到了生成mobileconfig文件和导出AppleWorldwideDeveloperRelationsCertificationAuthority证书的方法。 ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • 使用在线工具jsonschema2pojo根据json生成java对象
    本文介绍了使用在线工具jsonschema2pojo根据json生成java对象的方法。通过该工具,用户只需将json字符串复制到输入框中,即可自动将其转换成java对象。该工具还能解析列表式的json数据,并将嵌套在内层的对象也解析出来。本文以请求github的api为例,展示了使用该工具的步骤和效果。 ... [详细]
  • r2dbc配置多数据源
    R2dbc配置多数据源问题根据官网配置r2dbc连接mysql多数据源所遇到的问题pom配置可以参考官网,不过我这样配置会报错我并没有这样配置将以下内容添加到pom.xml文件d ... [详细]
  • 如何去除Win7快捷方式的箭头
    本文介绍了如何去除Win7快捷方式的箭头的方法,通过生成一个透明的ico图标并将其命名为Empty.ico,将图标复制到windows目录下,并导入注册表,即可去除箭头。这样做可以改善默认快捷方式的外观,提升桌面整洁度。 ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 本文介绍了三种方法来实现在Win7系统中显示桌面的快捷方式,包括使用任务栏快速启动栏、运行命令和自己创建快捷方式的方法。具体操作步骤详细说明,并提供了保存图标的路径,方便以后使用。 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
  • 本文讨论了如何使用Web.Config进行自定义配置节的配置转换。作者提到,他将msbuild设置为详细模式,但转换却忽略了带有替换转换的自定义部分的存在。 ... [详细]
  • 图像因存在错误而无法显示 ... [详细]
  • Node.js学习笔记(一)package.json及cnpm
    本文介绍了Node.js中包的概念,以及如何使用包来统一管理具有相互依赖关系的模块。同时还介绍了NPM(Node Package Manager)的基本介绍和使用方法,以及如何通过NPM下载第三方模块。 ... [详细]
author-avatar
龚magnett_672
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有