Azure DevOps 服務 |Azure DevOps Server |Azure DevOps Server 2022
本文將教你如何在 Azure Pipelines 中使用 YAML 管線建置並部署 Xcode 專案。
必要條件
- 您有權建立管線和部署應用程式的 Azure DevOps 組織和專案。
- GitHub 存放庫中的 Xcode 9+ 專案和應用程式。 如需詳細資訊,請參閱 建立應用程式的 Xcode 專案。
建立管線
重要
在 GitHub 程式期間,系統可能會提示您建立 GitHub 服務連線 ,或重新導向至 GitHub 以登入、安裝 Azure Pipelines 或授權 Azure Pipelines。 請遵循畫面上的指示來完成此程式。 如需詳細資訊,請參閱 存取 GitHub 存放庫。
- 在您的 Azure DevOps 專案中,選取 [管線][新增管線],如果>,請選取 [建立管線]。
- 選取 [GitHub ] 作為原始程式碼的位置。
- 在 [ 選取存放庫 ] 畫面上,選取 Xcode 專案的存放庫。
- 在 [ 設定管線 ] 畫面上,選取 [Xcode]。
Azure Pipelines 會根據 Xcode 範本提供入門管線。 檢閱azure-pipelines.yml中的程序代碼。
建置環境
Xcode 會預安裝在 Azure Pipelines 中Microsoft裝載的 macOS 代理程式 上,因此您不需要設定任何基礎結構。 如需預安裝之 Xcode 的確切版本,請參閱 Microsoft裝載的代理程序軟體。
pool
azure-pipelines.yml檔案頂端的節點會選取適當的代理程式集區。
pool:
vmImage: 'macOS-latest'
Xcode 建置工作
Xcode 任務負責在 macOS 上建置、測試或歸檔 Xcode 工作區,並且可以選擇性地打包應用程式。 起始 azure-pipelines.yml 檔中的 Xcode 步驟是依照模擬器預設方案建構 iOS 專案,且不使用封裝。 您可以變更值,並新增參數以符合項目組態。
開發版本:
steps:
- task: Xcode@5
inputs:
actions: 'build'
scheme: ''
sdk: 'iphonesimulator'
configuration: 'Debug'
xcWorkspacePath: '**/*.xcodeproj/project.xcworkspace'
xcodeVersion: 'default' # Options: 10, 11, 12, 13, 14, default, specifyPath
App Store 正式版:
對於正式版本,請明確指定 Xcode 版本、應用程式的架構以及 Release 設定:
steps:
- task: Xcode@5
inputs:
actions: 'build'
scheme: 'YourAppScheme'
sdk: 'iphoneos'
configuration: 'Release'
xcWorkspacePath: '**/*.xcodeproj/project.xcworkspace'
xcodeVersion: '14'
packageApp: true
exportPath: '$(build.artifactStagingDirectory)'
exportOptions: 'automatic'
生產的主要差異:
-
xcodeVersion:指定一個固定的版本(例如
'14'),以便維持建置的一致性與可重現性。 - 方案:將空字串替換成你應用程式的實際方案名稱。
-
SDK:用於
'iphoneos'裝置建置;用於'iphonesimulator'模擬器建置。 -
配置:用於
'Release'生產;用於'Debug'開發。 -
packageApp:設為
true以生成發佈用的.ipa檔案。 - exportPath:將套件輸出導向建構階段目錄以進行工件發佈。
保存並運行流水線
當您完成azure-pipelines.yml中的程式代碼檢閱時,請選取 [儲存並執行]。
您可以選擇編輯提交訊息並提供描述。 然後選取 儲存並再次執行,將 azure-pipelines.yml 檔案認可到您的存放庫,然後啟動建置。
組建執行頁面會顯示組建詳細數據和進度。 如果您想要監看管線的運行狀態,請選擇頁面下半部的 任務。
您現在已在存放庫中擁有可運作的 YAML 管線azure-pipelines.yml,可供自定義。
自訂您的流程
若要變更管線,請選取 管線頁面上的 [編輯 ]。 以下章節說明一些根據你特定需求自訂 Xcode 流程的常見方式:
- 簽署與配置: 必須部署到實體裝置或 App Store。
- 依賴管理: 為私人儲存庫設定認證。
- 文物管理: 儲存建置輸出以供測試和部署。
- 分布: 自動化發佈到 TestFlight 或 App Store。
新增簽署和配置任務
要在實體裝置上執行 Xcode 應用程式或發佈到 App Store,你需要先簽署並配置該應用程式。 這個過程包括使用 P12 簽署憑證(一種驗證應用程式身份的安全憑證)以及配置設定檔(授權應用程式用於特定裝置或發行版)。 如需詳細資訊,請參閱 簽署行動應用程式。
若要在建置期間將憑證和配置檔提供給 Xcode,請將 [安裝 Apple 憑證] 和 [安裝 Apple 布建配置檔] 工作新增至管線。
管理相依性
你的 Xcode 專案可能會用相依管理工具來處理第三方函式庫和框架。 以下章節說明如何為不同相依管理工具的私有儲存庫配置認證。
Swift 套件管理器
Swift 套件管理器(SPM)是蘋果原生的相依性管理工具,並直接整合進 Xcode。 對於使用 SPM 搭配私有套件的專案,你需要設定 Git 認證。
如果你的私人 Swift 套件托管在 GitHub 的話,請使用名為 GITHUB_ACCESS_TOKEN 的環境變數來設定驗證,並將個人訪問權杖的值用於存取該倉庫。
不要直接把秘密令牌加到 pipeline 的 YAML,因為這個動作會暴露在原始碼裡。 如需詳細資訊,請參閱 設定秘密變數。
以下管線程式碼在解析 Swift 套件相依時,使用一個名為 myGitHubAccessToken 的秘密變數進行認證:
- task: Xcode@5
inputs:
actions: 'build'
scheme: ''
sdk: 'iphoneos'
configuration: 'Release'
xcWorkspacePath: '**/*.xcodeproj/project.xcworkspace'
env:
GITHUB_ACCESS_TOKEN: $(myGitHubAccessToken)
對於託管在 Azure Repos 或其他 Git 供應商的私有套件,請在建置步驟前先設定適當的 Git 憑證。
可哥豆莢
如果你的專案使用 CocoaPods,請使用 CocoaPods 任務來安裝相依性。
- task: CocoaPods@0
inputs:
workingDirectory: '$(System.DefaultWorkingDirectory)'
forceRepo: false
迦太基
如果你的專案使用 Carthage(一個用於 iOS/macOS 專案的相依管理工具)搭配私人 Carthage 儲存庫,請透過名為 GITHUB_ACCESS_TOKEN 的環境變數設定認證,其值為具有存取權的權杖。 Carthage 會自動偵測並使用這個環境變數。
不要直接把秘密令牌加到 pipeline 的 YAML,因為這個動作會暴露在原始碼裡。 如需詳細資訊,請參閱 設定秘密變數。
下列管線程式代碼會針對環境變數的值使用名為 myGitHubAccessToken 的 GITHUB_ACCESS_TOKEN 秘密變數。
- script: carthage update --platform iOS
displayName: 'Update Carthage dependencies'
env:
GITHUB_ACCESS_TOKEN: $(myGitHubAccessToken)
在 Azure 裝載的裝置上測試
Visual Studio App Center 於 2025 年 3 月 31 日正式退役。 了解 推薦的替代方案。
將工件與構建記錄一起保留
若要將您的 iOS AppStore 套件(IPA)檔案與建置記錄或測試一同存放,並在後續的管線中部署,請將 複製檔案 與 發佈管線工件 任務加入管線。
- task: CopyFiles@2
inputs:
contents: '**/*.ipa'
targetFolder: '$(build.artifactStagingDirectory)'
- task: PublishPipelineArtifact@1
inputs:
targetPath: '$(build.artifactStagingDirectory)'
artifact: 'drop'
部署至 Apple App Store 或 TestFlight
若要將應用程式分發給測試者或測試用戶,請使用蘋果的 TestFlight 或直接部署至 App Store。 請參考下方關於 Apple App Store 部署的部分。
為了測試版和用戶回饋,請考慮使用:
安裝 Apple App Store 擴充功能並部署至 Apple App Store
若要自動化與 Apple App Store 的互動,請安裝 Apple App Store 擴充功能,然後在管線中使用下列工作。 根據預設,這些工作會使用 您必須設定的服務連線 向Apple進行驗證。
若要在 App Store 中將現有 iOS TestFlight Beta 應用程式或生產應用程式的更新發行自動化,請新增 App Store 發行 工作。
在使用 蘋果雙重驗證時,會有一些限制。 Apple 認證具有區域特定性,Fastlane 會話令牌(用於與 Apple 驗證的臨時憑證)過期迅速,必須定期重新建立與重新設定。
- task: AppStoreRelease@1
displayName: 'Publish to the App Store TestFlight track'
inputs:
serviceEndpoint: 'My Apple App Store service connection'
appIdentifier: com.yourorganization.testapplication.etc
ipaPath: '$(build.artifactstagingdirectory)/**/*.ipa'
shouldSkipWaitingForProcessing: true
shouldSkipSubmission: true
若要將先前提交的應用程式從iTunes Connect 自動升級至App Store,請新增 App Store升級 工作。
- task: AppStorePromote@1
displayName: 'Submit to the App Store for review'
inputs:
serviceEndpoint: 'My Apple App Store service connection'
appIdentifier: com.yourorganization.testapplication.etc
shouldAutoRelease: false
相關擴充功能
- 來自Microsoft的 Apple App Store
- Codified Security 來自 Codified Security
- 來自 Moboware Inc. 的 MacinCloud
- 來自 James Montemagno 的 iOS 和 Android 行動應用程式任務
- 來自 Perfecto Mobile 的行動測試實驗室
- 來自 Raygun 的 Raygun
- 來自Microsoft的 React Native
- 來自 Tom Gilder 的版本設置器