2016-03-31 18 views
0

Çeşitli derleme komutlarını jenkins tanımlarının dışına çekmeye ve bunları kaynak veri havuzunda bir veya daha fazla komut dosyasına depolamaya çalışın.jenkins windows slave'de komut dosyaları çalıştıran

Bazı komut dosyaları kabuk betikleri, bazıları toplu iş dosyalarıdır. Bir kabuk betiği, c: \ program files \ git \ git-bash.exe dosyasını çalıştırarak ve bazı git komutlarını gerçekleştirerek başlatır (hayır, eklentiyi kullanmıyorum - jenkins sunucum değil ve en kısıtlayıcı, minimum düzeyde verildi Bu işi yapmak için erişim, ben bir komut dosyası'ndan git komutlarını çalıştırmak için gidiyorum). Diğer bazı çalışmalar da değişkenleri ayarlamak, yapı için dosyaları yapılandırmak vb. Için yapılır.

Sorun şu ki, bu kabuk komut dosyasından bir toplu iş dosyasını çalıştırmaya çalışıyor. step1.sh komut

# Override Jenkins value 
WORKSPACE=/f/git/project 
WIN_WORKSPACE=`cygpath -w $WORKSPACE | sed 's/\\\\/\\\\\\\\/g'` 
echo "WIN_WORKSPACE: $WIN_WORKSPACE" 
... 
echo "Building!" 
echo cmd.exe /c call builds\\step2.bat $WIN_WORKSPACE 
cmd.exe /c call builds\\step2.bat $WIN_WORKSPACE 
echo "done building" 

için aşağı doğru ilerler

#!c:\Program Files\Git\git-bash.exe 
/f/git/project/builds/step1.sh $MASTER_BRANCH $BUILD_TYPE $TAG_CLIENT 

: jenkins olarak

, ben (argümanlar olarak iletilen üç parametrelerle) sürecini başlatmak için bir kabuk komut dosyası var ne olur, (ya da "ara" anahtar sözcüğü olmadan) cmd.exe sadece bir komut istemine ortaya çıkar ve ben "exit" yazana kadar orada oturur olmasıdır:

Building! 
cmd.exe /c call builds\step2.bat F:\\git\\project 
Microsoft Windows [Version 6.3.9600] 
(c) 2013 Microsoft Corporation. All rights reserved. 

F:\git\project>exit <--- I have to type that. 
exit 
done building 

Toplu dosyaları git-bash kabuklarından çalıştırmak mümkün mü? Daha iyi bir yaklaşım var mı? Bir toplu iş dosyasına dönüştürmeyi denemeye başladım ama sözdizimi (komut çıktısını yakalamak ve bir değişkene depolamak gibi şeyler için) kabuk betikleriyle daha güzel. Ayrıca, yapının başka bir bölümünü tamamlamak için başka bir sunucuyla iletişim kurmak için en az birkaç kabuk (bekletme) komut dosyasını çalıştırmam gerekiyor.

cevap

1

Umarım bu acı verici basit çözüm işe yarıyor; böylece, //c ile /c değiştirin:

cmd.exe //c call builds\\step2.bat $WIN_WORKSPACE 

Bu posix yolu, içeride bir komutla geçirilecek için sadece niyetinde, bu nedenle kaçmış olmalı rağmen git-bash ile başarısız çünkü.

+0

Tamam ... bunu yaptı. Niye ya? – Jon

+1

Git pencereler kadar düzgün değil, Cygwin, bash ve cmd geçişi için daha iyidir, böylece windows posix yolları geçemez. [burada] (https://github.com/git-for-windows/build-extra/blob/master/installer/ReleaseNotes.md) [burada] (https://github.com/lavv17/lftp/issues/ 109) [ve belki burada] (http://stackoverflow.com/questions/11865085/out-of-a-git-console-how-do-i-execute-a-batch-file-and-then-return- için-git-CONSO) – Bloodied