Saya mencoba mengatur Jenkins-ci untuk proyek menggunakan GitHub. Saya sudah menyiapkan Jenkins dengan plugin yang sesuai. Saya ingin Jenkins menjalankan skrip pembuatan hanya setiap kali seseorang di proyek mendorong untuk menguasainya. Sejauh ini saya sudah bisa mengaturnya sehingga build akan dipicu kapan saja ada orang yang mendorong ke mana pun, tapi itu terlalu luas. Saya telah melakukan ini dengan kait layanan pasca-terima di Git.
Saya telah membaca wiki Jenkins, dan beberapa tutorial, tetapi detail khusus ini hilang ... apakah ada hubungannya dengan pemungutan suara mungkin? Atau haruskah pekerjaan dilakukan di sisi Git, sehingga Git hanya memicu Jenkins ketika master
diubah?
Jawaban:
Seperti yang sudah dicatat oleh gezzed dalam komentarnya, sementara itu ada solusi yang baik (dijelaskan dalam Polling harus mati: memicu Jenkins membangun dari kait Git ):
Mengatur Jenkins pekerjaan ini membangun pemicu untuk Poll SCM , tetapi tidak menentukan jadwal.
Buat pemicu pasca-penerimaan GitHub untuk memberi tahu URL
Ini akan memicu semua build yang mensurvei repositori Git yang ditentukan.
Namun, polling benar-benar memeriksa apakah ada sesuatu yang didorong ke cabang yang digunakan.
Ini bekerja dengan sempurna.
sumber
Pada versi 0.5, plugin GitHub untuk Jenkins dapat memicu pembangunan ketika perubahan didorong ke GitHub .
sumber
Alih-alih memicu build dari jarak jauh, ubah konfigurasi proyek Jenkins Anda menjadi trigger build dengan polling.
Jenkins dapat memilih berdasarkan internal yang tetap, atau dengan URL. Yang terakhir adalah apa yang Anda ingin lompati membangun jika tidak ada perubahan untuk cabang itu. Rincian persisnya ada di dokumentasi . Pada dasarnya Anda hanya perlu memeriksa opsi "Poll SCM", biarkan bagian jadwal kosong, dan atur URL jarak jauh untuk menekan JENKINS_URL / job / name / polling.
Sekali saja, jika Anda memiliki lingkungan Jenkins yang aman tidak seperti itu
/build
,/polling
URL memerlukan otentikasi. Instruksi di sini memiliki detail. Sebagai contoh, saya memiliki hook GitHub Post-Receiveusername:apiToken@JENKIS_URL/job/name/polling
.sumber
Untuk GitLab , gunakan langkah-langkah ini:
Masukkan URL "Bangun Sekarang" dari proyek Jenkins Anda sebagai URL Acara Push:
http://server.com/jenkins/job/project_name/build?delay=0sec
sebagai contohAdd Web Hook
dan kemudiantest hook
Kemudian kapan pun Anda berkomitmen pada repositori, kait web dipicu dan build dibuat. Pastikan untuk mengatur ruang kerja Jenkins
delete workspace before each build
Anda sehingga Anda mendapatkan salinan baru kode baru.sumber
Tidak terkait dengan Git, tetapi di bawah ini saya akan membantu dengan konfigurasi pekerjaan Jenkins secara rinci dengan Mercurial. Ini dapat membantu orang lain dengan masalah yang sama.
Poll SCM
opsi. Tetapkan nilainya menjadi* * * * *
[URLTrigger] - Poll with a URL
. Sekarang Anda dapat memilih beberapa opsi seperti perubahan tanggal modifikasi, konten URL, dll.Monitor change of content
Sekarang, memicu beberapa perubahan pada repositori Mercurial dengan beberapa test check-in.
Lihat bahwa pekerjaan Jenkins sekarang dijalankan dengan mendeteksi perubahan SCM. Saat build dijalankan karena perubahan Mercurial, Anda akan melihat teks
Started by an SCM change
. Lain, pengguna yang secara manual memulainya.sumber
Saya harap ini membantu: Bagaimana memicu membangun Jenkins pada Git commit
Ini hanya masalah menggunakan curl untuk memicu pekerjaan Jenkins menggunakan kait Git yang disediakan oleh Git.
Perintah
curl http://localhost:8080/job/someJob/build?delay=0sec
dapat menjalankan pekerjaan Jenkins, di manasomeJob
nama pekerjaan Jenkins.Cari folder "kait" di folder .git tersembunyi Anda. Ganti nama file "post-commit.sample" menjadi "post-commit". Buka dengan Notepad, hapus baris ": Nothing" dan rekatkan perintah di atas.
Itu dia. Setiap kali Anda melakukan komit, Git akan memicu perintah post-komit yang ditentukan dalam file.
sumber
Integrasi berkelanjutan dengan Jenkins, setelah kode didorong ke repositori dari perintah Git / GUI:
.git/hooks
folder.The
hooks
folder berisi beberapa file. Periksa "pasca-komit". Jika tidak ada, buat file, "pasca-komit" tanpa ekstensi file:Edit file "post-commit" dengan perintah di bawah ini. Pastikan ada di folder kait kode sumber lokal Anda.
Contoh:
5.
userName
: Nama pengguna JenkinsjobName
: Nama pekerjaan buildapiToken
: Untuk mendapatkan token API Anda, buka halaman pengguna Jenkins Anda (kanan atas di antarmuka). Ini tersedia di menu "Konfigurasi" di sebelah kiri halaman: "Tampilkan token API"Buat perubahan pada kode sumber Anda dan komit kode ke repositori.
Pekerjaan Anda
http://localhost:8080/jenkins/job/Gitcommittest/
,, seharusnya membangun.sumber
Anda perlu menentukan cabang. Secara default ia mendengarkan apa pun. Lihat posting blog Hudson: Git and Maven plugins .
sumber
Plugin Pemicu Webhook Umum dapat dikonfigurasi dengan filter untuk mencapai ini.
Saat dikonfigurasi dengan
ref
dan ekspresi$.ref
.$ref
dan ekspresi filter seperti^refs/heads/master$
.Maka pekerjaan itu akan memicu untuk setiap dorongan untuk
master
. Tidak ada polling.Anda mungkin ingin lebih banyak nilai dari webhook untuk benar-benar melakukan build. Cukup tambahkan lebih banyak variabel, dengan JSONPath, untuk memilih apa yang Anda butuhkan.
Ada beberapa kasus penggunaan di sini: https://github.com/jenkinsci/generic-webhook-trigger-plugin/tree/master/src/test/resources/org/jenkinsci/plugins/gwt/bdd
sumber
Di organisasi saya saat ini, kami tidak melakukan ini di master tetapi melakukannya di kedua mengembangkan dan melepaskan / cabang (kami menggunakan Git Flow), untuk menghasilkan build snapshot.
Karena kami menggunakan pipa multi-cabang, kami melakukan ini di Jenkinsfile dengan sintaks when {} ...
Ini dirinci dalam posting blog ini: https://jenkins.io/blog/2017/01/19/converting-conditional-to-pipeline/#longer-pipeline
sumber
Jawaban di atas sudah benar tetapi saya berbicara kepada mereka yang masih baru di sini karena kesederhanaannya
terutama untuk pengaturan pemicu bangunan untuk pipa:
Pertimbangkan Anda memiliki dua cabang Github: 1.master, 2.dev, dan Jenkinsfile (tempat skrip pipeline ditulis) dan file lain tersedia di setiap cabang
Konfigurasikan proyek Pipeline baru (untuk cabang dev)
## 1. Integrasi kode dengan git-plugin dan pendekatan berbasis cron Plugin git prasyarat harus diinstal dan mengkonfigurasinya dengan nama dan email Anda
## 2. Integrasi kode: pendekatan github-plugin dan webhook Prasyarat Github plugin harus diinstal dan server Github harus dikonfigurasi, koneksi harus diuji jika tidak mempertimbangkan konfigurasi berikut
Konfigurasikan plugin Github dengan akun di Jenkins
Bagian GitHub Tambahkan server Github jika tidak ada URL API: https://api.github.com Kredensial: Tambahkan teks rahasia (Klik tombol add: pilih jenis teks rahasia) dengan nilai Token Akses Pribadi (Hasilkan dari Token Github Anda—> pengaturan -> pengaturan pengembang—> token akses pribadi—> tambahkan token—> periksa lingkup—> salin token) Uji Koneksi—> Periksa apakah itu terhubung ke akun Github Anda atau tidak. Centang kotak centang dengan Kelola Kait Di sub-bagian sebelumnya, cukup pilih kredensial sebelumnya untuk 'rahasia bersama'
Tambahkan webhook jika tidak ditambahkan ke repositori Anda oleh
http: // Public_IP: Jenkins_PORT / github-webhook /
Jika Anda memiliki plugin Github Tarik, konfigurasikan juga dengan URL Jenkins yang dipublikasikan.
sumber
Gunakan plugin build request builder: https://wiki.jenkins-ci.org/display/JENKINS/GitHub+pull+request+builder+plugin
Ini sangat mudah. Anda kemudian dapat mengatur webhook GitHub untuk memicu bangunan.
sumber
Solusi saya untuk server git lokal: buka direktori hook server git lokal Anda, abaikan pembaruan yang ada.contoh dan buat file baru yang secara harfiah bernama "pembaruan", seperti:
Pernyataan gema akan ditampilkan di bawah hasil git push Anda, token dapat diambil dari konfigurasi pekerjaan jenkins Anda, telusuri untuk menemukannya. Jika file "pembaruan" tidak dipanggil, coba beberapa file lain dengan nama yang sama tanpa ekstensi "sampel".
Itu yang kamu butuhkan
sumber