OS X'te Jenkins: xcodebuild Kod İşareti hatası veriyor


107

Özet:

Jenkins'in OS X üzerinde kurulması, en son yükleyiciyle ( 1.449 - 9 Mart 2012 itibariyle ) önemli ölçüde daha kolay hale getirilmiştir , ancak kod imzalama sürecini yönetmek, açık bir yanıt olmadan hala çok zordur.

Motivasyon:

OS X'te hizmetlerin çalıştırılmasına yönelik yaygın en iyi uygulamaları izleyen başsız bir CI sunucusu çalıştırın ( Bazıları burada sade bir dille açıklanmıştır ).

Arka fon:

Süreç:

Jenkins CI'yi OS X yükleyici paketi aracılığıyla yükleyin . "Kurulum Türü" adımı için, Özelleştir düğmesini tıklayın ve "Açılışta 'jenkins' olarak başla" seçeneğini seçin.

Tartışma:

Bu noktadaki saf beklenti, inşa betiğine sahip serbest stil bir projenin xcodebuild -target MyTarget -sdk iphoneosçalışması gerektiğiydi. Bu gönderinin başlığından da anlaşılacağı gibi, aşağıdakileri yapmaz ve başarısız olur:

Code Sign error: The identity 'iPhone Developer' doesn't match any valid certificate/private key pair in the default keychain

Ne olması gerektiği yeterince açıktır - varsayılan anahtar zincirine geçerli bir kod imzalama sertifikası ve özel bir anahtar eklemeniz gerekir. Bunu nasıl başaracağımı araştırırken, sistemi belli bir düzeyde zafiyete açmayan bir çözüm bulamadım.

Sorun 1: Jenkins arka plan programı için varsayılan anahtar zinciri yok

sudo -u jenkins security default-keychain ... "Varsayılan bir anahtar zinciri bulunamadı" sonucunu verir

Aşağıda Ivo Dancet tarafından belirtildiği gibi, UserShell varsayılan olarak jenkins arka plan programı için / usr / bin / false olarak ayarlanmıştır (bence bu bir özelliktir, bir hata değildir); UserShell'i bash olarak değiştirmek için onun cevabını izleyin. Daha sonra sudo su jenkinsjenkins kullanıcısı olarak oturum açmak ve bir bash istemi almak için kullanabilirsiniz.

  1. sudo su jenkins
  2. cd ~/Library
  3. mkdir Keychains
  4. cd Keychains
  5. security create-keychain <keychain-name>.keychain
  6. security default-keychain -s <keychain-name>.keychain

Tamam harika. Artık varsayılan bir anahtar zincirimiz var; Hadi devam edelim mi? Ama önce neden varsayılan bir anahtarlık yapmakla uğraştık?

Araştırma boyunca okuduğum hemen hemen tüm cevaplar, öneriler veya konuşmalar, kod imzalama sertifikalarını ve anahtarlarını sistem anahtarlığına atması gerektiğini gösteriyor. security list-keychainsJenkins'te serbest stil proje olarak çalıştırırsanız , mevcut tek anahtar zincirinin sistem anahtar zinciri olduğunu görürsünüz; Sanırım bu, çoğu insanın sertifikalarını ve anahtarlarını oraya koyma fikrini ortaya çıkardığı yer. Ancak, bu çok kötü bir fikir gibi görünüyor - özellikle anahtar zincirini açmak için parolayla düz bir metin komut dosyası oluşturmanız gerekeceği düşünüldüğünde .

Sorun 2: Kod imzalama sertifikaları ve özel anahtar ekleme

Burası gerçekten gevrekleşmeye başladığım yer. Jenkins ile kullanım için benzersiz yeni bir genel / özel anahtar oluşturmam gerektiğine dair içimde bir his var. Düşünme sürecim, eğer jenkins arka plan programı tehlikeye atılırsa, Apple'ın Provisioning Portal'da sertifikayı kolayca iptal edebilir ve başka bir genel / özel anahtar oluşturabilirim. Kullanıcı hesabım ve Jenkins için aynı anahtarı ve sertifikayı kullanırsam, jenkins hizmetine saldırılırsa bu daha fazla güçlük (hasar?) Anlamına gelir.

