การเผยแพร่แอปพลิเคชัน iOS ไปยัง App Store ด้วย GitLab และ fastlane

การเผยแพร่แอปพลิเคชัน iOS ไปยัง App Store ด้วย GitLab และ fastlane

GitLab พร้อม fastlane รวบรวม ลงนาม และเผยแพร่แอปพลิเคชัน iOS ไปยัง App Store ได้อย่างไร

เราเพิ่งมี โพสต์เกี่ยวกับวิธีสร้างและเรียกใช้แอปพลิเคชัน Android อย่างรวดเร็ว ด้วย GitLab และ ช่องทางเร่งด่วน. ที่นี่เราจะดูวิธีสร้างและเรียกใช้แอป iOS และเผยแพร่ไปยัง TestFlight ลองดูว่ามันเจ๋งแค่ไหน ฉันกำลังทำการเปลี่ยนแปลงบน iPad Pro ด้วย GitLab Web IDEฉันประกอบและรับการอัปเดตเป็นเวอร์ชันทดสอบของแอปพลิเคชันบน iPad Pro เครื่องเดียวกับที่ฉันพัฒนา

ที่นี่เราจะเอา แอพ iOS ง่าย ๆ บน Swiftที่ฉันบันทึกวิดีโอด้วย

คำไม่กี่คำเกี่ยวกับการกำหนดค่า Apple Store

เราจำเป็นต้องมีแอป App Store ใบรับรองการจัดจำหน่าย และโปรไฟล์การจัดเตรียมเพื่อเชื่อมโยงทุกอย่างเข้าด้วยกัน

สิ่งที่ยากที่สุดคือการตั้งค่าสิทธิ์การลงชื่อใน App Store ฉันหวังว่าคุณจะเข้าใจเรื่องนี้ด้วยตัวเอง หากคุณยังใหม่ ฉันจะแนะนำคุณไปในทิศทางที่ถูกต้อง แต่เราจะไม่พูดถึงความซับซ้อนในการจัดการใบรับรองของ Apple ที่นี่ และสิ่งเหล่านี้เปลี่ยนแปลงอยู่ตลอดเวลา โพสต์นี้จะช่วยให้คุณเริ่มต้นได้

แอพของฉัน

คุณต้องมีแอพใน App Store Connect ดังนั้นคุณจึงมี ID สำหรับการกำหนดค่า .xcodebuild. โปรไฟล์และรหัสแอปพลิเคชันจะรวมการสร้างโค้ด ราคา และความพร้อมใช้งาน และการกำหนดค่า TestFlight เพื่อเผยแพร่แอปพลิเคชันทดสอบให้กับผู้ใช้ อย่าทำการทดสอบสาธารณะ การทดสอบส่วนตัวก็เพียงพอแล้วหากคุณมีกลุ่มเล็กๆ ติดตั้งง่าย และไม่จำเป็นต้องได้รับอนุญาตเพิ่มเติมจาก Apple

โปรไฟล์การเริ่มต้น

นอกเหนือจากการตั้งค่าแอพ คุณต้องมีคีย์การแจกจ่ายและการพัฒนา iOS ที่สร้างขึ้นในส่วนใบรับรอง ตัวระบุ และโปรไฟล์ของ Apple Developer Console ใบรับรองทั้งหมดเหล่านี้สามารถรวมกันเป็นโปรไฟล์การจัดเตรียมได้

ผู้ใช้ที่จะได้รับการรับรองความถูกต้องจะต้องสามารถสร้างใบรับรองได้ ไม่เช่นนั้นจะต้องทำตามขั้นตอนต่างๆ ใบรับรองและถอนหายใจ คุณจะเห็นข้อผิดพลาด

ตัวเลือกอื่น ๆ

นอกจากวิธีการง่ายๆ นี้แล้ว ยังมีวิธีอื่นๆ ในการกำหนดค่าใบรับรองและโปรไฟล์อีกด้วย ดังนั้นหากคุณทำงานแตกต่างออกไป คุณอาจต้องปรับตัว สิ่งที่สำคัญที่สุดคือคุณต้องมีการกำหนดค่า .xcodebuildซึ่งจะชี้ไปยังไฟล์ที่จำเป็น และพวงกุญแจจะต้องพร้อมใช้งานบนคอมพิวเตอร์บิลด์สำหรับผู้ใช้ที่มีชื่อนักวิ่งอยู่ สำหรับลายเซ็นดิจิทัล เราใช้ช่องทางด่วน และหากมีปัญหาหรือต้องการทราบข้อมูลเพิ่มเติม โปรดตรวจสอบรายละเอียด เอกสารเกี่ยวกับลายเซ็นดิจิทัล.

