Bitrise เป็นแพลตฟอร์ม CI/CD เฉพาะทางสำหรับการพัฒนาแอปมือถือ ที่สร้างขึ้นรอบ ๆ Steps ที่พร้อมใช้งาน — โมดูลที่กำหนดค่าล่วงหน้าสำหรับการบิลด์ เซ็นชื่อ และเผยแพร่แอปพลิเคชัน iOS และ Android ตามข้อมูลจาก Bitrise, 2024 แพลตฟอร์มรองรับ มากกว่า 400 Steps ที่พร้อมใช้งาน และบูรณาการกับ Xcode, Gradle, Fastlane, Firebase และ App Store Connect
ประเด็นสำคัญ
Bitrise เป็นแพลตฟอร์ม CI/CD ที่เปิดตัวในปี 2016 และมุ่งเน้นการพัฒนาแอปมือถืออย่างเต็มที่ แตกต่างจากโซลูชันทั่วไปเช่น GitHub Actions และ GitLab CI Bitrise ถูกออกแบบมาเพื่อทำให้การบิลด์แอป iOS และ Android เป็นอัตโนมัติ แพลตฟอร์มทำงานบนคลาวด์และให้บริการ runner ของตัวเองบน macOS และ Linux Bitrise รองรับสแตกมือถือยอดนิยมทั้งหมด: Swift, Kotlin, Flutter, React Native, Cordova และ Xamarin
ข้อได้เปรียบหลักของ Bitrise คือเทมเพลต Step ที่กำหนดค่าล่วงหน้าสำหรับงานพัฒนาแอปมือถือทั่วไป: Xcode build, Gradle assemble, Fastlane, Firebase Distribution, TestFlight, Google Play การตั้งค่าไปป์ไลน์ใช้เวลาไม่กี่นาทีผ่านตัวแก้ไขแบบภาพ และการกำหนดค่า YAML จะถูกสร้างขึ้นโดยอัตโนมัติในไฟล์ bitrise.yml สำหรับผู้ใช้ที่มีประสบการณ์ มีตัวแก้ไข YAML พร้อมการเติมข้อความอัตโนมัติให้ใช้งาน
สถาปัตยกรรม Bitrise สร้างขึ้นบนแนวคิดหลักสองประการ: Workflow และ Step Workflow คือลำดับของ Steps ที่กำหนดไปป์ไลน์ แต่ละโปรเจกต์สามารถมี Workflows ได้หลายแบบ: primary (บิลด์หลัก), deploy (เผยแพร่), test (ทดสอบเท่านั้น) Workflow จะถูกเรียกใช้โดยเหตุการณ์: push, PR, tag หรือตามกำหนดการ Workflows สามารถเริ่มต้นด้วยตนเองจากอินเทอร์เฟซเว็บ ซึ่งมีประโยชน์สำหรับบิลด์เฉพาะกิจ
Step คือโมดูลอะตอมที่ทำงานเดียว Steps สามารถลากได้ในตัวแก้ไขแบบภาพ เปลี่ยนลำดับและการกำหนดค่า Bitrise มี Steps สำหรับ Xcode Archive & Export, Gradle Runner, CocoaPods Install, Firebase Distribution และการแจ้งเตือน Slack ชุมชนยังสร้าง Steps — สามารถใช้งานได้ผ่าน Step Library แต่ละ Step มีพารามิเตอร์อินพุตที่จำเป็นและไม่บังคับ รวมถึงตัวแปรเอาต์พุตที่ Steps ถัดไปสามารถใช้ได้
Bitrise รองรับแนวคิดของ Pipeline — การรวม Workflows หลายอันเข้าเป็นไปป์ไลน์เดียว Pipeline สามารถรวม บิลด์หลักสำหรับทุกแพลตฟอร์มและเวิร์กโฟลว์แยกสำหรับการปรับใช้และการทดสอบ ซึ่งช่วยให้สร้างกระบวนการ CI/CD ที่ซับซ้อนซึ่งบิลด์หนึ่งเรียกอีกบิลด์หนึ่ง Bitrise Stacks กำหนดซอฟต์แวร์ที่ติดตั้งล่วงหน้าบน runner: Xcode, Android SDK, Flutter, Node.js และเครื่องมืออื่น ๆ
Bitrise บูรณาการกับ GitHub, GitLab, Bitbucket และ Azure DevOps เมื่อเชื่อมต่อ พื้นที่เก็บ Bitrise จะตรวจจับประเภทโปรเจกต์ (iOS, Android, Flutter) โดยอัตโนมัติและแนะนำเทมเพลต Workflow สำหรับพื้นที่เก็บส่วนตัว Bitrise ขอการเข้าถึงผ่าน OAuth หรือคีย์ SSH สามารถเชื่อมต่อหลายพื้นที่เก็บกับแอปพลิเคชันเดียว
หลังจากการเชื่อมต่อ Bitrise จะสร้าง webhook ในพื้นที่เก็บเพื่อเริ่มบิลด์โดยอัตโนมัติเมื่อ push และ PR แต่ละบิลด์ จะได้รับหมายเลขเฉพาะ บันทึก และอาร์ติแฟกต์ อินเทอร์เฟซช่วยให้เรียกดูประวัติบิลด์ เปรียบเทียบการเปลี่ยนแปลง และเริ่มบิลด์ที่ล้มเหลวใหม่ Bitrise ยังรองรับบิลด์ตามกำหนดการสำหรับบิลด์ข้ามคืนปกติและการบูรณาการกับ Jira สำหรับการติดตามคอมมิต
การเซ็นชื่อโค้ดสำหรับ iOS เป็นหนึ่งในงาน CI/CD ที่ซับซ้อนที่สุด และ Bitrise แก้ปัญหาได้อย่างง่ายที่สุด แพลตฟอร์มจัดเก็บ ใบรับรองและ provisioning profiles ในรูปแบบที่เข้ารหัส ติดตั้งโดยอัตโนมัติใน keychain ที่เหมาะสมก่อนการบิลด์ และส่งออก IPA ที่เซ็นชื่อแล้ว Step Certificate and Profile Installer ดาวน์โหลดไฟล์จากพื้นที่จัดเก็บ Bitrise และกำหนดค่า Xcode รองรับใบรับรองประเภท Development, AdHoc, AppStore และ Enterprise
สำหรับการเผยแพร่บน App Store Connect Bitrise มี Steps สำหรับอัปโหลด IPA ผ่าน Xcode Archive & Export การเผยแพร่บน Google Play ใช้ Gradle Runner พร้อมการเซ็นชื่อผ่าน Keystore หลังจากนั้น APK/AAB จะถูกอัปโหลดไปยัง Google Play Console ผ่าน Google Play Deploy Step สำหรับ Firebase App Distribution แค่ระบุ Firebase Token และกลุ่มผู้ทดสอบก็เพียงพอ Bitrise ทำให้การอัปเดตหมายเลขเวอร์ชันและหมายเลขบิลด์เป็นอัตโนมัติก่อนการเผยแพร่แต่ละครั้ง
ใบรับรองถูกอัปโหลดในส่วน Code Signing ของอินเทอร์เฟซเว็บ: P12 พร้อมคีย์ส่วนตัว provisioning profile (.mobileprovision), Keystore (.jks/.keystore) สำหรับ Android Bitrise ติดตั้ง ใบรับรอง iOS ใน keychain โดยอัตโนมัติทุกครั้งที่รัน Workflow และส่งออกแอปพลิเคชันที่เซ็นชื่อแล้ว สำหรับ Android เพียงอัปโหลดไฟล์ Keystore — Bitrise ส่งต่อไปยัง Gradle ผ่านตัวแปรสภาพแวดล้อมระหว่างการบิลด์
มาดู Workflow สำหรับแอปพลิเคชัน Flutter ที่บิลด์และเผยแพร่บิลด์สำหรับ iOS และ Android Bitrise ตรวจจับ โปรเจกต์ Flutter โดยอัตโนมัติและแนะนำ Steps ที่เหมาะสม Workflow รวมถึงการติดตั้ง Flutter การแคช pub-cache การบิลด์ การทดสอบ และการปรับใช้ สำหรับบิลด์ iOS จำเป็นต้องมีใบรับรองการเซ็นชื่อโค้ดเพิ่มเติม ซึ่ง Bitrise โหลดโดยอัตโนมัติ
เมื่อบิลด์แอป Flutter Bitrise รองรับการกำหนดค่าแยกสำหรับแต่ละแพลตฟอร์ม บิลด์ Android รันบน Linux runner พร้อม Flutter SDK, iOS บน macOS runner Workflow สามารถรวม Steps แบบมีเงื่อนไข: build_android และ build_ios ซึ่งรันบนแพลตฟอร์มที่เกี่ยวข้องเท่านั้น สำหรับโปรเจกต์ React Native Bitrise มีชุด Steps ที่คล้ายกันกับ npm/nvm และ Metro bundler
format_version: 13
default_step_lib_source: https://github.com/bitrise-io/bitrise-steplib.git
trigger_map:
- push_branch: main
workflow: primary
workflows:
primary:
steps:
- activate-ssh-key@4:
run_if: true
- git-clone@8: {}
- flutter-installer@0:
inputs:
- version: 3.24.0
- flutter-build@0:
inputs:
- platform: both
- ios_output_type: archive
- deploy-to-bitrise-io@2: {}
หลังจากการบิลด์ สามารถเพิ่ม Step Firebase App Distribution สำหรับ iOS และ Android Step ยอมรับ firebase_token, app_id และ testers_group Bitrise แทนที่ค่าจาก Secrets — การจัดเก็บโทเค็นอย่างปลอดภัยช่วยให้มั่นใจว่าโทเค็นจะไม่ปรากฏในบันทึก
- firebase-app-distribution@1:
inputs:
- firebase_token: $FIREBASE_TOKEN
- app_id: $FIREBASE_IOS_APP_ID
- testers_group: qa-team
- release_notes: |
Build $BITRISE_BUILD_NUMBER
การจัดการข้อมูลที่เป็นความลับอย่างเหมาะสมคือพื้นฐานของความปลอดภัยของกระบวนการ CI/CD Bitrise Secrets ถูกเข้ารหัสและไม่สามารถอ่านได้หลังจากบันทึก เมื่อสร้างแอปพลิเคชันใหม่ Bitrise เสนอให้นำเข้า secrets จากโปรเจกต์อื่นหรือตั้งค่าด้วยตนเอง สำหรับทีมขนาดใหญ่ มีฟีเจอร์ Environment Groups — การจัดการตัวแปรและ secrets แบบรวมศูนย์สำหรับกลุ่มแอปพลิเคชัน
Bitrise มีพื้นที่จัดเก็บ Secrets ในตัวสำหรับข้อมูลที่เป็นความลับ: คีย์ API, โทเค็น Firebase, รหัสผ่าน Keystore, Apple ID Secrets ถูกกำหนด เป็นคู่คีย์-ค่าในอินเทอร์เฟซเว็บและถูกปกปิดในบันทึกการบิลด์ มีให้ใช้งานในระดับแอปพลิเคชันและระดับ Workflow ไม่สามารถอ่าน Secrets ได้หลังจากบันทึก — สามารถเขียนทับได้เท่านั้น
ตัวแปรสภาพแวดล้อม (ไม่มีแฟล็ก Secret) ใช้สำหรับการกำหนดค่า: เวอร์ชัน Xcode, เส้นทางโปรเจกต์, สคีมาบิลด์ ตัวแปรสภาพแวดล้อม Bitrise (BITRISE_BUILD_NUMBER, BITRISE_APP_TITLE) ให้ข้อมูลเมตาเกี่ยวกับบิลด์ Secrets ถูกเข้ารหัสขณะจัดเก็บและถอดรหัสบน runner ระหว่างการทำงานของ Workflow เท่านั้น สำหรับการจัดการตัวแปรแบบกลุ่ม Bitrise รองรับ Environment Groups — ชุดของตัวแปรที่สามารถใช้กับหลายแอปพลิเคชันพร้อมกัน
การจัดการใบรับรอง iOS ผ่าน Bitrise สมควรได้รับความสนใจเป็นพิเศษ แพลตฟอร์มติดตั้ง P12 และ provisioning profiles ใน keychain ของระบบโดยอัตโนมัติก่อนการบิลด์ สำหรับ Android ใช้ไฟล์ Keystore ที่อัปโหลดในส่วน Code Signing แต่ละไฟล์ใบรับรองถูกจัดเก็บในรูปแบบที่เข้ารหัสและถอดรหัสเฉพาะระหว่างการบิลด์เท่านั้น
- google-play-deploy@3:
inputs:
- package_name: com.example.app
- service_account_json_key: $SERVICE_ACCOUNT_KEY
- app_file: $BITRISE_APK_PATH
Bitrise มีสแตกต่าง ๆ สำหรับการบิลด์ — อิมเมจที่ติดตั้งเครื่องมือและ SDK ไว้ล่วงหน้า สแตกที่มีให้ รวมถึง Xcode (เวอร์ชัน 14, 15, 16 พร้อม iOS SDK 17, 18), Android (พร้อม SDK และ NDK เวอร์ชันต่าง ๆ), Flutter, React Native และ Kotlin Multiplatform แต่ละสแตกมีคำอธิบายของเครื่องมือและเวอร์ชันที่ติดตั้งไว้ล่วงหน้า
การเลือกสแตกส่งผลต่อเวลาบิลด์และความเข้ากันได้กับโปรเจกต์ Bitrise อัปเดต สแตกเป็นประจำ เพิ่มเครื่องมือเวอร์ชันใหม่ สามารถกำหนดเวอร์ชันสแตกเฉพาะใน bitrise.yml เพื่อหลีกเลี่ยงการเปลี่ยนแปลงที่ไม่คาดคิดเมื่ออัปเดตแพลตฟอร์ม สำหรับ dependencies ที่กำหนดเอง ใช้ Script Step เพื่อติดตั้งแพ็กเกจที่จำเป็นก่อนการบิลด์หลัก Bitrise ยังรองรับอิมเมจ Docker สำหรับสแตก Linux ซึ่งช่วยให้ใช้สภาพแวดล้อมที่กำหนดเองสำหรับบิลด์ Android
คำถามที่พบบ่อย
Bitrise เสนอ แผนฟรี พร้อมเวลาในการบิลด์ 90 นาทีต่อเดือนและหนึ่งบิลด์พร้อมกัน แผน Developer ($79/เดือน) รวม 3000 นาที สูงสุด 5 บิลด์พร้อมกัน และการบูรณาการทั้งหมด Enterprise — ราคาที่กำหนดเอง
Bitrise รองรับ iOS (Swift, Objective-C), Android (Kotlin, Java), Flutter, React Native, Cordova, Ionic และ Xamarin แต่ละแพลตฟอร์มมีเครื่องมือที่ติดตั้งไว้ล่วงหน้าและเทมเพลต Workflow
Bitrise มี macOS runners สำหรับบิลด์ iOS โดยไม่ต้องตั้งค่าเพิ่มเติม แพลตฟอร์มจัดการโครงสร้างพื้นฐาน macOS โดยอัตโนมัติ — runner จะถูกเลือกตามสแตกของแอปพลิเคชัน
Bitrise จัดเก็บ ใบรับรองในรูปแบบที่เข้ารหัส และติดตั้งใน keychain โดยอัตโนมัติก่อนการบิลด์ผ่าน Step Certificate and Profile Installer สำหรับ Android ในทำนองเดียวกัน — Keystore ถูกอัปโหลดและ Gradle ใช้ระหว่างการเซ็นชื่อ
ใช่ Bitrise รองรับ Steps ที่กำหนดเอง ผ่าน Script Step (สคริปต์ bash) และ Step Libraries ที่กำหนดเองจาก GitHub คุณยังสามารถสร้าง Step ของคุณเองตามเอกสาร Bitrise และเผยแพร่ใน Step Library
สรุป
เราจะพัฒนาแอปพลิเคชันบนมือถือแบบครบวงจร
IT Sectr สร้างแอปพลิเคชัน iOS และ Android สำหรับสตาร์ทอัพและธุรกิจตั้งแต่ปี 2017 เราจะให้คำแนะนำและเสนอวิธีแก้ปัญหาที่ดีที่สุดแก่คุณ
อ่านเพิ่มเติม