Jenkins'in Git'ten aldığı bir komut dosyasını yürütmesini nasıl sağlayabilirim?


12

Bir dizi ithalat işini tetiklemek ve yönetmek için Jenkins kullanıyorum. İthalat betiğimi Github'a koymak istiyorum ve Jenkins işi oluşturduğunda, (a) bu sürüm kontrollü betiği Github'dan çıkarmalı ve (b) betiği çalıştırmalıdır.

Ben içine çalışıyorum sorun ben iş içinde çalıştırmak için komut dosyası adına başvuru bilmiyorum olmasıdır. Kaynak kodunun çalışma alanı dizinine çekildiğini varsayıyorum. Bu varsayım doğru mu? (Keşke belgeler olsaydı!)

Şimdiye kadar yaptığım şey:

  1. Jenkins'i (açıkça) Windows Sunucuma yükledim (hayır, bunun hakkında bir seçeneğim yoktu)
  2. Github hesabımda bir depo oluşturdum ve kodumu içine koy
    • Https://github.com/mcholl/SARS-Import/ adresinde herkese açıktır.
    • İki komut dosyam olduğunu göreceksiniz, roottest.py ve omniture-video \ test.py. Apple tarafından patent altında olan kod, eminim :)
    • Fikir şu ki roottest.py'yi çalıştırmak istiyorum
  3. Yüklü Github eklentisi
  4. Aşağıdaki gibi bir iş yarattı:
  5. İşi manuel olarak yürütme

Ne olsun, ancak dosyanın bulunamadığını bir hata iletisi. Bu garip, çünkü iş akışının "kaynağın yerel bir kopyasını ... (Job) / workspace / dizinine çekin, sonra toplu iş komutunu çalışma alanı dizini bağlamında çalıştırın.

İşte tam konsol çıktısı:

Kullanıcının anonim tarafından başlatılması Çalışma alanında bina C: \ Program Files (x86) \ Jenkins \ jobs \ Github Entegrasyonunu Test Etme \ çalışma alanı [çalışma alanı] $ cmd / c call C: \ Windows \ TEMP \ hudson1966342425043540895.bat

C: \ Program Dosyaları (x86) \ Jenkins \ jobs \ Github Entegrasyonunu Test Etme \ çalışma alanı> python roottest.py python: 'roottest.py' dosyası açılamıyor: [Errno 2] Böyle bir dosya veya dizin yok

C: \ Program Dosyaları (x86) \ Jenkins \ jobs \ Github Entegrasyonunu Test Etme \ çalışma alanı> çıkış 2 Derleme adımı Derleme hatası olarak işaretlenen 'Windows toplu iş komutunu yürüt' işlemi tamamlandı: FAILURE

Belli ki baskı beyanımın sonuçlarını konsolda görmeyi bekliyordum.

Ne berbat ettim? Peki senaryom neden zaten orada değil?


Gidip C: \ Windows \ TEMP \ hudson1966342425043540895.bat kodunu görelim.

Jenkins otomatik olarak oluşturur ve siler. Konsol çıktısında tüm içeriği görebilirsiniz - yukarıda bahsettiğim "python roottest.py" komutu
Affable Geek

roottest.py yolunuzda değil. Dosyayı çalışma alanı dizininde mi görüyorsunuz yoksa bu dosya otomatik olarak da siliniyor mu? Git pull'i çalıştırdığınızda, klonlanan deponun yerel kopyasında olmanız gerektiğine inanıyorum, daha sonra yerel repodaki yeni değişiklikleri çekmelidir. Çalıştırılan gerçek komutlardan hiçbirini göremediğimde size yardımcı olmak zor.

Github eklentisi wiki.jenkins-ci.org/display/JENKINS/Git+Plugin#GitPlugin- için bu talimatları izlediniz mi? GIT_HOME çevresel değişkeni vb. Belirlediniz mi?

D'oh! Pencerelerden nefret etmek için bir neden daha. Teşekkür ederim - Bence bu sorun olabilir
Affable Geek

Yanıtlar:


5

Yapım için (bir Linux ana bilgisayarında), yeni kullanıma alınmış çalışma alanından bir yapı komut dosyası yürütmek için böyle bir şey yapıyorum (Jenkins'te bir yapı adımı olarak):

Kabuk Komutunu Yürüt:

 sh -x $WORKSPACE/build/myproject.build

Tabii ki / yerine \ kullanacaksınız ve betiğinizi çalıştırmak için sh yerine python kullanıyorsunuz.


2

Yapınıza iki satır yazabilirsiniz:

chmod 777 ./my_script.sh
./my_script.sh

1
Dünya yazma izinleri en iyi fikir olmayabilir! Neden 755 değil (sahibi yazma, herkes okuma / yürütme.
kmarsh

777 gerçekten en iyi fikir değil, ama bu cevap aslında bana yardımcı oldu.
Robin Dijkhof

0

Git'te bazı komut dosyaları depolayabilirsiniz, örneğin test.sh:

#!/bin/bash
_test_func(){ 
 echo 'test'
}

Ardından "Execute shell" girdisine, bu komut dosyasının içe aktarılmasını sağlayın ve "_test_func" çağırın:

source test.sh
_test_func

Sonuç:

 + source test.sh
 + _test_func
 test
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.