İşaret ediyor Simon Urbanek'in cevabına , anahtar zincirini düz metin şifresiyle bir komut dosyasından açacaksınız. Jenkins arka planının anahtarlığında "tek kullanımlık" sertifikalar ve anahtarlar dışında herhangi bir şeyi saklamak sorumsuz görünüyor.

Aksine herhangi bir tartışmayla çok ilgileniyorum. Aşırı ihtiyatlı mıyım?

Terminal'de jenkins arka plan programı olarak yeni bir CSR yapmak için aşağıdakileri yaptım ...

  1. sudo su jenkins
  2. certtool r CertificateSigningRequest.certSigningRequest Sizden aşağıdakiler istenecektir (bunların çoğu doğru cevapta eğitimli tahminler yaptım; daha iyi içgörünüz var mı? Lütfen paylaşın.) ...
    • Anahtar ve sertifika etiketini girin:
    • Algoritma seçin: r (RSA için)
    • Anahtar boyutunu bit cinsinden girin: 2048
    • İmza algoritması seçin: 5 (MD5 için)
    • Meydan okuma dizesini girin:
    • Sonra RDN için bir sürü soru
  3. Oluşturulan CSR dosyasını (CertificateSigningRequest.certSigningRequest) yeni bir Apple Kimliği altında Apple'ın Provisioning Portal'a gönderin
  4. İsteği onaylayın ve .cer dosyasını indirin
  5. security unlock-keychain
  6. security add-certificate ios_development.cer

Bu bizi bir adım daha yaklaştırıyor ...

Sorun 3: Temel hazırlık profili ve Anahtar zinciri kilidini açma

Yetkilendirme Portalı'nda, kötü bir şey olursa etkiyi biraz daha küçültmeyi umduğum için CI ile kullanmak için özel bir ön hazırlık profili yaptım. En iyi uygulama mı yoksa aşırı ihtiyatlı mı?

  1. sudo su jenkins
  2. mkdir ~/Library/MobileDevice
  3. mkdir ~/Library/MobileDevice/Provisioning\ Profiles
  4. Temel Hazırlık Portalı'nda kurduğunuz ön hazırlık profilini bu yeni klasöre taşıyın. Artık xcodebuild'i jenkins olarak komut satırından çalıştırabilmekten iki kısa adım uzaktayız ve bu, aynı zamanda Jenkins CI çalışan yapıları elde etmeye yakın olduğumuz anlamına geliyor.
  5. security unlock-keychain -p <keychain password>
  6. xcodebuild -target MyTarget -sdk iphoneos

