GitLab พร้อม fastlane รวบรวม ลงนาม และเผยแพร่แอปพลิเคชัน iOS ไปยัง App Store ได้อย่างไร
เราเพิ่งมี
ที่นี่เราจะเอา
คำไม่กี่คำเกี่ยวกับการกำหนดค่า 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 เท่านั้น แต่ทุกสิ่งสามารถเปลี่ยนแปลงได้ และหากคุณคาดหวังความก้าวหน้าในด้านนี้ ให้จับตาดูโครงการต่างๆ อย่างเช่น
การตั้งค่านักวิ่งนั้นง่ายมาก ติดตามกระแส
บันทึก. นักวิ่งต้องใช้โปรแกรมปฏิบัติการ 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
. เพียงแค่ติดตาม
ในไดเร็กทอรีโปรเจ็กต์ของคุณ ให้รันคำสั่งเหล่านี้:
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
Всеотлично! 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 ก็คือ
บอกเราในความคิดเห็นเกี่ยวกับประสบการณ์ของคุณ และแบ่งปันแนวคิดของคุณในการปรับปรุง GitLab สำหรับการพัฒนาแอป iOS
ที่มา: will.com