ในตัวอย่างนี้ฉันใช้แนวทางนี้ ใบรับรองและถอนหายใจแต่ใช้งานจริงน่าจะเหมาะกว่า การจับคู่.

กำลังเตรียม GitLab และ fastlane

เตรียม CI Runner

หลังจากรวบรวมข้อมูลทั้งหมดนี้แล้ว เราจะไปยังการกำหนดค่าของ GitLab runner บนอุปกรณ์ MacOS น่าเสียดายที่คุณสามารถสร้างแอป iOS ได้บน MacOS เท่านั้น แต่ทุกสิ่งสามารถเปลี่ยนแปลงได้ และหากคุณคาดหวังความก้าวหน้าในด้านนี้ ให้จับตาดูโครงการต่างๆ อย่างเช่น xcbuild и เข้าสู่ระบบและงานภายในของเรา gitlab-ce#57576.

การตั้งค่านักวิ่งนั้นง่ายมาก ติดตามกระแส คำแนะนำในการตั้งค่า GitLab Runner บน macOS.

บันทึก. นักวิ่งต้องใช้โปรแกรมปฏิบัติการ shell. สิ่งนี้จำเป็นสำหรับการสร้าง iOS บน macOS เพื่อให้ทำงานโดยตรงในฐานะผู้ใช้ แทนที่จะทำงานผ่านคอนเทนเนอร์ หากคุณกำลังใช้ shellการสร้างและการทดสอบจะดำเนินการในฐานะผู้ใช้รันเนอร์บนโฮสต์บิลด์โดยตรง มันไม่ปลอดภัยเท่ากับคอนเทนเนอร์ ดังนั้นเรียกดูได้ดีขึ้น เอกสารความปลอดภัยเพื่อที่คุณจะได้ไม่พลาดสิ่งใด

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

ต้องกำหนดค่า Apple Keychain บนโฮสต์นี้ด้วยการเข้าถึงคีย์ที่ Xcode จำเป็นต้องสร้าง วิธีที่ง่ายที่สุดในการทดสอบคือการเข้าสู่ระบบในฐานะผู้ใช้ที่จะรันบิลด์และพยายามสร้างด้วยตนเอง หากระบบขอการเข้าถึงพวงกุญแจ ให้เลือกอนุญาตให้ CI ทำงานเสมอ มันอาจจะคุ้มค่าที่จะเข้าไปดูท่อส่งก๊าซสองสามท่อแรกเพื่อให้แน่ใจว่าพวกเขาจะไม่ขอพวงกุญแจอีกต่อไป ปัญหาคือ Apple ไม่ได้ทำให้การใช้โหมดอัตโนมัติเป็นเรื่องง่ายสำหรับเรา แต่เมื่อคุณเริ่มได้แล้ว ทุกอย่างจะเรียบร้อยดี

เริ่มต้นช่องทางด่วน

หากต้องการใช้ fastlane ในโปรเจ็กต์ ให้รัน fastlane init. เพียงแค่ติดตาม คำแนะนำในการติดตั้งและใช้งาน fastlaneโดยเฉพาะในส่วนเกี่ยวกับ เจมไฟล์เนื่องจากเราต้องการการเปิดตัวที่รวดเร็วและคาดการณ์ได้ผ่านไปป์ไลน์ CI อัตโนมัติ

ในไดเร็กทอรีโปรเจ็กต์ของคุณ ให้รันคำสั่งเหล่านี้:

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

fastlane จะขอการกำหนดค่าพื้นฐาน จากนั้นสร้างโฟลเดอร์ fastlane ในโปรเจ็กต์ที่มีไฟล์สามไฟล์:

1. fastlane/Appfile

ไม่มีอะไรซับซ้อนที่นี่ เพียงตรวจสอบให้แน่ใจว่า Apple ID และ App ID ของคุณถูกต้อง

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

2. fastlane/Fastfile

Fastfile กำหนดขั้นตอนการสร้าง เราใช้ฟีเจอร์ในตัวของ fastlane มากมาย ดังนั้นทุกอย่างชัดเจนที่นี่เช่นกัน เราสร้างหนึ่งบรรทัดเพื่อรับใบรับรอง ดำเนินการประกอบ และอัปโหลดไปยัง TestFlight คุณสามารถแบ่งกระบวนการนี้เป็นงานต่างๆ ได้หากจำเป็น การดำเนินการทั้งหมดนี้ (get_certificates, get_provisioning_profile, gym и upload_to_testflight) รวมอยู่ในช่องทางด่วนแล้ว