Şimdi, jenkins arka plan programı olarak oturum açtığımızda bir komut satırından başarılı bir yapı elde ediyoruz, bu nedenle serbest tarzda bir proje oluşturur ve bu son iki adımı eklersek (yukarıdaki # 5 ve # 6) iOS projemiz!

Gerekli olmayabilir, ancak tüm bu kurulumu başarıyla tamamladıktan sonra jenkins UserShell'i / usr / bin / false olarak ayarlamanın daha iyi olduğunu hissettim. Ben paranoyak mıyım?

Sorun 4: Varsayılan anahtarlık hala mevcut değil!

( DÜZENLEME: Soruma düzenlemeleri gönderdim, çözümümün% 100 olduğundan emin olmak için yeniden başlattım ve elbette bir adımı atladım )

Yukarıdaki tüm adımlardan sonra bile, bu yanıtta belirtildiği gibi /Library/LaunchDaemons/org.jenkins-ci.plist adresindeki Launch Daemon plistini değiştirmeniz gerekecektir . Lütfen bunun da bir openrdar hatası olduğunu unutmayın .

Şöyle görünmeli:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
        <key>EnvironmentVariables</key>
        <dict>
                <key>JENKINS_HOME</key>
                <string>/Users/Shared/Jenkins/Home</string>
        </dict>
        <key>GroupName</key>
        <string>daemon</string>
        <key>KeepAlive</key>
        <true/>
        <key>Label</key>
        <string>org.jenkins-ci</string>
        <key>ProgramArguments</key>
        <array>
                <string>/bin/bash</string>
                <string>/Library/Application Support/Jenkins/jenkins-runner.sh</string>
        </array>
        <key>RunAtLoad</key>
        <true/>
        <key>UserName</key>
        <string>jenkins</string>
        <!-- **NEW STUFF** -->
        <key>SessionCreate</key>
        <true />
</dict>
</plist>

Bu kurulumla, Jenkins için Xcode eklentisini de tavsiye ederim xcodebuild komut dosyasının kurulumunu biraz daha kolaylaştıran . Bu noktada, xcodebuild için man sayfalarını da okumanızı tavsiye ederim - Terminal'de bu kadar ileri gitmişsiniz değil mi?

Bu kurulum mükemmel değil ve herhangi bir tavsiye veya anlayış çok takdir ediliyor.

Sorunumu çözmek için kullanmaya başladığım şey hemen hemen herkesin girdilerinin bir toplamı olduğu için "doğru" bir yanıt seçmekte zorlandım. Herkese en azından bir olumlu oy vermeye çalıştım, ancak cevabı Simon'a verdim çünkü orijinal soruyu çoğunlukla o cevapladı. Ayrıca Sami Tikka Jenkins'in AppleScript'te basit bir OS X uygulaması olarak çalışmasını sağlama çabalarından dolayı çok fazla övgüyü hak ediyor. Jenkins'i sadece kullanıcı oturumunuzda hızlı bir şekilde kurmakla ilgileniyorsanız (yani, başsız bir sunucu olarak değil), çözümü çok daha Mac'e benzer.

Umarım çabalarım daha fazla tartışmaya yol açar ve bir sonraki zavallı kişiye iOS projeleri için Jenkins CI kurulumunu duydukları harika şeyler nedeniyle bir hafta sonu içinde alabileceklerini düşünerek yardımcı olur.


Güncelleme: 9 Ağustos 2013

Bu kadar çok oy ve favoriyle, 18 ay sonra öğrendiğim bazı kısa derslerle bu konuya geri döneceğimi düşündüm.

Ders 1: Jenkins'i halka açık internete maruz bırakmayın

2012 WWDC'de bu soruyu Xcode ve OS X Server mühendislerine götürdüm. "Bunu yapma!" Diye bir kakofoni aldım. sorduğum herkesten. Hepsi otomatik bir derleme işleminin harika olduğu, ancak sunucuya yalnızca yerel ağ üzerinden erişilebilmesi gerektiği konusunda hemfikirdi. OS X Server mühendisleri, VPN aracılığıyla uzaktan erişime izin vermeyi önerdi.

2. Ders: Artık yeni yükleme seçenekleri var

Geçenlerde bir CocoaHeads konuşmasında Jenkins deneyimimle ilgili bir konuşma yaptım ve şaşırtıcı bir şekilde bazı yeni yükleme yöntemleri buldum - Homebrew ve hatta bir Bitnami Mac App Store sürümü. Bunlar kesinlikle kontrol edilmeye değer. Jonathan Wright , Homebrew Jenkins'i çalıştırma konusunda ayrıntılara sahip .

3. Ders: Hayır, cidden, yapı kutunuzu internette göstermeyin

Orijinal gönderiden ne sistem yöneticisi ne de güvenlik uzmanı olduğum oldukça açık. Özel şeyler (anahtarlıklar, kimlik bilgileri, sertifikalar, vb.) Hakkındaki sağduyu, Jenkins kutumu internete koyma konusunda oldukça huzursuz hissetmeme neden oldu. İhmal Edilmiş Potansiyelden Nick Arnott , bu yazıda huysuzluklarımı oldukça kolay bir şekilde doğrulamayı başardı .

TL; DR

Oluşturma sürecini otomatikleştirmek isteyenlere tavsiyem geçen bir buçuk yılda değişti. Jenkins makinenizin güvenlik duvarınızın arkasında olduğundan emin olun. Jenkins'i yükleyici, Bitnami Mac App Store sürümü, Sami Tikka'nın AppleScript'i vb. Kullanarak özel bir Jenkins kullanıcısı olarak kurun ve ayarlayın; bu, yukarıda detaylandırdığım baş ağrısının çoğunu giderir. Uzaktan erişime ihtiyacınız varsa, OS X Sunucusunda VPN hizmetlerini kurmak en fazla on dakika sürer. Bu kurulumu bir yılı aşkın süredir kullanıyorum ve bundan çok memnunum. İyi şanslar!


10
Üzgünüm, bu kısa ve eksiksiz soru-cevaplarla-düzenlenmiş olarak sadece bir oy verebildiğim için üzgünüm :)
Zsub

