Bagaimana saya bisa membuat Jenkins mengeksekusi skrip yang ditariknya dari Git?

12

Saya menggunakan Jenkins untuk memicu dan mengelola serangkaian pekerjaan impor. Saya ingin meletakkan skrip impor saya di Github, dan ketika Jenkins membangun pekerjaan, itu harus (a) menarik skrip yang dikendalikan versi dari Github dan (b) menjalankan skrip.

Masalah yang saya hadapi adalah bahwa saya tidak tahu bagaimana merujuk nama skrip untuk dijalankan dalam pekerjaan. Saya berasumsi bahwa kode sumber ditarik ke direktori ruang kerja. Apakah anggapan itu benar? (Kalau saja ada dokumentasi!)

Inilah yang telah saya lakukan sejauh ini:

  1. Menginstal Jenkins (jelas) di Windows Server saya (tidak, saya tidak punya pilihan tentang itu)
  2. Membuat repositori di akun github saya dan memasukkan kode saya di dalamnya
    • Ini publik di https://github.com/mcholl/SARS-Import/
    • Anda akan melihat saya memiliki dua skrip, roottest.py dan omniture-video \ test.py. Kode yang ada dipatenkan oleh Apple, saya yakin :)
    • Idenya adalah saya ingin menjalankan roottest.py
  3. Menginstal plugin Github
  4. Menciptakan pekerjaan sebagai berikut:
  5. Menjalankan pekerjaan secara manual

Apa yang saya dapatkan, bagaimanapun, adalah pesan kesalahan bahwa file tidak dapat ditemukan. Ini aneh, karena saya menganggap alur kerja akan "tarik salinan sumber lokal ke ... (Pekerjaan) / workspace / direktori, kemudian jalankan perintah batch dalam konteks direktori workspace.

Inilah output konsol lengkap:

Dimulai oleh pengguna anonim. Bangunan di ruang kerja C: \ Program Files (x86) \ Jenkins \ jobs \ Menguji Integrasi Github \ workspace [ruang kerja] $ cmd / c panggilan C: \ Windows \ TEMP \ hudson1966342425043540895.bat

C: \ Program Files (x86) \ Jenkins \ jobs \ Testing Integrasi Github \ workspace> python roottest.py python: tidak dapat membuka file 'roottest.py': [Errno 2] Tidak ada file atau direktori seperti itu

C: \ Program Files (x86) \ Jenkins \ jobs \ Testing Github Integration \ workspace> exit 2 Build step 'Jalankan perintah batch Windows' ditandai build gagal. Selesai: FAILURE

Jelas saya berharap untuk hanya melihat hasil pernyataan cetak saya di konsol.

Apa yang saya mengacau? Dan mengapa skrip saya belum ada di sana?

Geek yang Ramah
sumber
Mari kita lihat kode dari C: \ Windows \ TEMP \ hudson1966342425043540895.bat Anda menggunakan git pull?
Jenkins secara otomatis membuat lalu menghapusnya. Anda dapat melihat isi lengkap di output konsol, namun - itu adalah perintah "python roottest.py" yang saya referensikan di atas
Affable Geek
roottest.py tidak ada di jalur Anda. Apakah Anda melihat file di direktori ruang kerja atau apakah itu dihapus secara otomatis juga? Ketika Anda menjalankan git pull, Anda harus berada dalam salinan lokal dari repositori hasil kloning yang saya yakini, kemudian harus menarik setiap perubahan baru ke repo lokal. Sulit untuk membantu Anda ketika saya tidak dapat melihat perintah yang sedang dijalankan.
Apakah Anda mengikuti petunjuk ini untuk plugin github wiki.jenkins-ci.org/display/JENKINS/Git+Plugin#GitPlugin- ? Apakah Anda mengatur variabel lingkungan GIT_HOME dll?
Doh! Satu lagi alasan untuk membenci windows. Terima kasih - saya pikir itu masalahnya
Affable Geek

Jawaban:

5

Untuk build saya (di host Linux), saya melakukan sesuatu seperti ini (sebagai langkah build di Jenkins) untuk mengeksekusi script build dari ruang kerja yang baru saja diperiksa:

Jalankan perintah shell:

 sh -x $WORKSPACE/build/myproject.build

Saya kira itu akan bekerja serupa pada Windows, kecuali tentu saja Anda akan menggunakan \ daripada / dan Anda menggunakan python daripada sh untuk menjalankan skrip Anda.

eric.green
sumber
2

Anda dapat menulis dua baris dalam versi Anda:

chmod 777 ./my_script.sh
./my_script.sh
Andrs Zam
sumber
1
Izin menulis dunia mungkin bukan ide terbaik! Mengapa tidak 755 (pemilik menulis, semua orang membaca / mengeksekusi.
kmarsh
777 memang bukan ide terbaik, tetapi jawaban ini sebenarnya membantu saya.
Robin Dijkhof
0

Anda dapat menyimpan beberapa skrip di Git, mis. Test.sh:

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

Kemudian di input "Execute shell", masukkan impor skrip itu dan panggil "_test_func":

source test.sh
_test_func

Hasil:

 + source test.sh
 + _test_func
 test
Raf
sumber