กิจกรรม get_certificates и get_provisioning_profile ที่เกี่ยวข้องกับแนวทางการลงนาม ใบรับรองและถอนหายใจ. หากคุณกำลังใช้ การจับคู่ หรืออะไรก็ตาม ทำการเปลี่ยนแปลง

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

นี่เป็นไฟล์เสริม แต่ฉันสร้างมันขึ้นมาด้วยตนเองเพื่อเปลี่ยนไดเร็กทอรีเอาต์พุตเริ่มต้นและวางเอาต์พุตไว้ในโฟลเดอร์ปัจจุบัน สิ่งนี้ทำให้ CI ง่ายขึ้น หากสนใจอ่านเกี่ยวกับ gym และพารามิเตอร์ของมันใน เอกสาร.

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

ของเราเอง .gitlab-ci.yml

ดังนั้นเราจึงมี CI runner สำหรับโครงการ และเราพร้อมที่จะทดสอบไปป์ไลน์แล้ว มาดูกันว่าเรามีอะไรบ้าง .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

Всеотлично! เราตั้งค่ารูปแบบเป็น UTF-8 สำหรับช่องทางด่วนตามต้องการให้ใช้กลยุทธ์ clone ด้วยการรันโปรแกรม shellเพื่อให้เรามีพื้นที่ทำงานที่สะอาดสำหรับการประกอบแต่ละชิ้น และเพียงโทรติดต่อ flappybuild fastlane ดังที่เห็นด้านบน ด้วยเหตุนี้ เราจึงได้รับแอสเซมบลี ลายเซ็น และการปรับใช้แอสเซมบลีล่าสุดใน TestFlight

เรายังได้รับสิ่งประดิษฐ์และบันทึกไว้พร้อมกับชุดประกอบ โปรดทราบว่ารูปแบบ .ipa เป็นไฟล์ปฏิบัติการ ARM ที่ลงนามแล้วซึ่งไม่ได้ทำงานในเครื่องจำลอง หากคุณต้องการเอาต์พุตสำหรับเครื่องจำลอง เพียงเพิ่มเป้าหมายการ build ที่สร้างมันขึ้นมา แล้วรวมไว้ในพาธอาร์ติแฟกต์

ตัวแปรสภาพแวดล้อมอื่นๆ

มีตัวแปรสภาพแวดล้อมสองสามตัวที่นี่ที่ทำให้ทุกอย่างทำงานได้

FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD и FASTLANE_SESSION

จำเป็นต้องมีการรับรองความถูกต้องสำหรับ fastlane เพื่อตรวจสอบสิทธิ์ใน App Store และอัปโหลดไปยัง TestFlight เมื่อต้องการทำเช่นนี้ ให้สร้างรหัสผ่านสำหรับแอปพลิเคชันที่จะใช้ใน CI รายละเอียด ที่นี่.

หากคุณมีการรับรองความถูกต้องด้วยสองปัจจัย ให้สร้างตัวแปร FASTLANE_SESSION (คำแนะนำที่นั่น)

FASTLANE_USER и FASTLANE_PASSWORD

ที่ ใบรับรองและถอนหายใจ เรียกว่าโปรไฟล์การเริ่มต้นและใบรับรองเมื่อมีการร้องขอ คุณต้องตั้งค่าตัวแปร FASTLANE_USER и FASTLANE_PASSWORD. รายละเอียด ที่นี่. สิ่งนี้ไม่จำเป็นหากคุณใช้วิธีลงนามอื่น

ในข้อสรุป

คุณสามารถดูวิธีการทำงานทั้งหมด ในตัวอย่างง่ายๆของฉัน.

ฉันหวังว่านี่จะเป็นประโยชน์และเป็นแรงบันดาลใจให้คุณทำงานกับ iOS บิวด์ในโครงการ GitLab นี่อีกอัน เคล็ดลับซีไอ สำหรับช่องทางด่วน เผื่อไว้ คุณอาจต้องการใช้ CI_BUILD_ID (สำหรับการสร้างส่วนเพิ่ม) ถึง เพิ่มเวอร์ชันโดยอัตโนมัติ.

คุณสมบัติที่ยอดเยี่ยมอีกอย่างของ fastlane ก็คือ ภาพหน้าจออัตโนมัติ สำหรับ App Store ซึ่งติดตั้งง่ายมาก

บอกเราในความคิดเห็นเกี่ยวกับประสบการณ์ของคุณ และแบ่งปันแนวคิดของคุณในการปรับปรุง GitLab สำหรับการพัฒนาแอป iOS

ที่มา: will.com

เพิ่มความคิดเห็น