Bir şey, Jenkins'in OS X Yosemite üzerindeki lansmanını bozdu - Jenkins'in yükleyicisini kullandı.
Jonny

Sertifikanızı Sistem anahtar zincirine taşıyın ve mutlu olun;)
Julian F.Weinert

Yanıtlar:


30

Anahtar zincirlerinin kullanılmadan önce kilidinin açılması gerekir. security unlock-keychainKilidi açmak için kullanabilirsiniz . Bunu etkileşimli olarak (daha güvenli) veya komut satırında şifre belirterek (güvenli olmayan) yapabilirsiniz, örneğin:

security unlock-keychain -p mySecretPassword...

Açıkçası, bunu bir komut dosyasına koymak o anahtar zincirinin güvenliğini tehlikeye atar, bu nedenle insanlar genellikle bu tür hasarı en aza indirmek için yalnızca imzalama kimlik bilgileriyle bireysel bir anahtar zinciri kurarlar.

Tipik olarak TerminalVarsayılan anahtar zincirinin kilidi oturum açma sırasında açıldığından, anahtar zincirinin kilidi oturumunuz tarafından zaten açılmıştır, bu nedenle bunu yapmanız gerekmez. Bununla birlikte, kullanıcı olarak sizde bulunsa bile, oturumunuzda çalıştırılmayan herhangi bir işlemin kilidi açılmaz (en yaygın olarak bu ssh, ancak diğer süreçleri de etkiler ).


Ancak, sistem anahtar zincirinin ötesinde herhangi bir anahtar zincirini yüklemek için de zorluk çekiyorum. security unlock-keychain -p password -k /path/codesign.keychainçalışmıyor.
edelaney05

Yukarıdaki örneğimdeki gibi varsayılan anahtar zincirini kullandınız mı? Özel anahtar zincirleri için bunları önce arama yolunda olacak şekilde ayarlamanız gerektiğini unutmayın, bu nedenle önce varsayılan anahtar zincirini deneyin. Ayrıca , yapmaya çalıştığınız her şeyin doğru görünmemesi için hiçbir -kargüman olmadığını unutmayın unlock-keychain(bkz. security help unlock-keychain).
Simon Urbanek

Biraz farklı bir şey denedim ama nihayetinde aynı noktaya geri döndüm. Sorumu düzenledim, umarım biraz daha nettir?
edelaney05

Orijinal sorudan tamamen farklı ... Başlamak için, jenkins olarak (örneğin aracılığıyla sudo -u jenkins bash) oturum açmalı ve tüm yol üzerinde doğru izinlere sahip olup olmadığınızı kontrol etmelisiniz. Söylemediğin pek çok şey yaptın ( dsclkullanıcıyı oluşturmak için kullanmak gibi ), bu yüzden gerçekten kendi başınasın. Ayrıca ev ayarını da kontrol etmek isteyeceksiniz (kabuğu ayarlayıp ayarlamamanıza bağlı olarak sudo -u jenkins -iilgili oturum açma ayarlarını almak için kullanabilirsiniz ).
Simon Urbanek

