Triển khai CI/CD cho iOS – Appstore Distribution

by Sam
634 views
This entry is part [part not set] of 6 in the series CI/CD cho iOS

The most powerful tool we have as developers is automation.

Scott Hanselman

Overview

Tiếp tục với series triển khai CD cho iOS, hôm nay chúng ta sẽ tìm hiểu cách chạy CD để đẩy một ứng dụng lên App Store Connect một cách tự động.

Có rất nhiều doanh nghiệp, dự án chọn App Store Connect & TestFlight làm nền tảng để Test sản phẩm, đăc biệt với các sản phẩm gần thời điểm lên App Store. Thêm một sự tiện lợi nữa đến từ TestFlight, khi có phiên bản mới được upload lên sẽ có thông báo về cho các thiết bị cài đặt TestFlight. Vậy nếu triển khai CD để tự động đưa ứng dụng lên App Store Connect, ta cũng sẽ có một hệ thống thông báo tự động khi quá trình hoàn tất mà không cần triển khai thêm gì.

Quan trọng: Để sử dụng được phương thức này ta cần chú ý một số điểm sau:

  • Tạo sẵn App trên App Store Connect với đúng bundle id
  • Bản build sau bắt buộc phải có version/build number lớn hơn version/build number của bản trước đó

Distribute và Upload IPA sử dụng Command Line

Sẽ không có nhiều khác biệt giữa phương thức Archive và Export của phiên bản App Store với các phiên bản khác, ta vẫn sẽ sử dụng các câu lệnh cũ, tuy nhiên phần export sẽ không cần tham số -exportPath:

xcodebuild archive -archivePath "cicd-test" -scheme cicd-test
xcodebuild -exportArchive -archivePath "cicd-test.xcarchive" -exportOptionsPlist ExportOptions.plist -allowProvisioningUpdates

Với chế độ App Store, chúng ta sẽ sử dụng file ExportOptions.plist với nội dung như sau:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>method</key>
	<string>app-store</string>
	<key>destination</key>
	<string>upload</string>
</dict>
</plist>

Cần thêm có key destination với value upload để cấu hình việc tự động upload ipa thay vì export file.

Cấu hình .gitlab-ci.yml cho GitlabCI

Với phương thức này, ta chỉ cần đơn giản cấu hình file .gitlab-ci.yml như sau:

stages:
  - deploy

deploy_appstore:
  stage: deploy
  script:
    - echo 'Hello bitches, welcome to lazy boys world!'
    - echo 'Just commit code, serve yourself a cup of coffee. Let gitlab build your app!'
    - xcodebuild archive -archivePath "cicd-test" -scheme cicd-test
    - xcodebuild -exportArchive  -archivePath "cicd-test.xcarchive" -exportPath "ipa" -exportOptionsPlist ExportOptions.plist -allowProvisioningUpdates
  tags:
    - main

Kết quả log của Job khi upload thành công trên Gitlab sẽ trông như sau

Log của quá trình upload App lên App Store Connect

Như vậy là đã hoàn thành việc cấu hình CD upload ứng dụng lên App Store Connect. Ở bài viết tiếp theo, chúng ta sẽ cùng tìm hiểu cách triển khai CD cho ứng dụng iOS theo phương thức OTA với các Website đang Deploy trên AWS S3 😀

Series Navigation

Leave a Comment

* By using this form you agree with the storage and handling of your data by this website.

You may also like