Github Action 快速构建 Electron 应用
前言
在开发 Electron 应用时,比较耗时的部分应该是构建打包的过程,像用 electron-builder 这种打包工具来说,它会根据你要打包的系统来下载应用的系统镜像打包工具,由于这些镜像的源文件托管在 Github 上,且 nodejs 上做网络加速很困难,所以这个过程十分消耗时间。当我们换一台电脑,还要经历相同的打包环境的准备时间。
前段时间 Github 推出工作流功能,也就是 Github Actions,正好可以满足我们这种由于网络过慢导致准备环境成本高的问题。
Github Actions 基础概念
在 GitHub Actions 的仓库中自动化、自定义和执行软件开发工作流程。 您可以发现、创建和共享操作以执行您喜欢的任何作业(包括 CI/CD),并将操作合并到完全自定义的工作流程中。
这里主要有四个概念:workflow(工作流)、job(任务)、step(步骤)、action(动作)。
一个仓库可以有多个工作流,一个工作流可以有多个任务,一个任务可以有多个步骤,一个步骤可以有多个动作。
工作流文件存放在 .github/workflows/ 目录下,以 .yml 描述。
任务目前可以在三种系统下运行,用 runs-on 标注,包括:ubuntu-latest, windows-latest, macOS-latest。
任务由事件触发,支持分支的 push、pull_request 事件,以及 cron 语法的时间任务触发,由 on 字段指定。
Github Actions 机器配置
那 Github Actions 的机器性能如何呢?
这里写了一个仓库,专门用来查看所有支持的操作系统的信息。
仓库地址:https://github.com/lecepin/github-actions-system-info
三个系统的信息如下所示:
┌─────────┬────────────┬───────────────────────────────────────────┐
│ (index) │ name │ info │
├─────────┼────────────┼───────────────────────────────────────────┤
│ 0 │ '系统信息' │ 'Ubuntu 5.4.0-1032-azure x64' │
│ 1 │ '处理器' │ 'Intel® Xeon® Platinum 8171M 2.60GHz 2核' │
│ 2 │ '内存' │ '6GB' │
│ 3 │ '硬盘' │ '14GB' │
└─────────┴────────────┴───────────────────────────────────────────┘┌─────────┬────────────┬───────────────────────────────────────────────────────────┐
│ (index) │ name │ info │
├─────────┼────────────┼───────────────────────────────────────────────────────────┤
│ 0 │ '系统信息' │ 'Microsoft Windows Server 2019 Datacenter 10.0.17763 x64' │
│ 1 │ '处理器' │ 'Intel® Xeon® Platinum 8171M 2.60GHz 2核' │
│ 2 │ '内存' │ '6GB' │
│ 3 │ '硬盘' │ '13GB' │
└─────────┴────────────┴───────────────────────────────────────────────────────────┘┌─────────┬────────────┬───────────────────────────────────────┐
│ (index) │ name │ info │
├─────────┼────────────┼───────────────────────────────────────┤
│ 0 │ '系统信息' │ 'Mac OS X 19.6.0 x64' │
│ 1 │ '处理器' │ 'Intel® Xeon® E5-1650 v2 3.50GHz 3核' │
│ 2 │ '内存' │ '14GB' │
│ 3 │ '硬盘' │ '380GB' │
└─────────┴────────────┴───────────────────────────────────────┘
构建诉求
应用打包构建的诉求比较简单,就是代码 push 到 master 后,能够进行构建,并且构建的产物可以进行下载。
构建产物,可以直接上传到 Actions 中的 Artifact 中。
编写工作流文件
在 .github/workflows/ 目录下创建,pack.yml 文件,内容如下:
name: Build Pack
on:push:branches:- master # master 分支 push 时触发工作流
jobs:pack: # 打包任务runs-on: windows-latest # 在 windows 系统中运行steps:- uses: actions/checkout@v2 # 下载仓库代码到工作流机器中- name: Install and Pack # 安装依赖并且进行构建run: |npm installnpm run pack- name: Upload file # 将构建产物进行上传uses: actions/upload-artifact@v2with:name: packs # 上传后的名字path: packs # 将 packs 目录进行上传
保存后,即可触发工作流执行,效果如下:
并且会把构建产物上传到工作流中,如下:
支持多系统的打包
如果对 Electron 打多个环境的安装包,在 Github Actions 中可以直接用相应的系统进行打包,很方便。
如要构建 window 和 mac 的安装包,可以创建两个工作流文件:pack-win.yml、pack-mac.yml,把配置中的 runs-on 字段进行修改即可。
也可以做一个矩阵变量,来运行多个不同的工作流,如同时支持 mac 和 win 机器,配置如下:
name: Build Pack
on:push:branches:- master
jobs:pack: runs-on: ${{matrix.os}}strategy:matrix:os: [windows-latest, macOS-latest] steps:- uses: actions/checkout@v2 - name: Install and Pack run: |npm installnpm run pack- name: Upload fileuses: actions/upload-artifact@v2with:name: packspath: packs
效果如下:
两个系统构建的产物,会一起上传到 Artifact 中。
上传文件的过滤
由于打包出来的文件包括日志文件、源文件、解压文件等,而我们只需要安装文件,这里可以对上传的文件进行规则定义,如下:
- name: Upload fileuses: actions/upload-artifact@v2with:name: packspath: |packs/*dmg # mac 安装包packs/*exe # window 安装包
可参考这个仓库:https://github.com/lecepin/tss-merge-to-mkv/blob/master/.github/workflows/pack.yml
Github Action 快速构建 Electron 应用相关推荐
- 如何利用GitHub Pages快速构建免费网站?
无需编程,零成本!只需挑选一个主题,经过配置,加入内容即可. 作者 | Stephen Vinouze 译者 | 弯月,责编 | 郭芮 头图 | CSDN 下载自东方IC 出品 | CSDN(ID:C ...
- GitHub Action + ACK:云原生 DevOps 落地利器
作者 | 瑶靖 来源 | 阿里巴巴云原生公众号 据信通院<中国 DevOps 现状调查报告(2020年)>显示,63% 的企业已经实践落地 DevOps,采用持续交付流水线打通开发.测试. ...
- GitHub Action + ACK:云原生 DevOps 落地利
简介: 据信通院<中国 DevOps 现状调查报告(2020年)>显示,63% 的企业已经实践落地 DevOps,采用持续交付流水线打通开发.测试.部署和运维多个环节.但是依然有 20% ...
- 如何用 Github Action 来组建自己的4399游戏库
WebGL Demo GitHub WebGL Demo Gitee 原理 其实就是用上了 Github Action 自动构建和 Github Pages 首先手动确保自己的项目可以构建出 WebG ...
- 如何用Vue快速构建github可视化大数据平台
一.项目简介 如何用Vue快速构建github可视化大数据平台 二.实现功能 个人信息 仓库语言分类 仓库公开数量 仓库stars情况 仓库数据 最近你的操作 粉丝数量 跟随数量 最近的跟随 最新信息 ...
- 如何使用GitHub Action自动发布JAR到Maven仓库
之前发布开源项目Payment Spring Boot[1]到 Maven 中央仓库我都是手动执行mvn deploy,在CI/CD大行其道的今天使用这种方式有点"原始".于是我一 ...
- GitHub 开源跨平台神器 Electron 实践 | 技术头条
作者 | 李小明 责编 | 屠敏 认识 Electron Electron是由GitHub开发,用HTML.CSS 和 JavaScript来构建跨平台桌面应用程序的一个开源库.Electron通过将 ...
- 使用 GitHub Actions 来构建应用程序
使用 GitHub Actions 构建应用程序 写在前面 开始 Action 环境变量/加密密码 默认环境变量 自定义环境变量 使用环境变量 其他类型变量 加密密码 创建加密密码 使用加密密码 学完 ...
- Easypack: JEECG的容器化编译环境快速构建
这篇文章整理一下使用镜像方式进行JEECG编译环境的标准化,并将标准化的编译镜像和脚本放到了easypack上. JEECG介绍 详细的介绍可以参看如下链接: http://www.jeecg.com ...
最新文章
- iOS 自定义返回按钮,保留系统滑动返回
- boost::intrusive::treap_algorithms用法的测试程序
- 听说现在都考这些React面试题
- 英语口语 Week15 TuesDay
- openlayers之obj.js提供的功能函数
- Everything is Serverless,从开源框架对比说起
- php 旋转图片 保存,如何在PHP中旋转并保存图像
- Recordia for Mac - 音频无损录制工具「M1兼容」
- 广和通LTE Cat4模组L716焕新升级,为IoT行业提供经济普适无线应用
- Python Post提交简单案例,文本内容在线语音合成
- simulink 菜单栏 不见了
- 中学-综合素质【1】
- 【数据结构】详解KMP算法
- 【大数据开发】SparkCore——利用广播变量优化ip地址统计、Spark2.x自定义累加器
- FetchError:request to http://cdn.npm.taobao.org/ajv/-/ajv-.tgz failed,reason:connect EACCES
- 计算机版初中地理知识点总结,初中地理教学计划精选5篇汇总
- 使用keras-bert进行中文文本分类+Google colab运行源码
- 个性二维码生成(android开发)
- 5G专网是个大西瓜(三):合成之难
- 系统工程(SE)学习笔记(一)——系统工程溯源