12

Ayrıca Jenkins aracılığıyla geçici dağıtım yapmak istediğinizi varsayalım, bu, Jenkins'in sağlama profillerine ek olarak bir Dağıtım sertifikasına ve ekip yöneticisi kimliğine erişiminin olmasını gerektirir.

Bir .cer dosyasında dışa aktarılan bir kimliği kullanarak, bunu programlı olarak içe aktarabilirsiniz, -A anahtarı tüm programların bu girdiye erişmesine izin verir. Alternatif olarak, -T /path/to/programizin vermek codesignve xcodebuilderişmek için birkaç anahtar kullanabilirsiniz :

$ security import devcertificate.cer -k jenkins.keychain -A

Tabii ki, hemen hemen aynı şekilde içe aktarılan Apple WWDCRA sertifikasına da sahip olmalıyız:

$ security import AppleWWDRCA.cer -k jenkins.keychain -A

Ancak devcertificate.cer,. Bunu yapmak için, ilgili özel anahtarı bir .p12 anahtarı olarak dışa aktarmanız ve bir parola belirlemeniz gerekir. Onu Jenkins kabuğunuzdan erişebileceğiniz bir yere koyun, anahtar zincirinin kilidini açın ve içe aktarın:

$ security unlock-keychain -p YourKeychainPass jenkins.keychain
$ security import devprivatekey.p12 -k login.keychain -P ThePasswordYouSetWhenExporting -A

Dağıtım sertifikasını içe aktarmak aynı şekilde çalışır. P12'yi içe aktarmak için anahtar zincirinin kilidini bir .cer için değil de neden açmanız gerektiğini bilmiyorum, ama iyi.

Ön hazırlık profillerine de erişmeniz gerekecek, bu talimatları kısa süre içinde bu gönderide düzenleyeceğim.


1
Lütfen temel hazırlık profili erişim talimatlarıyla güncelleme yapabilir misiniz?
Luke


5

Ben de aynı sorunu yaşadım ve bir süredir bir cevap arıyordum. İşte öğrendiğim bir şey.

Jenkins kullanıcısı olarak, yükleyici tarafından oluşturulan kullanıcı olarak jenkins'i çalıştırıyorum ve diğer herkesin söylediği gibi, onun normal kullanıcınızın yaptığı anahtar zincirine erişimi yok. Jenkins kullanıcısı olarak oturum açmaya çalışmak yerine, jenkins kullanıcısı olarak test etmek istediğim komutları çalıştırdığım "Kabuğu Çalıştır" olan bir yapı adımı olan ikinci bir yapı projesi oluşturdum.

Bunu kurduktan sonra, komutu çalıştırabilirdim

security list-keychains

Bu bana, jenkins'in görebildiği tek şeyin sistem anahtarlığı olduğunu gösterdi.

+ security list-keychains
    "/Library/Keychains/System.keychain"
    "/Library/Keychains/System.keychain"

Bu bilgiyle, Anahtar Zinciri Erişimi uygulamasını açtım ve "iPhone Geliştirici: xxxx" sertifikamı Sistem anahtar zincirine kopyaladım (Sağ tıklayın, "oturum açma" anahtar zincirinden kopyalayın).

Bu, sertifika / özel anahtar çifti kod işareti hatasını geçmeme neden oldu, ancak ön hazırlık profiliyle başka bir tane açtı (benzer, ancak farklı bir sorun gibi görünüyor).


Aynı provizyon profili sorunuyla karşılaşıyorum, bunun nasıl çözüleceğine dair herhangi bir fikriniz var mı?
Santthosh

