Saat menulis pipa jenkins, tampaknya sangat merepotkan untuk melakukan setiap perubahan baru untuk melihat apakah itu berfungsi.
Apakah ada cara untuk mengeksekusi ini secara lokal tanpa melakukan kode?
Saat menulis pipa jenkins, tampaknya sangat merepotkan untuk melakukan setiap perubahan baru untuk melihat apakah itu berfungsi.
Apakah ada cara untuk mengeksekusi ini secara lokal tanpa melakukan kode?
Anda tidak dapat menjalankan skrip Pipeline secara lokal, karena seluruh tujuannya adalah untuk skrip Jenkins. (Yang merupakan salah satu alasan mengapa yang terbaik adalah menjaga Jenkinsfile
kode singkat dan terbatas Anda yang benar-benar berhubungan dengan fitur Jenkins; logika build Anda yang sebenarnya harus ditangani dengan proses eksternal atau alat bangun yang Anda panggil melalui satu baris sh
atau bat
langkah.)
Jika Anda ingin menguji perubahan untuk Jenkinsfile
hidup tapi tanpa melakukan itu, gunakan yang Replay fitur ditambahkan dalam 1.14
JENKINS-33925 melacak yang diinginkan untuk kerangka kerja pengujian otomatis.
Saya punya solusi yang berfungsi baik untuk saya. Ini terdiri dari jenkins lokal yang berjalan di buruh pelabuhan dan kait web git untuk memicu pipa di jenkins lokal di setiap komit. Anda tidak perlu lagi mendorong repositori github atau bitbucket Anda untuk menguji pipa.
Ini hanya diuji di lingkungan linux.
Cukup mudah untuk membuatnya bekerja walaupun instruksi ini agak panjang. Sebagian besar langkah ada di sana.
Ini yang kamu butuhkan
Ini adalah bagaimana Anda melakukannya
Jenkins Docker
Buat file bernama Dockerfile di tempat yang Anda pilih. Saya menempatkannya di
/opt/docker/jenkins/Dockerfile
isinya dengan ini:Bangun gambar local_jenkins
Ini yang perlu Anda lakukan hanya sekali atau setelah Anda menambahkan sesuatu ke Dockerfile.
Mulai dan mulai ulang local_jenkins
Dari waktu ke waktu Anda ingin memulai dan memulai ulang jenkins dengan mudah. Misal setelah reboot mesin Anda. Untuk ini saya membuat alias yang saya masukkan ke
.bash_aliases
dalam folder rumah saya.Pastikan
/opt/docker/jenkins/jenkins_home
folder ada dan Anda memiliki hak pengguna untuk membaca dan menulis.Untuk memulai atau memulai ulang jenkins Anda cukup ketik:
Semua yang Anda lakukan di jenkins lokal Anda akan disimpan di folder / opt / docker / jenkins / jenkins_home dan disimpan di antara restart.
Buat kunci akses ssh di jenkins buruh pelabuhan Anda
Ini adalah bagian yang sangat penting untuk bekerja. Pertama kita mulai wadah buruh pelabuhan dan membuat bash shell untuk itu:
Anda sekarang telah memasuki wadah buruh pelabuhan, ini bisa Anda lihat dengan sesuatu seperti
jenkins@e7b23bad10aa:/$
di terminal Anda. Hash setelah @ pasti akan berbeda.Buat kuncinya
Tekan enter pada semua pertanyaan sampai Anda mendapatkan konfirmasi kembali
Salin kunci ke komputer Anda. Dari dalam wadah buruh pelabuhan komputer Anda 172.17.0.1 jika Anda bertanya-tanya.
user = nama pengguna Anda dan 172.17.0.1 adalah alamat ip ke komputer Anda dari dalam wadah buruh pelabuhan.
Anda harus mengetikkan kata sandi pada saat ini.
Sekarang mari kita coba selesaikan loop dengan ssh-ing ke komputer Anda dari dalam wadah buruh pelabuhan.
Kali ini Anda tidak perlu memasukkan kata sandi. Jika ya, ada yang salah dan Anda harus mencoba lagi.
Anda sekarang akan berada di folder home komputer Anda. Coba
ls
dan lihat.Jangan berhenti di sini karena kami memiliki rantai kerang ssh yang harus dikeluarkan.
Baik! Sekarang kami kembali dan siap untuk melanjutkan.
Instal Jenkins Anda
Anda akan menemukan Jenkins lokal di peramban Anda di http: // localhost: 8787 .
Pertama kali Anda mengarahkan browser Anda ke Jenkins lokal Anda, Anda akan dimaafkan dengan Instalasi Wizard. Standarnya baik-baik saja, pastikan Anda menginstal plugin pipeline selama pengaturan.
Siapkan jenkins Anda
Sangat penting bahwa Anda mengaktifkan keamanan berbasis matriks di http: // localhost: 8787 / configureSecurity dan beri diri Anda semua hak dengan menambahkan diri Anda ke matriks dan centang semua kotak. (Ada ikon centang-semua-kotak di paling kanan)
Jenkins’ own user database
sebagai Wilayah KeamananMatrix-based security
di bagian OtorisasiUser/group to add:
dan klik[ Add ]
tombolPrevent Cross Site Request Forgery exploits
tidak dicentang. (Karena Jenkins ini hanya dapat dijangkau dari komputer Anda, ini bukan masalah besar)[ Save ]
dan logout dari Jenkins dan masuk lagi hanya untuk memastikan itu berhasil. Jika tidak, Anda harus memulai dari awal dan mengosongkan/opt/docker/jenkins/jenkins_home
folder sebelum memulai kembaliTambahkan pengguna git
Kita perlu mengizinkan git hook kita untuk login ke Jenkins lokal kita dengan hak minimal. Hanya melihat dan membangun pekerjaan sudah cukup. Karena itu kami membuat pengguna yang dipanggil
git
dengan kata sandilogin
.Arahkan browser Anda ke http: // localhost: 8787 / securityRealm / addUser dan tambahkan
git
sebagai nama pengguna danlogin
kata sandi. Klik pada[ Create User ]
.Tambahkan hak kepada pengguna git
Buka halaman http: // localhost: 8787 / configureSecurity di browser Anda. Tambahkan pengguna git ke matriks:
git
di kolomUser/group to add:
dan klik[ Add ]
Sekarang saatnya untuk mencentang kotak untuk hak minimal untuk pengguna git. Hanya ini yang dibutuhkan:
Pastikan
Prevent Cross Site Request Forgery exploits
kotak centang tidak dicentang dan klik[ Save ]
Buat proyek pipa
Kami menganggap kami memiliki nama pengguna
user
dan proyek yang diaktifkan git kami denganJenkinsfile
di dalamnya disebutproject
dan terletak di/home/user/projects/project
Di http Anda : // localhost: 8787 Jenkins menambahkan proyek pipa baru. Saya menamainya hookpipeline untuk referensi.
New Item
di menu Jenkinshookpipeline
[ OK ]
Poll SCM
di bagian Build Triggers. Biarkan Jadwal kosong.Pipeline script from SCM
Repository URL
isian enter[email protected]:projects/project/.git
Script Path
isian enterJenkinsfile
Buat kait git
Buka
/home/user/projects/project/.git/hooks
folder dan buat file bernamapost-commit
yang berisi ini:Jadikan file ini dapat dieksekusi:
Uji kait pasca-komitmen:
Periksa di Jenkins jika proyek hookpipeline Anda dipicu.
Terakhir, buat beberapa perubahan sewenang-wenang untuk proyek Anda, tambahkan perubahan dan lakukan komit. Ini sekarang akan memicu pipa di Jenkins lokal Anda.
Hari hari menyenangkan!
sumber
docker build -t local_jenkins /opt/docker/jenkins/Dockerfile
dengandocker build -t local_jenkins /opt/docker/jenkins
karena Docker mengeluh tentang "tidak dapat menyiapkan konteks: konteks harus menjadi direktori".$ docker inspect jenkins | grep Gateway
ssh [email protected]
menggunakan alamat IP. Pastikan juga Anda mengaktifkan fitur Remote Login dari System Preferences -> Menu Folder BersamaTL; DR
Versi Panjang
Tes Jenkins Pipeline menjadi semakin menyakitkan. Berbeda dengan pendekatan konfigurasi pekerjaan deklaratif klasik di mana pengguna terbatas pada apa yang UI tampilkan, Jenkins Pipeline baru adalah bahasa pemrograman yang lengkap untuk proses pembangunan di mana Anda mencampur bagian deklaratif dengan kode Anda sendiri. Sebagai pengembang yang baik kami juga ingin memiliki beberapa unit test untuk kode semacam ini.
Ada tiga langkah yang harus Anda ikuti saat mengembangkan Jenkins Pipelines. The langkah 1. harus mencakup 80% dari kasus penggunaan.
Contohnya
The pipelineUnit GitHub repo berisi beberapa contoh Spock tentang cara menggunakan Jenkins Pipeline Satuan pengujian kerangka kerja
sumber
Jenkins memiliki fitur 'Putar Ulang', yang memungkinkan Anda memutar ulang pekerjaan dengan cepat tanpa memperbarui sumber:
sumber
Pada saat penulisan (akhir Juli 2017) dengan plugin Blue Ocean, Anda dapat memeriksa sintaksis pipa deklaratif langsung di editor pipa visual . Editor, berfungsi dari Blue Ocean UI ketika Anda mengklik "configure" hanya untuk proyek-proyek github (ini adalah masalah yang diketahui dan mereka bekerja untuk membuatnya berfungsi juga di git dll).
Namun, seperti yang dijelaskan dalam pertanyaan ini, Anda dapat membuka penjelajahan editor ke:
[Jenkins URL]/blue/organizations/jenkins/pipeline-editor/
Kemudian klik di tengah halaman, dan tekan
Ctrl+S
, ini akan membuka textarea di mana Anda dapat menempelkan skrip deklaratif pipeline. Ketika Anda mengklik Perbarui , jika ada kesalahan sintaks, editor akan memberi tahu Anda di mana kesalahan sintaks. Seperti di tangkapan layar ini:Jika tidak ada kesalahan sintaks, textarea akan ditutup dan halaman akan memvisualisasikan pipa Anda. Jangan khawatir itu tidak akan menyelamatkan apa pun (jika ini adalah proyek github, itu akan melakukan perubahan Jenkinsfile).
Saya baru di Jenkins dan ini cukup membantu, tanpa ini saya harus melakukan Jenkinsfile berkali-kali, sampai berhasil (sangat menjengkelkan!). Semoga ini membantu. Bersulang.
sumber
Agak terlambat ke pesta, tapi itu sebabnya saya menulis
jenny
, implementasi kecil dari beberapa langkah inti Jenkins. ( https://github.com/bmustiata/jenny )sumber
Sejauh yang saya tahu Plugin Pipeline ini adalah "Mesin" dari mekanika Jenkinsfile baru, jadi saya cukup yakin Anda bisa menggunakan ini untuk menguji skrip Anda secara lokal.
Saya tidak yakin apakah ada langkah-langkah tambahan yang diperlukan ketika Anda menyalinnya ke Jenkinsfile, namun sintaks dll harus persis sama.
Sunting: Ditemukan referensi pada "mesin", periksa deskripsi fitur ini , paragraf terakhir, entri pertama.
sumber
Dalam pengaturan pengembangan saya - hilang editor Groovy yang tepat - banyak masalah Jenkinsfile berasal dari kesalahan sintaksis sederhana . Untuk mengatasi masalah ini, Anda dapat memvalidasi Jenkinsfile terhadap instance Jenkins Anda (berjalan pada
$JENKINS_HTTP_URL
):curl -X POST -H $(curl '$JENKINS_HTTP_URL/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,":",//crumb)') -F "jenkinsfile=<Jenkinsfile" $JENKINS_HTTP_URL/pipeline-model-converter/validate
Perintah di atas adalah versi yang sedikit dimodifikasi dari https://github.com/jenkinsci/pipeline-model-definition-plugin/wiki/Validating-(or-linting)-a-Declarative-Jenkinsfile-from-the-command-line
sumber
Selain dari fitur Putar Ulang yang telah disebutkan orang lain (selain kegunaannya!), Saya juga menemukan yang berikut berguna:
sumber
Masukkan kunci SSH Anda ke profil Jenkins Anda, lalu gunakan linter deklaratif sebagai berikut:
Ini akan melakukan analisis statis pada Jenkinsfile Anda. Di editor pilihan Anda, tentukan pintasan keyboard yang menjalankan perintah itu secara otomatis. Dalam Visual Studio Code, yang merupakan apa yang saya gunakan, pergi ke Tugas> Konfigurasikan Tugas, kemudian gunakan JSON berikut untuk membuat perintah Validasi Jenkinsfile :
sumber
saya menggunakan replay future, untuk melakukan beberapa pembaruan dan berjalan cepat.
sumber
Dengan beberapa keterbatasan dan untuk jaringan pipa scripted saya menggunakan solusi ini:
sumber