ก่อนหน้า Xcode 9 การใช้เครื่องมือการผสานรวมอย่างต่อเนื่องของ Apple เป็นกระบวนการที่น่าเบื่อและซับซ้อนซึ่งจำเป็นต้องซื้อและติดตั้งแอพ macOS Server เพิ่มเติม สิ่งนี้ทำให้หลาย ๆ นักพัฒนา เพื่อละทิ้งแนวคิดในการผสานรวมอย่างต่อเนื่องสำหรับโครงการ iOS ของตนหรือหันไปใช้โซลูชันของบุคคลที่สามโดยมีระดับความสำเร็จที่แตกต่างกันอย่างมาก
อย่างไรก็ตามหลังจาก Xcode 9.0 เปิดตัวในเดือนกันยายน 2017 กระบวนการก็ง่ายขึ้นอย่างมากรวมถึงตัวเลือกในการเซ็นรหัสอัตโนมัติและตอนนี้ได้รวมเข้ากับ Xcode อย่างสมบูรณ์แล้ว ดังนั้นจึงไม่ต้องใช้แอพหรือเครื่องมือเพิ่มเติมใด ๆ
ในขณะที่โซลูชันของบุคคลที่สามเช่น ช่องทางเร่งด่วน , Bluepill ฯลฯ เป็นความช่วยเหลือที่ดีและสามารถทำงานหนัก ๆ ให้คุณได้บทความนี้จะสำรวจความสามารถของการใช้ Xcode และเครื่องมือของ Apple เพียงอย่างเดียวสำหรับคุณ ความต้องการบูรณาการอย่างต่อเนื่อง . นอกจากนี้เราจะใช้การลงนามรหัสด้วยตนเองเนื่องจากสิ่งนี้มักจะเป็นปัญหาสำหรับคนจำนวนมากและการลงนามอัตโนมัติก็มีแนวโน้มที่จะไม่เป็นทางออกที่ดีที่สุดเมื่อต้องกำหนดค่าการสร้างหลาย ๆ
บันทึก: บทความนี้อ้างอิงจาก Xcode 9.4.1 และมุ่งเน้นไปที่การพัฒนาแอป iOS แต่ส่วนมากสามารถใช้ได้กับ Xcode 10 (ปัจจุบันมีให้บริการในเวอร์ชันเบต้า 5) และการพัฒนาแอป macOS
นอกเหนือจากการลดความซับซ้อนของกระบวนการรวมจริงแล้ว Xcode 9 ยังทำให้กระบวนการตั้งค่าเซิร์ฟเวอร์ Xcode ง่ายขึ้น
เปิดแอพ Xcode บนเครื่อง macOS ของคุณที่ถูกกำหนดให้เป็นเซิร์ฟเวอร์ CI ของคุณและเปิดการตั้งค่า
ไปที่แท็บสุดท้ายที่เรียกว่า เซิร์ฟเวอร์และบอท .
เปิดความสามารถของ Xcode Server โดยคลิกสวิตช์ที่มุมขวาบน จากนั้นระบบจะขอให้คุณเลือกผู้ใช้เพื่อเรียกใช้และเรียกใช้บิลด์สคริปต์บนเครื่องนี้ อาจเป็นความคิดที่ดีที่จะมีผู้ใช้เฉพาะเพื่อจุดประสงค์นี้แทนที่จะใช้ผู้ใช้ที่มีอยู่แล้ว
โปรดทราบว่าผู้ใช้รายนี้จะต้องล็อกอินเข้าสู่ระบบเพื่อให้บ็อต Xcode ทำงานได้ หลังจากเข้าสู่ระบบคุณจะเห็นวงกลมสีเขียวถัดจากชื่อผู้ใช้
แค่นั้นแหละ! มาดูบ็อต Xcode ให้ละเอียดยิ่งขึ้น
ตอนนี้คุณพร้อมที่จะเริ่มกำหนดค่าบอท Xcode ให้ทำงานบนเซิร์ฟเวอร์นี้ สามารถทำได้บนเครื่องพัฒนาใด ๆ ที่เชื่อมต่อกับเครือข่ายเดียวกันกับเซิร์ฟเวอร์
เปิด Xcode บนเครื่องพัฒนาของคุณแล้วคลิกที่ Xcode> ค่ากำหนด จากเมนูด้านบน จากนั้นไปที่ไฟล์ บัญชี และคลิกที่ + ไอคอนที่มุมล่างซ้าย เลือก Xcode Server จากกล่องโต้ตอบที่ปรากฏขึ้น
ในการสร้างบอทเพียงเปิดโปรเจ็กต์ของคุณใน Xcode แล้วเลือกไฟล์ สินค้า> สร้างบ็อต ... ตัวเลือกจากเมนูด้านบน การตั้งค่าบ็อตมีหลายขั้นตอนและเราจะสำรวจในส่วนต่อไป
หนึ่งในแอปพลิเคชันที่ใช้บ่อยที่สุดของระบบสร้างแอป iOS โดยอัตโนมัติคือการกำหนดค่าบอทเพื่ออัปโหลดแอปไปยังแพลตฟอร์มการแจกจ่าย iOS เช่น TestFlight, Fabric เป็นต้น
แรงจูงใจในการขายคืออะไร
ดังที่ฉันได้อธิบายไว้ก่อนหน้านี้บทความนี้จะสำรวจเฉพาะการอัปโหลดไปยัง App Store Connect และการดาวน์โหลดโดยตรงจากเซิร์ฟเวอร์ Xcode ของคุณเนื่องจากเป็นเครื่องมือพื้นฐานของ Apple สำหรับการแจกจ่ายแอป iOS
ก่อนกำหนดค่าบอทตรวจสอบให้แน่ใจว่าคุณมีระเบียนแอป App Store Connect ที่ตรงกับรหัสชุดของโครงการพัฒนาแอปของคุณ นอกจากนี้ยังเป็นที่น่าสังเกตว่าแต่ละรุ่นจำเป็นต้องมีตัวระบุที่ไม่ซ้ำกันซึ่งประกอบด้วยเวอร์ชันของรุ่นและหมายเลขรุ่น เราจะสำรวจวิธีตรวจสอบให้แน่ใจว่าตรงตามเงื่อนไขเหล่านี้เมื่อเราพูดคุยเกี่ยวกับการตั้งค่าบอท Xcode ในภายหลัง
ขั้นตอนที่ 1: การตั้งค่าการกำหนดค่าบิลด์ที่ถูกต้องเป็นขั้นตอนสำคัญเพื่อให้ได้สิ่งที่คุณต้องการ ตรวจสอบให้แน่ใจว่าคุณได้เลือกโครงร่างและการกำหนดค่าที่สร้างแอพที่คุณต้องการอัปโหลดไปยัง App Store Connect ซึ่งรวมถึงการตรวจสอบให้แน่ใจว่าการกำหนดค่าบิวด์ใช้รหัสบันเดิลที่เหมาะสมซึ่งลงทะเบียนไว้ในพอร์ทัล Apple Developer ของทีมของคุณ (ใช้สำหรับการลงนามโค้ด) รวมถึงในพอร์ทัล App Store Connect ของคุณ (ใช้สำหรับอัปโหลดแอปโดยอัตโนมัติ) .
ขั้นตอนที่ 2: ในขณะที่ยังอยู่ในแท็บ 'การกำหนดค่า' เราจำเป็นต้องระบุตัวเลือกการส่งออก เราจะสำรวจรายการคุณสมบัติตัวเลือกการส่งออกดังนั้นตรวจสอบให้แน่ใจว่าได้เลือก 'ใช้ Custom Export Options Plist' แล้ว
ขั้นตอนที่ 3: ตอนนี้เป็นเวลาที่เราสร้างรายการคุณสมบัติตัวเลือกการส่งออกของเรา รายการคีย์ทั้งหมดที่จะใช้ในไฟล์นี้มีให้หากคุณป้อน xcodebuild --help
แต่เราจะสำรวจคีย์ที่ใช้ในการกำหนดค่าบอทนี้ที่นี่:
compileBitcode
- Bitcode เป็นรูปแบบเอาต์พุตชั่วคราวของ Apple สำหรับซอร์สโค้ดของแอป กล่าวอีกนัยหนึ่งก็คือรูปแบบที่มีการแปลงซอร์สโค้ดของคุณก่อนที่จะคอมไพล์เป็นรหัสเครื่องสำหรับสถาปัตยกรรมเฉพาะ มีจุดมุ่งหมายเพื่อให้มีโค้ดคอนเทนเนอร์เดียวที่สามารถปรับให้เหมาะสมเพิ่มเติมได้หากมีการเพิ่มประสิทธิภาพในชุดคำสั่งและยังสามารถรวบรวมไปยังสถาปัตยกรรมในอนาคตจากรูปแบบเดียวกันนี้ อย่างไรก็ตามสิ่งนี้ไม่มีผลใด ๆ กับแอปพลิเคชันของคุณ ขึ้นอยู่กับคุณที่จะตัดสินใจว่าคุณต้องการเปิดใช้งานหรือไม่method
- อาร์กิวเมนต์นี้ระบุประเภทของผลิตภัณฑ์ที่คุณกำลังส่งออก Apple แยกแยะผลิตภัณฑ์ตามกลุ่มเป้าหมายที่กำหนด - การพัฒนา อนุญาตให้คุณติดตั้งบนอุปกรณ์ที่ระบุในโปรไฟล์การจัดสรรเท่านั้น องค์กร อนุญาตให้ทุกคนติดตั้งได้ แต่ต้องเชื่อถือโปรไฟล์การพัฒนานี้อย่างชัดเจนก่อนที่จะเรียกใช้แอปและ แอพสโตร์ มีไว้สำหรับแจกจ่ายไปยัง App Store หรือ App Store Connect ดังนั้นเราจะใช้ค่านี้provisioningProfiles
- นี่คือการอธิบายตนเอง แต่มีสองสิ่งที่ควรทราบที่นี่: โปรไฟล์การจัดเตรียมในรายการคุณสมบัติตัวเลือกการส่งออกเป็นพจนานุกรมที่ a สำคัญ สอดคล้องกับรหัสกลุ่มของผลิตภัณฑ์และ มูลค่า สอดคล้องกับชื่อของโปรไฟล์การจัดเตรียมที่ใช้ในการลงนามรหัสsigningCertificate
- อีกหนึ่งข้อโต้แย้งที่อธิบายตนเอง ค่าของฟิลด์นี้อาจเป็นชื่อใบรับรองแบบเต็มหรือแฮช SHA-1teamID
- อีกหนึ่งข้อโต้แย้งที่อธิบายตนเอง นี่คือตัวระบุความยาว 10 อักขระที่ Apple ออกให้กับองค์กรของคุณเมื่อคุณสมัครเข้าร่วมโปรแกรม Apple DeveloperuploadBitcode
- ไม่ว่าจะอัปโหลด bitcode หรือไม่ (หากคุณเลือกที่จะรวบรวมลงในรหัสนั้น) เพื่อให้สามารถใช้ใน AppStore Connect เพื่อสร้างงานสร้างที่ได้รับการปรับปรุงใหม่สำหรับสถาปัตยกรรมในอนาคตuploadSymbols
- อัปโหลดสัญลักษณ์การดีบักของคุณเพื่อให้คุณได้รับรายงานข้อขัดข้องที่มีความหมายมากกว่าการถ่ายโอนข้อมูลหน่วยความจำและชุดประกอบตอนนี้รายการคุณสมบัติตัวเลือกการส่งออกของคุณอาจมีลักษณะดังนี้:
compileBitcode method app-store provisioningProfiles com.bundle.id ProvisioningProfileName signingCertificate Signing Certificate Exact Name or SHA-1 hash value teamID ?????????? uploadBitcode uploadSymbols
ขั้นตอนที่ 4: เลือก. plist ที่คุณสร้างเป็นรายการคุณสมบัติตัวเลือกการส่งออก
ขั้นตอนที่ 5: ถัดไปคือแท็บ 'กำหนดการ' ซึ่งตั้งค่าตามความต้องการของคุณ
ขั้นตอนที่ 6: บนแท็บการลงนามตรวจสอบให้แน่ใจว่าคุณได้ยกเลิกการเลือกตัวเลือก“ อนุญาตให้เซิร์ฟเวอร์ Xcode จัดการใบรับรองและโปรไฟล์ของฉัน” และอัปโหลดใบรับรองการลงนามที่ตรงกันและโปรไฟล์การจัดเตรียมด้วยตัวเองบน ใบรับรองและโปรไฟล์ หน้า.
ขั้นตอนที่ 7: อุปกรณ์ ควรปล่อยแท็บไว้เหมือนเดิมเนื่องจากเรากำลังอัปโหลดแอปแทนที่จะทดสอบ
ขั้นตอนที่ 8: อาร์กิวเมนต์ แท็บอนุญาตให้คุณตั้งค่าอาร์กิวเมนต์ xcodebuild หรือตัวแปรสภาพแวดล้อมอย่างชัดเจนที่สามารถใช้ในสคริปต์ build หรือ pre-integration และ post-integration
ขั้นตอนที่ 9: ในที่สุดเราก็มาถึง ทริกเกอร์ ซึ่งเป็นแท็บสุดท้ายในการกำหนดค่าบอทการรวม Xcode อย่างต่อเนื่อง นี่คือเครื่องมือที่ทรงพลังที่สุดในคลังแสง Xcode Server สำหรับผู้เริ่มฉันต้องการเพิ่มสองคำสั่งต่อไปนี้เป็นสคริปต์ก่อนการรวม:
#!/bin/sh set printenv
ตัวแรกพิมพ์ตัวแปรทั้งหมดที่ Xcode Server ใช้และค่าของตัวแปรในการรันการรวมปัจจุบัน อันที่สองพิมพ์ตัวแปรสภาพแวดล้อมและค่าของตัวแปรทั้งหมด ตามที่คาดไว้สิ่งนี้จะมีประโยชน์ในการดีบักสคริปต์ของคุณดังนั้นฉันจึงตั้งชื่อมันว่า 'ข้อมูลการดีบัก'
โปรดจำไว้ว่าเราได้กล่าวไว้ว่าเราจำเป็นต้องตรวจสอบให้แน่ใจว่าแต่ละบิวด์ที่อัปโหลดไปยัง App Store Connect จำเป็นต้องมีเวอร์ชันบิวด์ที่ไม่ซ้ำใคร เราสามารถใช้เครื่องมือ PlistBuddy ในตัวได้ แต่เราต้องมีวิธีการสร้างหมายเลขเฉพาะด้วย สิ่งหนึ่งที่มีอยู่เสมอระหว่างการรวม Xcode Server และยังไม่ซ้ำกันอย่างสะดวกคือหมายเลขการรวมเนื่องจากจะเพิ่มขึ้นโดยอัตโนมัติ เราจะสร้างสคริปต์ก่อนการผสานรวมอีกชุดหนึ่งชื่อ“ set build number” พร้อมเนื้อหาต่อไปนี้เพื่อให้แน่ใจว่าเรามีหมายเลขบิวด์ที่ไม่ซ้ำกันในแต่ละครั้ง:
#!/bin/sh buildNumber=$(/usr/libexec/PlistBuddy -c 'Print CFBundleVersion' '${PROJECT_DIR}/${INFOPLIST_FILE}') buildNumber=$XCS_INTEGRATION_NUMBER /usr/libexec/PlistBuddy -c 'Set :CFBundleVersion $buildNumber' '${PROJECT_DIR}/${INFOPLIST_FILE}'
หากคุณใช้ CocoaPods และเลือกที่จะไม่ผูกมัดไดเร็กทอรี Pods กับ DVCS ของคุณคุณควรรวมสคริปต์ก่อนการรวมเข้ากับเนื้อหาต่อไปนี้:
#!/bin/sh cd $XCS_PRIMARY_REPO_DIR pod install
ขั้นตอนที่ 10: ใกล้จะเสร็จแล้ว แต่ยังไม่ได้ระบุที่ใดที่เราต้องการอัปโหลดบิวด์ไปที่ AppStore Connect หรือไปที่บัญชีใด ด้วยเหตุนี้เราจะเพิ่มสคริปต์หลังการผสานรวมและเครื่องมือในตัวอีกตัวที่เรียกว่า Application Loader ใส่สิ่งต่อไปนี้ในสคริปต์:
#!/bin/sh /Applications/Xcode.app/Contents/Applications/Application Loader.app/Contents/Frameworks/ITunesSoftwareService.framework/Support/altool --upload-app -f $XCS_PRODUCT -u $TESTFLIGHT_USERNAME -p $TESTFLIGHT_PASSWORD
$XCS_PRODUCT
เป็นตัวแปร Xcode Server และมีเส้นทางไปยังแอปที่สร้างขึ้นในการรันการรวมปัจจุบัน อย่างไรก็ตาม $TESTFLIGHT_USERNAME
และ $TESTFLIGHT_PASSWORD
ไม่ใช่ตัวแปรของระบบหรือ Xcode Server คุณต้องตั้งค่าเหล่านี้และมีค่าของ Apple ID และรหัสผ่านของคุณ น่าเสียดายที่ Apple ได้ยุติการสนับสนุนการสร้างคีย์ API สำหรับการอัปโหลดบิวด์ของ AppStore Connect เนื่องจากข้อมูลนี้เป็นข้อมูลลับจึงเป็นแนวทางปฏิบัติที่ดีที่สุดในการตั้งค่าโดยตรงบนเซิร์ฟเวอร์ Mac (สมมติว่าเป็นของคุณเอง) เป็นตัวแปรสภาพแวดล้อมแทนที่จะเป็นในการกำหนดค่าบ็อตเซิร์ฟเวอร์ Xcode
บ็อตการแจกจ่ายเซิร์ฟเวอร์ Xcode ใช้การกำหนดค่าเดียวกันกับการกำหนดค่าสำหรับการแจกจ่าย App Store Connect ยกเว้นสคริปต์หลังการรวม อย่างไรก็ตามการดาวน์โหลดแอปพลิเคชันและติดตั้งยังคงเป็นเรื่องยุ่งยาก คุณยังคงต้องตรวจสอบให้แน่ใจว่าโปรไฟล์การจัดเตรียมที่คุณได้ลงนามในแอปของคุณอนุญาตให้ติดตั้งแอปบนอุปกรณ์ที่คุณใช้อยู่
เมื่อเป็นเช่นนั้นคุณจะต้องเปิด Safari บนอุปกรณ์ iOS ของคุณและไปที่แผงควบคุมเว็บเซิร์ฟเวอร์ Xcode ของเซิร์ฟเวอร์ของคุณ ตัวอย่างเช่นหากชื่อเซิร์ฟเวอร์ของคุณคือ“ เซิร์ฟเวอร์ Mac” คุณสามารถค้นหาได้ที่“ mac-server-name.local / xcode” หากคุณอยู่ในเครือข่ายเดียวกันกับเซิร์ฟเวอร์ คุณจะพบรายการบ็อต Xcode ทั้งหมดของคุณและสถิติของการผสานรวมล่าสุด
เลือกแอพที่สร้างแอพที่คุณต้องการดาวน์โหลด ในหน้าจอต่อไปนี้คุณจะมีปุ่มสองปุ่ม - ติดตั้ง และ ข้อมูลส่วนตัว . หากนี่เป็นครั้งแรกที่คุณดาวน์โหลดจากเซิร์ฟเวอร์นี้คุณต้องคลิก ข้อมูลส่วนตัว เพื่อเพิ่มใบรับรองในรายการแหล่งที่มาที่เชื่อถือได้ หลังจากนั้นคลิกที่ไฟล์ ติดตั้ง ในหน้าเดียวกันและคุณจะได้รับการต้อนรับด้วยกล่องโต้ตอบการยืนยัน iOS“ คุณแน่ใจหรือไม่ว่าต้องการติดตั้ง * บนอุปกรณ์ของคุณ” ยืนยันโดยคลิก ใช่ และแอปของคุณจะได้รับการติดตั้งและเรียกใช้งานได้จากหน้าจอหลัก
สำหรับ iOS 10.3 และใหม่กว่า สาเหตุที่ทำให้“ ไม่สามารถเชื่อมต่อกับ * .local” อาจล้มเหลวก็คือใบรับรองที่ลงนามด้วยตนเองต้องได้รับการเชื่อถือด้วยตนเองในการตั้งค่าบนอุปกรณ์ทดสอบ
ทำตามขั้นตอนเหล่านี้:
ขั้นตอนที่ 1: ติดตั้งใบรับรองที่ลงนามด้วยตนเองจากหน้าบ็อตของเซิร์ฟเวอร์ Xcode บน iPhone ของคุณ
ขั้นตอนที่ 2: ไปที่ iPhone การตั้งค่า> ทั่วไป> เกี่ยวกับ> การตั้งค่าความน่าเชื่อถือของใบรับรอง .
ขั้นตอนที่ 3: ค้นหาใบรับรองที่ลงนามด้วยตนเองของเซิร์ฟเวอร์ของคุณในส่วน เปิดใช้งานความน่าเชื่อถืออย่างเต็มที่สำหรับใบรับรอง ROOT และเปิดสวิตช์
ขั้นตอนที่ 4: กลับไปที่หน้าการรวมบอทบน Xcode Server คลิก ติดตั้ง .
การใช้ Xcode Server ที่ยอดเยี่ยมอีกอย่างหนึ่งคือการทดสอบแอปอัตโนมัติไม่ว่าจะเป็นการทดสอบหน่วยหรือ UI ในการดำเนินการนี้คุณต้องตั้งเป้าหมายที่เหมาะสมสำหรับโครงการของคุณ นั่นคือคุณต้องมีเป้าหมายที่เรียกใช้การทดสอบหน่วยหรือ UI ขึ้นอยู่กับเป้าหมายของคุณ
ขั้นตอนการตั้งค่าจะเหมือนกับขั้นตอนก่อนหน้า แต่เราจะเลือกตัวเลือกต่างๆ ความแตกต่างที่สำคัญประการแรกคือใน การกำหนดค่า แท็บ เห็นได้ชัดว่าเราจะทำเครื่องหมายในช่อง 'วิเคราะห์' และ 'การทดสอบ' เนื่องจากนั่นคือเป้าหมายหลักของเรา ฉันไม่แนะนำให้เก็บหรือส่งออกผลิตภัณฑ์ด้วยบอทนี้ เป็นไปได้ที่จะบรรลุทั้งการทดสอบและการแจกจ่ายด้วยการกำหนดค่าบอทเดียวกัน อย่างไรก็ตามสถานการณ์ทั้งสองนี้แตกต่างกันในผลลัพธ์และตารางเวลา การกระจายมักจะทำงานเมื่อสิ้นสุดรอบ
ไม่ว่าคุณจะทำงานใน Scrum หรือ Kanban หรือเฟรมเวิร์กอื่น ๆ ควรมีวงจรที่ขับเคลื่อนตามเวลาหรือตามเหตุการณ์ที่กำหนดไว้ล่วงหน้าซึ่งคุณควรส่งออกและผลิตภัณฑ์ที่ใช้งานได้ ในทางกลับกันคุณควรเรียกใช้บ็อตทดสอบในแต่ละคอมมิตเนื่องจากเป็นแนวป้องกันแรกของคุณจากการถอยหลัง เนื่องจากบอททดสอบทำงานบ่อยขึ้นอย่างเห็นได้ชัดการรวมบอทสองตัวนี้เข้าด้วยกันจะสามารถใช้พื้นที่ดิสก์บนเซิร์ฟเวอร์ของคุณได้อย่างรวดเร็ว และยังต้องใช้เวลาในการผสานรวมแต่ละครั้งกว่าจะเสร็จสมบูรณ์
ด้วยวิธีนี้เรากำลังย้ายไปที่แท็บ 'กำหนดการ' และเราได้กล่าวถึงเรื่องนี้แล้วในย่อหน้าก่อนหน้านี้ ดังนั้นหัวข้อถัดไปที่น่าสนใจคือการลงนามรหัส โปรดสังเกตว่าแม้ว่าเป้าหมายการทดสอบของคุณอาจระบุว่าไม่จำเป็นต้องมีโปรไฟล์การจัดสรรในหน้าการตั้งค่าโปรเจ็กต์ของคุณ แต่คุณควรตั้งค่าให้ใช้ทีมเดียวกันและลงนามใบรับรองเป็นแอปพลิเคชันโฮสต์ สิ่งนี้จำเป็นหากคุณต้องการทดสอบแอปของคุณบนอุปกรณ์ iOS ไม่ใช่แค่บนเครื่องจำลอง หากเป็นกรณีของคุณคุณต้องตรวจสอบให้แน่ใจว่าอุปกรณ์ iOS ที่ใช้ในการทดสอบไม่ได้รับการล็อคเนื่องจากไม่มีการใช้งานเนื่องจากอาจทำให้การทำงานร่วมกันของคุณค้างไปเรื่อย ๆ โดยไม่แจ้งให้คุณทราบ
ตอนนี้เราอยู่ในแท็บ 'อุปกรณ์' ซึ่งไม่จำเป็นต้องมีคำอธิบายที่เฉพาะเจาะจง เพียงเลือกหนึ่งอุปกรณ์หลายเครื่องหรือทั้งหมด (iOS และเครื่องจำลอง) ที่คุณต้องการทดสอบโค้ดของคุณ นอกจากนี้คุณยังตรวจสอบได้ว่าจะทำการทดสอบบนอุปกรณ์หลายเครื่องพร้อมกันหรือตามลำดับ ในการตั้งค่านี้คุณควรพิจารณาความต้องการของโครงการ (ไม่ว่าคุณจะกำหนดเป้าหมายไปที่ชุดอุปกรณ์เฉพาะหรืออุปกรณ์ iOS ที่รองรับทั้งหมด) และทรัพยากรฮาร์ดแวร์ของเซิร์ฟเวอร์ด้วย
บน อาร์กิวเมนต์ แท็บ ไม่จำเป็นต้องระบุอะไรให้ชัดเจนเนื่องจากเราจะใช้ตัวแปรสภาพแวดล้อมในตัวเท่านั้น
สุดท้ายบน ทริกเกอร์ เราจะแนะนำหนึ่งก่อนการผสานรวมและหนึ่งสคริปต์หลังการผสานรวม อันแรกมีไว้เพื่อช่วยเราในการแก้ไขข้อบกพร่องในกรณีที่เราพบปัญหาบางอย่าง เป็นสิ่งที่เราเคยใช้ไปแล้ว:
#!/bin/sh set printenv
รายการที่สองคือรายการที่จะแจ้งให้เราทราบในกรณีที่การทดสอบของเราอย่างน้อยหนึ่งรายการล้มเหลวในการผสานรวมปัจจุบัน ตรวจสอบให้แน่ใจว่าได้ตั้งค่าให้ทำงานเฉพาะเมื่อการทดสอบล้มเหลว และป้อนข้อมูลต่อไปนี้:
#!/bin/sh echo '$XCS_TEST_FAILURE_COUNT test(s) failed for $XCS_BOT_NAME bot on build $XCS_INTEGRATION_NUMBER' echo 'You can see bot integration at:' echo 'https://$HOSTNAME/xcode/bots/$XCS_BOT_TINY_ID/integrations/$XCS_INTEGRATION_TINY_ID'
มีสองสิ่งที่ควรอธิบายที่นี่ ก่อนอื่นตัวแปร $ HOSTNAME เก็บค่าของรูปแบบต่อไปนี้: computer-name.local เห็นได้ชัดว่าลิงก์จะใช้งานได้ก็ต่อเมื่อคุณสามารถเข้าถึงเซิร์ฟเวอร์นั้นผ่านเครือข่ายท้องถิ่น นอกจากนี้คุณมักจะได้รับคำเตือนด้านความปลอดภัยจากเบราว์เซอร์ของคุณเมื่อไปที่ลิงก์นี้เนื่องจากเป็นการเชื่อมต่อ https ไปยังปลายทางที่ไม่สามารถเชื่อถือได้ สุดท้ายนี้เป็นเพียงจุดเริ่มต้นสำหรับสคริปต์ 'การทดสอบล้มเหลว' ของคุณ คุณสามารถส่งอีเมลไปยังทีมพัฒนาทั้งหมดหรือเปิดปัญหา JIRA ผ่านคำขอ API หรือสิ่งอื่นใดที่คุณคิดว่าเหมาะสมและมีประสิทธิผลมากที่สุด
หวังว่าบทความนี้จะสนับสนุนให้คุณใช้เวลาสำรวจความสามารถของ Xcode Server นอกเหนือจากการสร้างแอป แม้ว่าโพสต์นี้อาจไม่ได้ช่วยคุณในแบบที่คุณต้องการหรือคาดหวัง แต่เป้าหมายก็คือแนะนำให้คุณรู้จักวิธีการใช้สภาพแวดล้อมในตัวและตัวแปร Xcode Server แบบเปิดกว้างเพื่อให้ได้ระบบอัตโนมัติในระดับที่สูงขึ้น
มีบริการของบุคคลที่สามมากมายที่เปิดใช้งานฟังก์ชันต่างๆและสามารถทำงานให้คุณได้มากขึ้นรวมถึง Fabric, Bluepill และ Fastlane แต่อย่างหลีกเลี่ยงไม่ได้การพึ่งพาบุคคลที่สามจะทำให้เกิดการพึ่งพาใหม่กับโปรเจ็กต์ของคุณและบางครั้งก็ต้องการการตั้งค่าและการกำหนดค่าที่เรียบง่ายและซับซ้อนในบางครั้ง เทคนิคที่อธิบายไว้ที่นี่ต้องใช้เฉพาะเครื่องมือที่ติดตั้งไว้แล้วใน Mac ทุกเครื่องดังนั้นจึงไม่ต้องใช้เวลาในการตั้งค่าใด ๆ นอกจากการกำหนดค่าบอทที่จะเรียกใช้งานบิลด์อัตโนมัติของคุณ!
Xcode เป็นสภาพแวดล้อมการพัฒนาแบบบูรณาการ (IDE) ที่พัฒนาโดย Apple ซึ่งนำเสนอเครื่องมือแก้ไขโค้ดและสร้างสำหรับโครงการที่กำหนดเป้าหมายไปที่อุปกรณ์ Apple เช่น iOS, tvOS, watchOS และผลิตภัณฑ์ macOS
Xcode Server เป็นหนึ่งในเครื่องมือที่รวมอยู่ใน Xcode ช่วยให้ผู้ใช้สามารถตั้งค่าการรวมอย่างต่อเนื่องสำหรับโครงการ Xcode ของพวกเขาอย่างน้อยหนึ่งโครงการ การผสานรวมสามารถรันได้ทั้งในสภาพแวดล้อมภายในหรือระยะไกลตราบเท่าที่คอมพิวเตอร์ที่เลือกมี Xcode เวอร์ชันที่จำเป็นในการสร้างโครงการ
การผสานรวมอย่างต่อเนื่องคือการปฏิบัติงานที่กำหนดไว้ล่วงหน้าโดยอัตโนมัติในสภาพแวดล้อมที่เหมือนกันสำหรับโครงการที่อยู่ระหว่างการพัฒนา การเปลี่ยนแปลงทั้งหมดที่นำมาใช้โดยนักพัฒนาจะได้รับการประเมินภายในสภาพแวดล้อมเดียวกันและภายใต้สถานการณ์เดียวกันซึ่งทำให้สามารถตรวจสอบได้อย่างต่อเนื่อง
เครื่องมือที่มาพร้อมกับ Xcode ทุกตัว ได้แก่ Application Loader, agvtool, PlistBuddy, xcodebuild, codeign และอื่น ๆ เครื่องมือเหล่านี้ไม่ได้สร้างขึ้นโดยเฉพาะสำหรับการผสานรวมอย่างต่อเนื่องและมีประโยชน์ในฐานะเครื่องมือแบบสแตนด์อโลน อย่างไรก็ตามมีฟังก์ชันเพิ่มเติมและความคล่องตัวสำหรับการตั้งค่าการรวมระบบอย่างต่อเนื่องของคุณ
Fastlane น่าจะเป็นเครื่องมือ CI ที่มีประสิทธิภาพมากที่สุดในขณะนี้ Bluepill เป็นเครื่องมือในการทดสอบ iOS ควบคู่กันโดยใช้เครื่องจำลองหลายตัว BuddyBuild เป็นบริการบูรณาการออนไลน์ (คลาวด์) แบบต่อเนื่องที่นำเสนอฟังก์ชันทั้งหมดที่กล่าวถึงที่นี่และอื่น ๆ อีกมากมาย
ไม่ได้กำหนดขอบเขต $