2
Jenkins kullanıcısı için ön hazırlık profillerinin '/ Kullanıcılar / Shared / Jenkins / Library / MobileDevice / Provisioning Profiles'de depolandığını fark ettim ve bu yüzden yapıma git depomun içinden o konuma bir ön hazırlık profilini kopyalamak için bir adım attım. Bu, ön hazırlık profilini güncellememe ve bunu SCM'ye aktarmama izin veriyor ve Jenkins bu değişikliği otomatik olarak alıyor.
brianestey

login.keychain'i jenkins Keychain kitaplığınıza kopyalarsanız, jenkins kullanıcısının güvenli bir şekilde kilidi açabilmesi için onu chown etmeniz gerekecektir
ganoro

1
Sen kahramansın, 2 gün boyunca kafamda saçları yırtıyordum, sertifikaları sisteme kopyalamak yardımcı oldu
Roman Bobelyuk

5

Şifreyi değiştirmek için kullanabilirsiniz sudo passwd jenkins <new-pw>. Ancak şifreyi değiştirmek için dscl komutunu kullanmanın daha iyi olacağını düşünüyorum.

Benim kurulum jenkins'imde (resmi yükleyici) / usr / bin / false kullanıcı kabuğu vardı. Bunu bash olarak değiştirmek, oturum açamama sorununu çözdü:

sudo dscl . -change /Users/jenkins UserShell /usr/bin/false /bin/bash

Şimdi ile giriş yapabilmelisiniz su jenkins.


Bu bana çok yardımcı oldu - create-keychainjenkins kullanıcısı ile çalışmayan komutla benzer bir sorun yaşadım . Bu komutu çalıştırmak sorunu çözmüş görünüyordu.
lxt

Jenkins kullanıcı şifresini değiştirme komutunu çalıştırdığımda mevcut şifre soruluyor. Bunun ne olduğu hakkında hiçbir fikrim yok ve enter tuşuna basamıyorum. Baska öneri?
CMVR

4

İOS uygulaması oluşturmak için Xcode eklentisini kullandım. Bir projenin konfigürasyonunda.

seçim Ekleme yapı adım> Xcode> kod imzalama ve OS X Anahtarlık seçenekleri.

Anahtar zincirinin kilidini aç kutusunu işaretleyin ve aşağıdaki gibi ekleyin (örnekler için) görüntü açıklamasını buraya girin

Bazen, eğer hata alırsam

Kod İşareti hatası: ...

Jenkins'i yeniden açacağım ve kilidi açmak için şifreyi tekrar gireceğim


3

İnsanlar keychains sorunlarınız için, sana benim alternatif Jenkins yükleyici deneyin öneriyoruz https://github.com/stisti/jenkins-app de, indirme https://github.com/stisti/jenkins-app/downloads

Jenkins.app, kullanıcı oturumunuzda Jenkins'i çalıştırır, bu nedenle anahtar zinciri erişim sorunları bir sorun değildir :)


Sorun şu ki, bu Jenkins kullanıcısının arka plan programı alanında değil kullanıcı alanında olması ... yani bir saldırgan Jenkins kullanıcınızı tehlikeye atabilseydi, bilgisayarınıza tam erişime sahip olacaktı.
edelaney05

Bu, karşılaştığım sorunları çözebilir. Sorun şu ki, mevcut bir Jenkins kurulumum var (diğer şekilde yapıldı) ve tüm yapılarımı kaybetmek istemiyorum - vb. Case'imde ne olacak?
Mike S

2

Sudo'nuz varsa, Jenkins kullanıcısının şifresini değiştirmek için passwd'yi kullanabilirsiniz. Sonra Jenkins şifresini alabilirsiniz.

Ayrıca, sorunun sizin için bu olup olmadığından emin değilim, ancak Jenkins aracılığıyla kullandığım ANT Script'te şunlar var:

<target name="unlock_keychain">
    <exec executable="security">
        <arg value="-v"/>
        <arg value="unlock-keychain"/>          
        <arg value="-p"/>
        <arg value="<My Password>"/>
        <arg value="/Users/macbuild/Library/Keychains/login.keychain"/>
    </exec>
</target>

