22

Tôi đã dành nhiều thời gian để định dạng blog được đề cập với mã, ảnh chụp màn hình và v.v. là quá nhiều nỗ lực để sao chép ở đây trên Stack Overflow. Điều đó nói rằng tôi nghĩ rằng cộng đồng sẽ muốn một số trợ giúp trong đấu trường này (tôi đã vật lộn trong một thời gian dài để tìm ra tất cả), vì vậy tôi đã đăng câu hỏi này và câu trả lời tương ứng. Nếu bạn vẫn nghĩ rằng ý định của bài đăng này là bất chính, hãy bình luận như vậy và tôi sẽ xóa nó!Làm cách nào để triển khai tự động xây dựng cho TestFlight từ một Xcode Bot?

Câu hỏi đặt ra là: làm cách nào để định cấu hình máy chủ Xcode mới lạ của tôi với Bots để tiếp tục tích hợp và gửi các bản dựng hoàn chỉnh cho người thử nghiệm của tôi qua chuyến bay thử nghiệm? Đối với tôi, điều này có vẻ giống như chén thánh của CI trong thế giới iOS, vì vậy tôi đã dành rất nhiều thời gian để tìm ra nó.

Quá trình này bao gồm một số công việc thủ công mà dường như không được thực hiện đúng cách bởi phần mềm máy chủ XCode ở Mavericks, ít nhất là trong bản phát hành ban đầu. Nó đã cho tôi rất nhiều thời gian và thậm chí một số kịch bản để tìm ra tất cả và làm cho nó hoạt động, và tôi rất vui khi chia sẻ kết quả.

Để tăng thêm giá trị cho câu hỏi này, tôi đã đăng tập lệnh post-op mà bạn nên chạy trong quá trình Lưu trữ bên dưới. Liên kết đến blog của tôi bên dưới cung cấp chi tiết từng bước nếu bạn cần thêm thông tin.

#!/bin/bash 
# 
# (Above line comes out when placing in Xcode scheme) 
# 
# Valid and working as of 10/29/2013 
# Xcode 5.0.1, XCode Server 
# 
API_TOKEN="<Your TesFlight API Token>" 
TEAM_TOKEN="<Your TestFlight Team Token>" 
DISTRIBUTION_LISTS="<Comma separated TestFlight Distribution List Names for auto deploy>" 
PROVISIONING_PROFILE="/Library/Server/Xcode/Data/ProvisioningProfiles/<your file name here>.mobileprovision" 
#EXAMPLE:"/Library/Server/Xcode/Data/ProvisioningProfiles/DocLink_InHouse_2013.mobileprovision" 

SIGNING_IDENTITY="<your provisioning profile name here>" 
#EXAMPLE:"iPhone Distribution: Unwired Revolution, LLC." 

# DO NOT EDIT BELOW HERE! 
######################################## 
DSYM="/tmp/Archive.xcarchive/dSYMs/${PRODUCT_NAME}.app.dSYM" 

IPA="/tmp/${PRODUCT_NAME}.ipa" 

APP="/tmp/Archive.xcarchive/Products/Applications/${PRODUCT_NAME}.app" 

# Clear out any old copies of the Archive 
echo "Removing old Archive files from /tmp..."; 
/bin/rm -rf /tmp/Archive.xcarchive* 

#Copy over the latest build the bot just created 
echo "Copying latest Archive to /tmp/..."; 
LATESTBUILD=$(ls -1rt /Library/Server/Xcode/Data/BotRuns | tail -1) 
/bin/cp -Rp "/Library/Server/Xcode/Data/BotRuns/${LATESTBUILD}/output/Archive.xcarchive" "/tmp/" 

echo "Creating .ipa for ${PRODUCT_NAME}" 
/bin/rm "${IPA}" 
/usr/bin/xcrun -sdk iphoneos PackageApplication -v "${APP}" -o "${IPA}" --sign "${SIGNING_IDENTITY}" --embed "${PROVISIONING_PROFILE}" 

echo "Done with IPA creation." 

echo "Zipping .dSYM for ${PRODUCT_NAME}" 
/bin/rm "${DSYM}.zip" 
/usr/bin/zip -r "${DSYM}.zip" "${DSYM}" 

echo "Created .dSYM for ${PRODUCT_NAME}" 

echo "*** Uploading ${PRODUCT_NAME} to TestFlight ***" 
/usr/bin/curl "http://testflightapp.com/api/builds.json" \ 
-F [email protected]"${IPA}" \ 
-F [email protected]"${DSYM}.zip" \ 
-F api_token="${API_TOKEN}" \ 
-F team_token="${TEAM_TOKEN}" \ 
-F distribution_lists="${DISTRIBUTION_LISTS}" \ 
-F notes="Build uploaded automatically from Xcode Server Bot." 

echo "TestFlight upload finished!" 

Tôi hy vọng tất cả thời gian tôi dành cho nó sẽ lưu cộng đồng chung nhiều hơn nữa!

Dưới đây là liên kết: http://matt.vlasach.com/xcode-bots-hosted-git-repositories-and-automated-testflight-builds/

+0

Tôi đã nói chuyện với tác giả về việc làm cho bài đăng này trở thành "phong cách ngăn xếp ngăn xếp" hơn. Vui lòng tạm dừng việc gắn cờ hoặc thực hiện các hành động khác trong một thời gian ngắn để cho anh ấy cơ hội chỉnh sửa. – Pops

+0

Cảm ơn bạn đã thêm lại. Tôi hy vọng các bản sửa đổi phù hợp và hữu ích cho tất cả mọi người! – mattv123

Trả lời

11

Đây là một liên kết đến một bài mà vạch ra cách tạo bot Xcode, kết nối với một kho lưu trữ bên git thứ 3, với việc triển khai tự động của xây dựng để TestFlight:

http://matt.vlasach.com/xcode-bots-hosted-git-repositories-and-automated-testflight-builds/

Hy vọng điều đó sẽ hữu ích! Vui lòng tắt tiếng với nhận xét hoặc phản hồi của bạn.

+2

Điều này không được cập nhật cho Xcode 6. –

+0

Liên kết đã chết – RaffAl

Các vấn đề liên quan