1. 前言
關于如何對Tauri項目進行打包和發(fā)布, 在Tauri的官方網(wǎng)站實際上只做了基本的介紹. 而且由于Tauri或者說是Rust對跨平臺編譯以及打包支持得不是很好.
所以到底如何在Github.com以外得平臺進行編譯打包, 講得不夠詳細. 本來希望搜索能找到對這方面有所補充的博客文章, 但是也沒有找到. 包括一些英文方面的資料以及視頻教程, 在講得關于Tauri的devops自動化編譯打包部署方面都是照本宣科, 按照官方的介紹使用github action進行配置. 而這些內(nèi)容對于企業(yè)開發(fā)或者非開源項目來說幫助非常有限.
于是我靜下心來, 花費了一些時間, 將這Tauri devops部分內(nèi)容以中文的形式整理出來, 以供對后來者有所幫助. 一來是出于對開源運動的支持, 而來我是非常喜歡Tauri, 經(jīng)過測試, 我發(fā)現(xiàn)這就是我心中一直在找的一種跨平臺解決方案, 有一種眾里尋他千百度, 驀然回首, 那人卻在燈火闌珊處的感覺, 所以我愿意將我在Tauri上的研究分享出來, 以幫助到同道中人.
雖然本文是以gitlab pipeline為例, 但是對其它各種自動化平臺創(chuàng)建devops pipeline也會有參考價值. 另外本文對于非Tauri項目創(chuàng)建gitlab pipeline也要實際操作層面的價值.
本文原文發(fā)布在我的博客網(wǎng)站鵬叔的技術博客空間 - 快速的將web應用轉(zhuǎn)化為桌面應用, 要獲取最新更新, 請訪問原文. 更多Tauri相關話題, 請訪問鵬叔的技術博客空間 - Tauri專題
2. macOS開發(fā)環(huán)境配置
2.1. 安裝macOS虛擬機
當然如果有錢又任性, 完全可以忽略這一步, 直接買幾臺不同版本的Macbook用于打包和測試工作, 完全可以跳過這一步.
但是如果您有降本增效考量, 采購流程又很漫長且復雜, 可以考慮安裝Macos虛擬機來達到同樣的目的.
安裝macOS虛擬機, 可以參考我的博客鵬叔的博客空間 - 如何安裝一臺MacOS虛擬機
2.2. macOS上配置rust
安裝和配置Rust可以參考我的博客鵬叔的技術博客空間 - 在各種操作系統(tǒng)上安裝和配置Rust
2.3. macOS上配置nodejs
安裝和配置nodejs可以參考我的博客鵬叔的技術博客空間 - MacOS上安裝nvm
3. Ubuntu環(huán)境配置
3.1. 安裝Ubuntu虛擬機
安裝Ubuntu虛擬機參考鵬叔的技術博客空間 - 安裝Ubuntu虛擬機
3.2. Ubuntu上配置rust
安裝和配置Rust可以參考我的博客鵬叔的技術博客空間 - 在各種操作系統(tǒng)上安裝和配置Rust
3.3. Ubuntu上配置nodejs
安裝和配置nodejs可以參考我的博客鵬叔的技術博客空間 - 安裝并配置nodejs
以及一篇關于升級nodejs的文章, 里面有關于安裝typescript, angular cli的部分.
4. Windows開發(fā)環(huán)境配置
4.1. 安裝Windows虛擬機
可以在VMWare或 VMware ESXi上安裝windows虛擬機來用以編譯,測試 和打包. 但是由于安裝包都很大, license的問題等等種種原因. 這里我使用的是手頭上一臺開發(fā)機器替代的, 后續(xù)將會補充安裝Windows虛擬機的部分, 并在此更新.
4.2. Windows上配置rust
Windows上安裝和配置Rust可以參考我的博客鵬叔的技術博客空間 - 在各種操作系統(tǒng)上安裝和配置Rust
4.3. Windows上配置nodejs
Windows上安裝和配置nodejs可以參考我的博客鵬叔的技術博客空間 - 安裝并配置nodejs 以及升級nodejs的文章, 里面有關于安裝typescript, angular cli的部分.
5. 配置tauri gitlab pipeline
以上所有的步驟都是為我們創(chuàng)建tauri gitlab pipeline創(chuàng)建基礎設施, 基礎設施搭建完成后, 我們就可以創(chuàng)建gitlab pipeline.
在gitlab pipeline中我要做三件事: 一, 創(chuàng)建windows安裝程序; 二, 而創(chuàng)建debian/ubuntu安裝程序; 三, 創(chuàng)建macos安裝程序.
5.1. windows gitlab pipeline job
如果您沒有安裝gitlab并打算安裝, 可以參考鵬叔的技術博客空間 - gitlab安裝升級及遷移 以及鵬叔的技術博客空間 - gitlab CICD基礎
修改項目的配置文件.gitlab-ci.yml, 添加一個新的job用于編譯windows desktop application.
demo_desktop_windows_build:
stage: releaseBuild
when: manual
timeout: 3h
tags: [windows-runner]
script:
- echo "description - job to build demo-desktop Windows tuari app"
- ./scripts/demo_desktop_windows_build.ps1
在Job定義腳本中定義tags:[windows-runner]
使其與windows gitlab-runner是的標簽對應, 這樣這個job就會被運行在windows環(huán)境上gitlab-runner所執(zhí)行. 最終打出的包即為msi.
./scripts/demo_desktop_windows_build.ps1的內(nèi)容如下
echo "building windows desktop application"
echo "install npm packages"
cd ../demo
npm install
npm run tauri build
5.2. ubuntu/debian gitlab pipeline job
修改項目的配置文件.gitlab-ci.yml, 添加一個新的job用于編譯ubuntu/debian desktop application.
demo_desktop_ubuntu_build:
stage: releaseBuild
when: manual
timeout: 3h
tags: [ubuntu-runner]
script:
- echo "description - job to build demo-desktop ubuntu/deb tuari app"
- ./scripts/demo_desktop_ubuntu_build.sh
指定tags: [ubuntu-runner]
, 這樣job就會在擁有ubuntu標簽的gitlab-runner上運行.
scripts/demo_desktop_ubuntu_build.sh的內(nèi)容如下, 與windows的腳本沒有太大差別, 但是build出來的安裝文件格式會不一樣.
#!/bin/bash
echo "building ubuntu desktop application"
echo "install npm packages"
cd ../demo
npm install
npm run tauri build
5.3. macOS gitlab pipeline job
修改項目的配置文件.gitlab-ci.yml, 添加一個新的job用于編譯打包macos desktop application.
demo_desktop_macos_build:
stage: releaseBuild
when: manual
timeout: 3h
tags: [macos-runner]
script:
- echo "description - job to build demo-desktop macOS tuari app"
- ./scripts/demo_desktop_macos_build.sh
指定tags: [macos-runner]
, 這樣job就會在擁有macos標簽的gitlab-runner上運行.
scripts/demo_desktop_macos_build.sh的內(nèi)容如下, 與以上兩個的腳本沒有太大差別, 但是build出來的會是pkg和dmg兩種安裝包格式.
#!/bin/bash
echo "building macOS desktop application"
echo "install npm packages"
cd ../demo
npm install
npm run tauri build
6. 后記
本文原文位于我的博客鵬叔的技術博客空間 - 創(chuàng)建gitlab pipeline打包Tauri跨平臺應用程序, 要訪問最近更新請訪問原文.
更多tauri相關, 請訪問鵬叔的技術博客空間 - tauri專題
7. TroubleShouting
問題一: 在ubuntu上執(zhí)行npm run tauri build
時, 報如下錯誤
Error failed to bundle project: error running appimage.sh
問題排查: 登錄到ubuntu進入, 進入project目錄, 執(zhí)行命令并開啟詳細日志.
npm run tauri build -- --verbose
參數(shù)說明:
verbose 的字面意思是詳述的意思, 在此是輸出詳細日志.
發(fā)現(xiàn)appimage.sh腳本試圖從githubusercontent下載另外一個腳本 wget -q -4 -N https://raw.githubusercontent.com/tauri-apps/linuxdeploy-plugin-gtk/master/linuxdeploy-plugin-gtk.sh
最后的解決辦法是將appImage格式從target中去除了. 修改tauri.conf.json, 將targets修改如下.
注意: 這種辦法只是暫時解決了打包腳本失敗的問題, 并沒有實質(zhì)解決制作appImage格式安裝包的問題.
關注我的博客原文, 后續(xù)我抽出時間會實質(zhì)性的解決該問題.
"targets": ["deb", "nsis", "msi", "app", "dmg", "updater"],
問題二: windows應用程序安裝后, 啟動時報錯"WebView2Loader.dll was not found"
原因是沒有正確的安裝tauri依賴的環(huán)境. 詳細原因請參考這個issue
解決辦法: 重新安裝相關依賴
choco install visualstudio2019buildtools
choco install visualstudio2019-workload-vctools