在 Mac 上,dmg 文件是一種磁盤(pán)映像文件,可以將多個(gè)文件打包成一個(gè)可讀寫(xiě)的磁盤(pán)映像。用戶可以將 dmg 文件掛載到系統(tǒng)上,就像掛載一個(gè)硬盤(pán)驅(qū)動(dòng)器一樣。這使得 dmg 文件成為 Mac 應(yīng)用發(fā)布的常見(jiàn)格式。
在 Github 上,我們可以使用 Github Actions 來(lái)自動(dòng)化打包 dmg 文件。Github Actions 是 Github 的一項(xiàng) CI/CD 服務(wù),可以讓我們?cè)诖a提交時(shí)自動(dòng)運(yùn)行一些任務(wù),例如打包應(yīng)用程序。
## 詳細(xì)介紹
下面我們將介紹如何使用 Github Actions 打包 dmg 文件。
### 步驟 1:創(chuàng)建 Github Actions 工作流文件
首先,我們需要在我們的 Github 倉(cāng)庫(kù)中創(chuàng)建一個(gè) `.github/workflows` 目錄,并在其中創(chuàng)建一個(gè) YAML 文件,例如 `build.yml`。該文件將定義我們的 Github Actions 工作流。
“`yaml
name: Build
on:
push:
branches:
– master
jobs:
build:
runs-on: macos-latest
steps:
– name: Checkout code
uses: actions/checkout@v2
– name: Install dependencies
run: |
sudo gem install cocoapods
pod install
– name: Build app
run: xcodebuild -workspace MyApp.xcworkspace -scheme MyApp -configuration Release -archivePath $PWD/build/MyApp.xcarchive archive
– name: Create DMG
uses: jbtule/codesign-dmg@v1.1.0
with:
app: MyApp.app
volume-name: MyApp
dmg-name: MyApp.dmg
codesign-identity: ${{ secrets.CERTIFICATE }}
“`
在這個(gè)工作流中,我們定義了一個(gè) `build` 作業(yè),它將在 `master` 分支的推送事件觸發(fā)時(shí)運(yùn)行。該作業(yè)將在最新版本的 macOS 上運(yùn)行,并執(zhí)行以下步驟:
1. 檢出代碼庫(kù)
2. 安裝依賴項(xiàng)
3. 構(gòu)建應(yīng)用程序
4. 創(chuàng)建 dmg 文件
### 步驟 2:安裝依賴項(xiàng)
在上面的工作流中,我們使用了 cocoapods 和 xcodebuild 工具來(lái)構(gòu)建應(yīng)用程序。
在 macOS 上,我們可以使用 Homebrew 安裝這些工具:
“`bash
brew install cocoapods
“`
### 步驟 3:構(gòu)建應(yīng)用程序
在工作流中,我們使用 xcodebuild 工具來(lái)構(gòu)建應(yīng)用程序。我們需要指定應(yīng)用程序的 workspace、scheme、configuration 和 archivePath。例如:
“`bash
xcodebuild -workspace MyApp.xcworkspace -scheme MyApp -configuration Release -archivePath $PWD/build/MyApp.xcarchive archive
“`
這將生成一個(gè)名為 `MyApp.xcarchive` 的檔案文件,其中包含我們的應(yīng)用程序。
### 步驟 4:創(chuàng)建 dmg 文件
最后,我們需要使用 jbtule/codesign-dmg 工具來(lái)創(chuàng)建 dmg 文件。該工具將對(duì)應(yīng)用程序進(jìn)行簽名,并創(chuàng)建一個(gè)可讀寫(xiě)的 dmg 文件。
“`yaml
– name: Create DMG
uses: jbtule/codesign-dmg@v1.1.0
with:
app: MyApp.app
volume-name: MyApp
dmg-name: MyApp.dmg
codesign-identity: ${{ secrets.CERTIFICATE }}
“`
在這個(gè)步驟中,我們指定了應(yīng)用程序的網(wǎng)站程序打包路徑、卷名和 dmg 文件名,并使用 secrets.CERTIFICATE 密鑰來(lái)指定簽名證書(shū)。
## 結(jié)論
本文介紹了如何使用 Github Actions 自動(dòng)化打包 dmg 文件。我們可以使用 xcodebuild 工具來(lái)構(gòu)建應(yīng)用程序,并使用 jbtule/codesign-dmg 工具來(lái)創(chuàng)建 dmg 文件。這個(gè)過(guò)程可以自動(dòng)化,使我們能夠更輕松地發(fā)布我們的 Mac 應(yīng)用程序。