Máy chủ xây dựng Jenkins CI của chúng tôi được thiết lập trên Mac Mini chạy OSX Lion (10.7.3) và tôi gặp sự cố khi đăng ký iOS để có thể tải lên để TestFlight.Không thể ký các bản dựng iOS với Jenkins
Quy trình đang chạy với tư cách người dùng bình thường có tên jenkins và quá trình này bắt đầu lúc khởi động bằng cách sử dụng launchd. (Máy không truy cập được với thế giới bên ngoài, vì vậy không nên có bất kỳ vấn đề an ninh với hoạt động này dưới một tài khoản người dùng bình thường.)
Đây là lỗi trong giao diện điều khiển đầu ra từ Jenkins:
[workspace] $ /usr/bin/xcodebuild -target iMobileStCloud -configuration Release clean build
=== CLEAN NATIVE TARGET MyApp OF PROJECT MyProject WITH CONFIGURATION Release ===
Check dependencies
[BEROR]Code Sign error: The identity 'iPhone Distribution' doesn't match any valid certificate/private key pair in the default keychain
phần của vấn đề có vẻ là chỉ System Keychain có sẵn khi quá trình này được bắt đầu từ launchd lúc khởi động. Tôi đã thêm một kịch bản để xây dựng quy trình vào danh sách các móc khóa:
[workspace] $ /bin/sh -xe /var/folders/1y/1q3st_ss58z9ffj4dwbkdw8r0000gt/T/hudson8514187812830984272.sh
+ /usr/bin/security list-keychains
"/Library/Keychains/System.keychain"
"/Library/Keychains/applepushserviced.keychain"
"/Library/Keychains/System.keychain"
+ /usr/bin/security find-identity
tôi đã có thể tìm thấy hai cách giải quyết, nhưng không ai thực sự khả thi:
Nếu chúng ta đăng nhập vào máy chủ và khởi động lại quá trình launchd mỗi khi máy được khởi động lại sau đó jenkins là có thể tải keychain đăng nhập và truy cập vào các chứng chỉ cho ký:
sudo launchctl unload /Library/LaunchDaemons/org.jenkins-ci.plist sudo launchctl load /Library/LaunchDaemons/org.jenkins-ci.plist
Chúng tôi có thể thêm chứng chỉ vào Keychain hệ thống, nhưng điều này có nghĩa là chúng tôi không thể sử dụng máy này để thực hiện các bản dựng phân phối cửa hàng ứng dụng của chúng tôi. (Xcode không thích keychain hệ thống).
Có ai khác tìm thấy bất kỳ giải pháp khả thi nào khác không? Có cái gì khác ngoài launchd mà tôi có thể sử dụng để chạy các tiến trình lúc khởi động trên OSX?
Will Xcode vẫn có vấn đề nếu các phím cùng là _both_ trong Thông tin Đăng nhập- và keychain hệ thống? –
Việc đặt các khóa ở cả hai nơi là một giải pháp khác mà tôi cho rằng, nhưng từ kinh nghiệm trước đây tôi biết nó thực sự có thể gây ra vấn đề với chương trình Keychain Access. Nó dường như bị lẫn lộn và sẽ không xóa các khóa tồn tại trong hai móc khóa. –
Xem câu hỏi trao đổi ngăn xếp này cho một giải pháp khả thi: http://stackoverflow.com/questions/6827874/missing-certificates-and-keys-in-the-keychain-while-using-jenkins-hudson-as-cont –