Electron项目构建流水线(阿里云)

582 阅读2分钟

一、背景:

  1. 公司项目由阿里Codeup托管,流水线也是通过codeup平台提供的步骤建立(codeup平台文档)。
  2. 项目是基于electron-vite脚手架创建
  3. 基于node:18.16.0,electron:25.6.0,electron-builder: 24.6.3

二、构建中主要解决的问题

  1. codeup提供的流水线中没有可以打包electron应用的模板,最后决定用自定义镜像构建了一个环境来打包。
  2. 构建镜像时,第一次是基于ubuntu:lastest镜像构建,那么就需要安装electron官网提到的一些环境,这个过程中经历了各种包拉取不到(可能因为我不太会用ubuntu),最后发现docker hub中有现成的构建electron的镜像--electronuserland/builder:wine。 使用的Dockerfile构建的初始镜像,Dockerfile内容如下:
# 使用ubuntu镜像方便切换源
FROM electronuserland/builder:wine
WORKDIR /app
# electron镜像源
ENV ELECTRON_MIRROR=http://npm.taobao.org/mirrors/electron/ 
RUN printenv

# 下载node18
RUN curl -fsSL https://deb.nodesource.com/gpgkey/nodesource.gpg.key | gpg --dearmor -o /usr/share/keyrings/nodesource-archive-keyring.gpg
RUN echo "deb [signed-by=/usr/share/keyrings/nodesource-archive-keyring.gpg] https://deb.nodesource.com/node_18.x focal main" | tee /etc/apt/sources.list.d/nodesource.list

# 安装node
RUN echo "deb-src [signed-by=/usr/share/keyrings/nodesource-archive-keyring.gpg] https://deb.nodesource.com/node_18.x focal main" | tee -a /etc/apt/sources.list.d/nodesource.list
RUN apt-get update
RUN apt-get install -y nodejs
  1. 基于这个Dockerfile构建的镜像终于可以打包electron项目了,然而在最终build的环节,electron-build哐哐哐下载了许多包,其中winCodeSign、i386、wine这三个总是无法成功下载(换源对这几个包似乎不起作用)。
  2. 最终根据这篇博客提供的方法思路,通过手动下载这几个包,提前解压到对应的缓存目录中解决了。
  3. 到这一步仍然还有一个问题就是构建的镜像在打包时会报如下错误 image.png 这个包我在本地镜像中安装时总是有4个 ports.ubuntu.com/xxx/binary-… 4类似路径的资源报404,但是如果通过流水线拉取镜像,在构建命令里运行这3三句就可以成功拉取并构建了。
dpkg --add-architecture i386
apt update
apt install -y wine64 wine32```

三、涉及的docker、ubuntu用到的一些命令记录

  1. 构建docker镜像的方法
  • Dockerfile:上文中提到的Dockerfile文件,docker build [OPTIONS] PATH | URL | -形成镜像
  • 运行已有镜像,在镜像容器中进行操作,通过容器生成镜像,上文中手动下载包解压到镜像缓存容器中就是通过这种方式,十分方便。docker commit -m "注释" 容器id 生成镜像名
  1. 镜像仓库:阿里云免费提供了镜像仓库网址

image.png

创建仓库后里面有详细的操作指南,根据指示就可以成功推送和使用镜像了

image.png

  1. 用mac M2芯片pull下来的electron-builder:win镜像在docker GUI中提示Image may have poor performance...,点旁边的运行按钮是跑不起来的,直接用命令行docker run -it -v path:path 镜像id就可以跑。

image.png