創(chuàng)建gitlab pipeline打包Tauri跨平臺應用程序

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

8. 參考文檔

Set up macOS runners

Tauri開發(fā)一: Tauri開發(fā)工具介紹

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌贫悄,老刑警劉巖误墓,帶你破解...
    沈念sama閱讀 212,222評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異丧靡,居然都是意外死亡赁项,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,455評論 3 385
  • 文/潘曉璐 我一進店門局齿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來剧劝,“玉大人,你說我怎么就攤上這事抓歼〖ゴ耍” “怎么了?”我有些...
    開封第一講書人閱讀 157,720評論 0 348
  • 文/不壞的土叔 我叫張陵谣妻,是天一觀的道長萄喳。 經(jīng)常有香客問我,道長拌禾,這世上最難降的妖魔是什么取胎? 我笑而不...
    開封第一講書人閱讀 56,568評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮湃窍,結(jié)果婚禮上闻蛀,老公的妹妹穿的比我還像新娘。我一直安慰自己您市,他們只是感情好觉痛,可當我...
    茶點故事閱讀 65,696評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著茵休,像睡著了一般薪棒。 火紅的嫁衣襯著肌膚如雪手蝎。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,879評論 1 290
  • 那天俐芯,我揣著相機與錄音棵介,去河邊找鬼。 笑死吧史,一個胖子當著我的面吹牛邮辽,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播贸营,決...
    沈念sama閱讀 39,028評論 3 409
  • 文/蒼蘭香墨 我猛地睜開眼吨述,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了钞脂?” 一聲冷哼從身側(cè)響起揣云,我...
    開封第一講書人閱讀 37,773評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎冰啃,沒想到半個月后邓夕,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,220評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡亿笤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,550評論 2 327
  • 正文 我和宋清朗相戀三年翎迁,在試婚紗的時候發(fā)現(xiàn)自己被綠了栋猖。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片净薛。...
    茶點故事閱讀 38,697評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖蒲拉,靈堂內(nèi)的尸體忽然破棺而出肃拜,到底是詐尸還是另有隱情,我是刑警寧澤雌团,帶...
    沈念sama閱讀 34,360評論 4 332
  • 正文 年R本政府宣布燃领,位于F島的核電站,受9級特大地震影響锦援,放射性物質(zhì)發(fā)生泄漏猛蔽。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,002評論 3 315
  • 文/蒙蒙 一灵寺、第九天 我趴在偏房一處隱蔽的房頂上張望曼库。 院中可真熱鬧,春花似錦略板、人聲如沸毁枯。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,782評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽种玛。三九已至藐鹤,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間赂韵,已是汗流浹背娱节。 一陣腳步聲響...
    開封第一講書人閱讀 32,010評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留祭示,地道東北人括堤。 一個月前我還...
    沈念sama閱讀 46,433評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像绍移,于是被迫代替她去往敵國和親悄窃。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,587評論 2 350

推薦閱讀更多精彩內(nèi)容