Xuất bản ứng dụng iOS lên App Store bằng GitLab và fastlane

Xuất bản ứng dụng iOS lên App Store bằng GitLab và fastlane

Cách GitLab với fastlane thu thập, ký và xuất bản ứng dụng iOS lên App Store.

Gần đây chúng tôi đã có bài đăng về cách xây dựng và chạy nhanh một ứng dụng Android với GitLab và dây buộc. Ở đây chúng ta sẽ xem cách xây dựng và chạy một ứng dụng iOS và xuất bản nó lên TestFlight. Kiểm tra xem nó mát như thế nào Tôi đang thực hiện thay đổi trên iPad Pro bằng GitLab Web IDE, Tôi tiến hành lắp ráp và nhận bản cập nhật lên phiên bản thử nghiệm của ứng dụng trên cùng một chiếc iPad Pro nơi tôi đã phát triển nó.

Ở đây chúng ta sẽ lấy ứng dụng iOS đơn giản trên Swift, người mà tôi đã quay video.

Đôi lời về cấu hình Apple Store

Chúng tôi sẽ cần ứng dụng App Store, chứng chỉ phân phối và hồ sơ cung cấp để liên kết mọi thứ lại với nhau.

Khó khăn nhất ở đây là việc thiết lập quyền ký trong App Store. Tôi hy vọng bạn có thể tự mình tìm ra điều này. Nếu bạn là người mới, tôi sẽ chỉ cho bạn hướng đi đúng, nhưng chúng ta sẽ không nói về sự phức tạp của việc quản lý chứng chỉ Apple ở đây và chúng liên tục thay đổi. Bài đăng này sẽ giúp bạn bắt đầu.

Những ứng dụng của tôi

Bạn cần một ứng dụng trong App Store Connect để có ID cấu hình .xcodebuild. Hồ sơ và ID ứng dụng kết hợp các bản dựng mã, giá cả và tính khả dụng cũng như cấu hình TestFlight để phân phối ứng dụng thử nghiệm cho người dùng. Đừng thực hiện thử nghiệm công khai, thử nghiệm riêng tư sẽ đủ nếu bạn có một nhóm nhỏ, thiết lập dễ dàng và không cần thêm quyền từ Apple.

Hồ sơ khởi tạo

Ngoài thiết lập ứng dụng, bạn cần có các khóa phát triển và phân phối iOS được tạo trong phần Chứng chỉ, Số nhận dạng & Hồ sơ của bảng điều khiển dành cho Nhà phát triển của Apple. Tất cả các chứng chỉ này có thể được kết hợp thành một hồ sơ cung cấp.

Người dùng sẽ được xác thực cần có khả năng tạo chứng chỉ, nếu không thì các bước chứng nhận và thở dài bạn sẽ thấy một lỗi.

lựa chọn khác

Bên cạnh phương pháp đơn giản này, còn có những cách khác để định cấu hình chứng chỉ và hồ sơ. Vì vậy, nếu bạn làm việc khác đi, bạn có thể phải thích nghi. Điều quan trọng nhất là bạn cần cấu hình .xcodebuild, tệp này sẽ trỏ đến các tệp cần thiết và chuỗi khóa phải có sẵn trên máy tính xây dựng cho người dùng có tên mà trình chạy đang chạy. Đối với chữ ký số, chúng tôi sử dụng fastlane và nếu có vấn đề hoặc bạn muốn biết thêm, hãy xem thông tin chi tiết của họ tài liệu về chữ ký số.

Trong ví dụ này tôi đang sử dụng phương pháp chứng nhận và thở dài, nhưng để sử dụng thực tế thì có lẽ nó phù hợp hơn phù hợp với.

Chuẩn bị GitLab và fastlane

Đang chuẩn bị Á hậu CI

Sau khi thu thập tất cả dữ liệu này, chúng tôi chuyển sang cấu hình trình chạy GitLab trên thiết bị MacOS. Thật không may, bạn chỉ có thể tạo ứng dụng iOS trên MacOS. Nhưng mọi thứ có thể thay đổi và nếu bạn mong đợi sự tiến bộ trong lĩnh vực này, hãy để mắt đến các dự án như xcbuild и tôi kývà nhiệm vụ nội bộ của chúng tôi gitlab-ce#57576.

Việc thiết lập người chạy rất đơn giản. Theo dõi hiện tại hướng dẫn thiết lập GitLab Runner trên macOS.

Ghi chú. Người chạy phải sử dụng chương trình thực thi shell. Điều này là bắt buộc để xây dựng iOS trên macOS nhằm hoạt động trực tiếp với tư cách người dùng thay vì thông qua vùng chứa. Nếu bạn đang sử dụng shell, việc xây dựng và thử nghiệm được thực hiện với tư cách là người dùng chạy, trực tiếp trên máy chủ xây dựng. Nó không an toàn như vùng chứa, vì vậy tốt hơn nên duyệt qua tài liệu an toànđể bạn không bỏ lỡ bất cứ điều gì.

sudo curl --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-darwin-amd64
sudo chmod +x /usr/local/bin/gitlab-runner
cd ~
gitlab-runner install
gitlab-runner start

Chuỗi khóa Apple phải được định cấu hình trên máy chủ này để có quyền truy cập vào các khóa mà Xcode cần xây dựng. Cách dễ nhất để kiểm tra điều này là đăng nhập với tư cách người dùng sẽ chạy bản dựng và thử xây dựng bản dựng theo cách thủ công. Nếu hệ thống yêu cầu quyền truy cập vào chuỗi khóa, hãy chọn Luôn cho phép CI hoạt động. Có thể bạn nên vào và xem một số quy trình đầu tiên để đảm bảo rằng họ không yêu cầu móc khóa nữa. Vấn đề là Apple không tạo điều kiện cho chúng ta dễ dàng sử dụng chế độ Auto, nhưng một khi bạn làm quen thì mọi thứ sẽ ổn.

