前言

在开发 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 应用相关推荐

  1. 如何利用GitHub Pages快速构建免费网站?

    无需编程,零成本!只需挑选一个主题,经过配置,加入内容即可. 作者 | Stephen Vinouze 译者 | 弯月,责编 | 郭芮 头图 | CSDN 下载自东方IC 出品 | CSDN(ID:C ...

  2. GitHub Action + ACK:云原生 DevOps 落地利器

    作者 | 瑶靖 来源 | 阿里巴巴云原生公众号 据信通院<中国 DevOps 现状调查报告(2020年)>显示,63% 的企业已经实践落地 DevOps,采用持续交付流水线打通开发.测试. ...

  3. GitHub Action + ACK:云原生 DevOps 落地利

    简介: 据信通院<中国 DevOps 现状调查报告(2020年)>显示,63% 的企业已经实践落地 DevOps,采用持续交付流水线打通开发.测试.部署和运维多个环节.但是依然有 20% ...

  4. 如何用 Github Action 来组建自己的4399游戏库

    WebGL Demo GitHub WebGL Demo Gitee 原理 其实就是用上了 Github Action 自动构建和 Github Pages 首先手动确保自己的项目可以构建出 WebG ...

  5. 如何用Vue快速构建github可视化大数据平台

    一.项目简介 如何用Vue快速构建github可视化大数据平台 二.实现功能 个人信息 仓库语言分类 仓库公开数量 仓库stars情况 仓库数据 最近你的操作 粉丝数量 跟随数量 最近的跟随 最新信息 ...

  6. 如何使用GitHub Action自动发布JAR到Maven仓库

    之前发布开源项目Payment Spring Boot[1]到 Maven 中央仓库我都是手动执行mvn deploy,在CI/CD大行其道的今天使用这种方式有点"原始".于是我一 ...

  7. GitHub 开源跨平台神器 Electron 实践 | 技术头条

    作者 | 李小明 责编 | 屠敏 认识 Electron Electron是由GitHub开发,用HTML.CSS 和 JavaScript来构建跨平台桌面应用程序的一个开源库.Electron通过将 ...

  8. 使用 GitHub Actions 来构建应用程序

    使用 GitHub Actions 构建应用程序 写在前面 开始 Action 环境变量/加密密码 默认环境变量 自定义环境变量 使用环境变量 其他类型变量 加密密码 创建加密密码 使用加密密码 学完 ...

  9. Easypack: JEECG的容器化编译环境快速构建

    这篇文章整理一下使用镜像方式进行JEECG编译环境的标准化,并将标准化的编译镜像和脚本放到了easypack上. JEECG介绍 详细的介绍可以参看如下链接: http://www.jeecg.com ...

最新文章

  1. iOS 自定义返回按钮,保留系统滑动返回
  2. boost::intrusive::treap_algorithms用法的测试程序
  3. 听说现在都考这些React面试题
  4. 英语口语 Week15 TuesDay
  5. openlayers之obj.js提供的功能函数
  6. Everything is Serverless,从开源框架对比说起
  7. php 旋转图片 保存,如何在PHP中旋转并保存图像
  8. Recordia for Mac - 音频无损录制工具「M1兼容」
  9. 广和通LTE Cat4模组L716焕新升级,为IoT行业提供经济普适无线应用
  10. Python Post提交简单案例,文本内容在线语音合成
  11. simulink 菜单栏 不见了
  12. 中学-综合素质【1】
  13. 【数据结构】详解KMP算法
  14. 【大数据开发】SparkCore——利用广播变量优化ip地址统计、Spark2.x自定义累加器
  15. FetchError:request to http://cdn.npm.taobao.org/ajv/-/ajv-.tgz failed,reason:connect EACCES
  16. 计算机版初中地理知识点总结,初中地理教学计划精选5篇汇总
  17. 使用keras-bert进行中文文本分类+Google colab运行源码
  18. 个性二维码生成(android开发)
  19. 5G专网是个大西瓜(三):合成之难
  20. 系统工程(SE)学习笔记(一)——系统工程溯源

热门文章

  1. 比赛一买香蕉问题---解题报告
  2. C2审核模式(c2 audit mode)
  3. 使用WSE实现Web Service安全
  4. 字符串操作截取后面的字符串_对字符串的5个必知的熊猫操作
  5. Lockdown Wheelie项目
  6. java用接口实例化对象_[求助]迷茫中,接口可以直接实例化对象吗?
  7. udacity开源的数据_评论:Udacity数据分析师纳米学位计划
  8. django前后端分离部署
  9. python之numpy
  10. Luogu P2101 命运石之门的选择(分治+搜索)