Bagaimana cara memeriksa status build Jenkins tanpa beralih ke browser?
Jika diperlukan, saya dapat membuat skrip menggunakan API JSON, tetapi saya ingin tahu apakah sudah ada yang seperti ini di dalamnya.
scripting
command-line-interface
jenkins
Catskul
sumber
sumber
Jawaban:
Saya tidak dapat menemukan alat bawaan jadi saya membuatnya:
sumber
Periksa untuk melihat apakah build sedang berjalan atau tidak
Saya mencoba skrip Python dalam menjawab pertanyaan ini, tetapi tidak berhasil. Saya tidak tahu Python, dan tidak ingin menginvestasikan waktu dalam debugging, tetapi mampu membaca cukup banyak skrip untuk mendapatkan inspirasi darinya.
Yang perlu saya lakukan adalah memeriksa untuk melihat apakah build sedang berjalan atau tidak. Untuk melakukan itu saya menggunakan curl dan grep, seperti ini:
curl http://myjenkins/job/myjob/lastBuild/api/json | grep --color result\":null
result\":null
akan mengembalikan 0.result\":null
akan kembali 1.Tidak terlalu elegan, tetapi itu bekerja cukup baik untuk kebutuhan saya.
Misalnya, saya memiliki skrip Bash yang memulai pembuatan, kemudian menunggu sampai selesai:
Terima kasih atas inspirasinya, Catskul!
sumber
TypeError: cannot concatenate 'str' and 'NoneType' objects
. Saya tidak tahu Python, jadi saya beralih menggunakan shell dan memberi +1 jawaban Anda untuk inspirasi. Terima kasih!Seorang mantan kolega saya menulis https://github.com/txels/autojenkins yang memiliki sejumlah fitur kenyamanan dan jenis-jenis API yang bekerja dengan instance Jenkins dari Python ...
sumber
Solusi Python lain:
sumber
Anda dapat menggunakan skrip Groovy:
Melalui jenkins-cli
, di mana
=
berarti standar masuk. Anda dapat mengotentikasi dengan--username <USER> --password <PASS>
atau dengan-i <SSH-PRIVATE-KEY>
.Melalui jenkins-cli atas SSH
sumber
Saya pikir saya menemukan cara yang lebih mudah. Jika saya mengerti dengan benar, Anda ingin memeriksa hasil build - apakah itu berhasil atau gagal, dengan kata lain.
Perintah "build" Jenkins CLI mengubah kode keluar tergantung pada hasil build, selama Anda menggunakan opsi
-s
atau-f
di akhir.Sebagai contoh,
atau
Perhatikan bahwa opsi ada di akhir; ini bukan yang pertama
-s
, yang digunakan untuk mendefinisikan URL instance Jenkins.Dan kemudian, untuk mendapatkan hasilnya, Anda dapat menggunakan
$?
:Jika hasilnya 0, itu berhasil. Jika sesuatu selain 0, itu gagal.
Referensi: Saya tidak dapat menemukan Jenkins contoh umum yang memberikan akses ke halaman ini, tetapi dapat ditemukan dalam contoh Jenkins lokal Anda:
http://<url of Jenkins Instance>/cli/command/build
. Ini juga menjelaskan perbedaan antara-s
dan-f
:sumber
Anda dapat menggunakan deskriptor simbolis
lastBuild
:The
result
elemen dalam respon berisi string yang menjelaskan hasil dari membangun.sumber
Untungnya, ada jenkins-cli yang dapat Anda gunakan untuk mendapatkan beberapa informasi dari Jenkins. Sayangnya, Anda tidak dapat mengambil status bangunan menggunakan CLI - yang berarti solusi Anda menggunakan API JSON tidak hanya benar - itu satu-satunya cara terprogram untuk melakukannya.
Selain itu, meskipun sepertinya
get-job
melakukan apa yang Anda inginkan, itu tidak benar-benar mengembalikan hasilnya - itu hanya mengembalikan konfigurasi pekerjaan.sumber
Skrip lain untuk CMD (Windows):
sumber
Anda dapat mencoba ini,
sumber