1
Görünüşe göre bir "macbuild" kullanıcısı altında Jenkins kurulumunuz var; Bu kullanıcının arka plan programı değil, bir kullanıcı olduğunu varsayıyorum. Anahtar zincirinin komut satırı argümanları aracılığıyla kilidinin açılması gerekeceğini (şimdi) kesinlikle anlıyorum (Simon Urbanek'in yorumlarına bakın), ancak yine de jenkins arka plan programı için varsayılan bir anahtar zincirinin nasıl oluşturulacağından emin değilim.
edelaney05

1

Bazı nedenlerden dolayı, yeni Jenkins kurulumuyla Lion üzerinde "güvenlik" yardımcı programı benim için çalışmıyordu.

"Sudo su jenkins" den sonra, yeni anahtar zinciri yaratabildi, ancak tüm "default-keychain -s ..." veya "unlock" komutlarını sessizce yok sayarak sıfır çıkış durumuna döndü ve konsola hiçbir şey yazdırmadı. Varsayılan veya giriş anahtar zincirlerini listelemek hiçbir şey vermedi, anahtar zincirleri arama listesi yalnızca sistem anahtar zincirini içeriyordu ve bunu ne yazarsam değiştiremedim.

Bu kullanıcının masaüstünde oturum açtıktan ve Keychain Utility'yi başlattıktan sonra, oluşturduğum anahtar zincirimi gösterdi ve bundan sonra her şey üst yazılarda açıklandığı gibi çalıştı.

Lion'da ilk anahtar zinciri davranışlarından bazılarının değişip değişmediğini merak ediyorum, yoksa bir şeyi mi kaçırıyorum?


Yukarıdaki adımları Lion'un "temiz" bir kurulumunda gerçekleştirdim, bu yüzden siz atlamadan önce güvenlikle ilgili bir sorun olabilir mi? Başka bir olasılık da, ilk yayınladığımdan beri bir güvenlik / OS X güncellemesi olması.
edelaney05

0

Şirket için özel ve genel anahtarı anahtar zincirine ekledim. Yapacağım üretim için provizyon profillerini ekledim.

Bu kullanıcının hesabı olmadığı için devcenter'a kendi hesabımla giriş yaptım. Temel hazırlık sertifikalarını indirip Xcode'a yükledim.

Özellikle oluştur rol hesabı için bir sertifika eklemedim, ör. jenkins.

Bunu yapı betiğine ekledim: security unlock-keychain -p mySecretPassword yukarıdaki gibi, ama ...

Bir ~ / .ssh / mypass dosyası oluşturdum ve dosyaya şifreyi ekledim.

Ardından komut şu hale gelir: security unlock-keychain -p cat ~/.ssh/mypass

Yapılar bir şampiyon gibi çalışıyor. İpa dosyasını alıyorum, uygulama merkezine yükleniyor ve cihazda çalışıyor.


0

Ayrıca bir arka plan programı yerine bir OS X kullanıcısı olarak JenkinsCI'yi kurabilir ve başlatabilir:

  1. resmi yükleyiciyi kullanarak jenkins'i yükleyin ( https://jenkins-ci.org/ )
    • Sonrakine tıkla
    • "Özelleştir" i tıklayın
    • "Açılışta 'jenkins' olarak başla" seçeneğinin işaretini kaldırın - * ÖNEMLİ * bu seçenek normalde anahtarlık erişimiyle iyi çalışmayan başsız jenkinlere izin verir
  2. Başlatmak http://127.0.0.1:8080
    • BAŞLATMADIĞINI doğrulayın
    • jenkins'i durdurmanız gerekebilir sudo launchctl unload /Library/LaunchDaemons/org.jenkins-ci.plist
  3. Çift tıklama /Applications/Jenkins/jenkins.war
    • Tabii ki bu, başlangıçta @ başlangıç ​​için otomatikleştirilmelidir
  4. Açık http://127.0.0.1:8080
    • şimdi çalıştığını doğrula

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.