Kendime yürütmek için sunucuya ssh zaman iyi çalışan bir komut dosyası var, ancak Hudson , sürekli bir entegrasyon sunucusu çalıştırdığında sorunları var.
Gömülü bir linux sisteminde (hedef) testleri otomatikleştiriyorum. Hedef seri olarak Sunucu A'ya (RHEL 5) bağlanır ve minicom üzerinden çalıştırılır. Sunucu B (FC 12), aslında hedefte çalışan testleri oluşturur ve Sunucu A'ya ssh yapabilir. Sunucu C (RH), Sunucu B ile köle olarak Sunucu'yu barındırır.
Gerçek hedefe ihtiyaç duyulan her şeyi yapmak için bir runscript (http://linux.die.net/man/1/runscript) betiği yazdım; görüntüyü önyükler, Sunucu B'den bir dizin bağlar ve testleri yürütür. Sunucu B'deki bir bash betiği, bazı tamamlayıcı eylemlerle birlikte minicom'u runscript betiğiyle çağırır. Kullanan Sunucu B bir bash betiği var
ssh -t -t ServerA bashScript.sh
bu testleri hedefe yöneltmek için. Sunucu C'dayım, bu testleri Sunucu B'ye ssh'ing yaparak ve sunucu ssh ile minicom yürüten Sunucu A'ya ssh komut dosyasını çalıştırarak alabilirim. Whew. İncelemek için:
A Sunucusu: Hudson, B Sunucusuna ssh için köle mekanizmasını kullanır.
Sunucu B: kickOffTests.sh
satırı varssh -t -t ServerA runTests.sh
Sunucu A: runTests.sh
çağıran bir perl betiğini çağırırminicom -S my.script ttyE1
Önyükleme sonrasında hedef: Sunucu B'den sınamaların olduğu bir dizini bağlar ve bu dizine girer. C çalıştırılabilir derlenen testleri çalıştıran başka bir bash betiğini çağırır.
Şimdi, ne zaman ben Bu senaryoların herhangi kendim yürütmek, ne olması gerektiği yapmak. Ancak, Hudson aynı şeyi yapmaya çalıştığında, minicom oturumunda, C çalıştırılabilirini çağıran "yine başka bir bash betiği" ndeki bir satırdan şikayet ./executable
ediyor../executable: cannot execute binary file
Linux hakkında öğrenecek çok şeyim var, ancak bu sorunun Hudson'ın bir konsola bağlanmamasının bir sonucu olduğunu düşünüyorum. Hudson'ın kölesini kontrol etmek için ne yaptığını tam olarak bilmiyorum. Ben export TERM=console
kickOffTests.sh çalıştırmadan hemen önce yapılandırmada hattı kullanarak çalıştı , ama sorun devam ediyor.
Biri bana neler olduğunu ve bunu nasıl düzeltebileceğimi açıklayabilir mi? Bu denklemdeki sunucuların hiçbirini kaldıramıyorum. Minicom'u denklemden çıkarmak mümkün olabilir, ancak bu projeye bilinmeyen bir süre ekleyecektir, bu yüzden zaten sahip olduğum şeyi kullanan bir çözümü tercih ederim.