khởi tạo làn đường nhanh

Để sử dụng fastlane trong một dự án, hãy chạy fastlane init. Chỉ cần làm theo hướng dẫn cài đặt và chạy fastlane, đặc biệt là ở phần nói về tệp đá quý, bởi vì chúng tôi cần khởi chạy nhanh chóng và có thể dự đoán được thông qua quy trình CI tự động.

Trong thư mục dự án của bạn, hãy chạy các lệnh sau:

xcode-select --install
sudo gem install fastlane -NV
# Alternatively using Homebrew
# brew cask install fastlane
fastlane init

fastlane sẽ yêu cầu cấu hình cơ bản và sau đó tạo thư mục fastlane trong dự án với ba tệp:

1. fastlane/Appfile

Không có gì phức tạp ở đây. Chỉ cần đảm bảo ID Apple và ID ứng dụng của bạn là chính xác.

app_identifier("com.vontrance.flappybird") # The bundle identifier of your app
apple_id("[email protected]") # Your Apple email address

2. fastlane/Fastfile

Fastfile xác định các bước xây dựng. Chúng tôi sử dụng rất nhiều tính năng tích hợp của fastlane nên mọi thứ ở đây cũng rõ ràng. Chúng tôi tạo một dòng nhận chứng chỉ, thực hiện lắp ráp và tải nó lên TestFlight. Bạn có thể chia quá trình này thành các nhiệm vụ khác nhau nếu cần thiết. Tất cả các hoạt động này (get_certificates, get_provisioning_profile, gym и upload_to_testflight) đã được đưa vào fastlane.

Hoạt động get_certificates и get_provisioning_profile liên quan đến cách tiếp cận ký kết chứng nhận và thở dài. Nếu bạn đang sử dụng phù hợp với hoặc bất cứ điều gì, thực hiện thay đổi.

default_platform(:ios)

platform :ios do
  desc "Build the application"
  lane :flappybuild do
    get_certificates
    get_provisioning_profile
    gym
    upload_to_testflight
  end
end

3. fastlane/Gymfile

Đây là một tệp tùy chọn, nhưng tôi đã tạo nó theo cách thủ công để thay đổi thư mục đầu ra mặc định và đặt đầu ra vào thư mục hiện tại. Điều này đơn giản hóa CI. Nếu quan tâm, hãy đọc về gym và các thông số của nó trong tài liệu.

https://docs.fastlane.tools/actions/gym/

Chúng ta .gitlab-ci.yml

Vì vậy, chúng tôi có một trình chạy CI cho dự án và chúng tôi đã sẵn sàng thử nghiệm quy trình. Hãy xem chúng ta có gì trong .gitlab-ci.yml:

stages:
  - build

variables:
  LC_ALL: "en_US.UTF-8"
  LANG: "en_US.UTF-8"
  GIT_STRATEGY: clone

build:
  stage: build
  script:
    - bundle install
    - bundle exec fastlane flappybuild
  artifacts:
    paths:
    - ./FlappyBird.ipa

BẠN CÓ THỂ! Chúng tôi đặt định dạng thành UTF-8 cho fastlane theo yêu cầu, sử dụng chiến lược clone với chương trình thực thi shell, để chúng ta có một không gian làm việc sạch sẽ cho mỗi cụm và chỉ cần gọi flappybuild fastlane, như đã thấy ở trên. Kết quả là chúng tôi có được bản lắp ráp, chữ ký và triển khai bản lắp ráp mới nhất trong TestFlight.

Chúng tôi cũng lấy hiện vật và lưu nó cùng với tập hợp. Xin lưu ý rằng định dạng .ipa là một tệp thực thi ARM đã ký không chạy trong trình mô phỏng. Nếu bạn muốn đầu ra cho trình mô phỏng, chỉ cần thêm mục tiêu xây dựng tạo ra nó rồi đưa nó vào đường dẫn tạo tác.

Các biến môi trường khác

Có một số biến môi trường ở đây giúp mọi thứ hoạt động.

FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD и FASTLANE_SESSION

Cần có xác thực cho fastlane để xác thực trong App Store và tải lên TestFlight. Để thực hiện việc này, hãy tạo mật khẩu cho ứng dụng sẽ được sử dụng trong CI. Chi tiết đây.

Nếu bạn có xác thực hai yếu tố, hãy tạo một biến FASTLANE_SESSION (có hướng dẫn).

FASTLANE_USER и FASTLANE_PASSWORD

Đó chứng nhận và thở dài được gọi là hồ sơ khởi tạo và chứng chỉ theo yêu cầu, bạn cần đặt các biến FASTLANE_USER и FASTLANE_PASSWORD. Chi tiết đây. Điều này là không cần thiết nếu bạn đang sử dụng một phương thức ký khác.

Kết luận

Bạn có thể thấy mọi thứ hoạt động như thế nào trong ví dụ đơn giản của tôi.

Tôi hy vọng điều này hữu ích và truyền cảm hứng cho bạn làm việc với các bản dựng iOS trong dự án GitLab. Đây là một cái khác mẹo CI cho fastlane, chỉ trong trường hợp. Bạn có thể muốn sử dụng CI_BUILD_ID (đối với các bản dựng tăng dần) thành tự động tăng phiên bản.

Một tính năng thú vị khác của fastlane là ảnh chụp màn hình tự động cho App Store, rất dễ thiết lập.

Hãy cho chúng tôi biết trong phần nhận xét về trải nghiệm của bạn và chia sẻ ý tưởng của bạn để cải thiện việc phát triển ứng dụng GitLab cho iOS.

Nguồn: www.habr.com

Thêm một lời nhận xét