Bagaimana cara memicu build dari Jenkins?
Bagaimana cara mengkonfigurasi kait komit Git post?
Persyaratan saya adalah setiap kali perubahan dibuat di repositori Git untuk proyek tertentu, itu secara otomatis akan memulai membangun Jenkins untuk proyek itu.
Di Jenkins memicu membangun bagian saya memilih memicu membangun dari jarak jauh.
Dalam .git
direktori, ada direktori hooks di mana kita harus mengkonfigurasi file commit.
Saya bingung bagaimana memicu build dari sana (saya tahu beberapa bagian kita harus menggunakan perintah curl).
curl cmbuild.aln.com/jenkins/view/project name/job/myproject/buildwithparameters?Branch=feat-con
Saya telah menempatkan perintah ini di direktori hook server git saya (post commit hook).
Setiap kali perubahan terjadi di repositori itu menjalankan membangun otomatis.
Saya ingin check in changeset apakah dalam setidaknya satu file java ada membangun harus dimulai.
Misalkan pengembang hanya mengubah file xml atau file properti yang seharusnya tidak dimulai.
Bersamaan dengan itu xml
, misalkan .java
file - file itu di sana build harus dimulai.
Jawaban:
Seperti disebutkan dalam " Polling harus mati: memicu Jenkins membangun dari hook git ", Anda dapat memberi tahu Jenkins tentang komitmen baru:
Seperti yang disebutkan di sini , pastikan untuk menggunakan alamat yang tepat untuk server Jenkins Anda:
Untuk memperkuat poin terakhir itu, ptha menambahkan dalam komentar :
Anda juga dapat menggunakan kait pasca-terima sederhana seperti di " Bangun berbasis push menggunakan Jenkins dan GIT "
Namun, ini adalah skrip khusus proyek, dan penulis menyebutkan cara untuk menggeneralisasikannya.
Solusi pertama lebih mudah karena tidak bergantung pada otentikasi atau proyek tertentu.
Pada dasarnya, skrip build Anda dapat:
git notes
) pada panggilan pertamaHEAD
calon cabang Anda untuk membangun dan komit direferensikan olehgit notes
'membangun' (git show refs/notes/build
):git diff --name-only SHA_build HEAD
.git notes
'build
' Anda keHEAD
.Mei 2016: cwhsu menunjukkan dalam komentar url yang mungkin berikut:
Juni 2016, polaretto menunjukkan dalam komentar :
sumber
yourRepo.git/hooks/post-receive
curl http://yourserver/jenkins/git/notifyCommit?url=<URL of the Git repository>
. The url parameter harus sesuai apa yang Anda miliki di Repository URL pekerjaan Jenkins Anda. Ketika menyalin contoh saya meninggalkan protokol, dalam kasus kami ssh: // dan tidak berhasil.Semoga ini bisa membantu: http://nrecursions.blogspot.in/2014/02/how-to-trigger-jenkins-build-on-git.html
Ini hanya masalah menggunakan
curl
untuk memicu pekerjaan Jenkins menggunakan kait git yang disediakan oleh git.Perintah
dapat menjalankan pekerjaan Jenkins, di mana
someJob
nama pekerjaan Jenkins.Cari
hooks
folder di folder .git tersembunyi Anda. Ubah namapost-commit.sample
file menjadipost-commit
. Buka dengan Notepad, hapus: Nothing
baris dan tempel perintah di atas ke dalamnya.Itu dia. Setiap kali Anda melakukan komit, Git akan memicu perintah post-komit yang ditentukan dalam file.
sumber
Seperti jawaban sebelumnya memang menunjukkan contoh bagaimana kait penuh mungkin terlihat di sini adalah kode kait pasca-terima saya yang berfungsi:
Dalam hal ini saya memicu pekerjaan jenkins hanya ketika mendorong untuk menguasai dan bukan cabang lainnya.
sumber
Saya ingin menambahkan jawaban di atas bahwa itu menjadi sedikit lebih sulit jika otorisasi Jenkins diaktifkan.
Setelah mengaktifkannya saya mendapat pesan kesalahan bahwa pengguna anonim perlu izin baca.
Saya melihat dua solusi yang mungkin:
1: Mengubah kait saya ke:
2: mengatur otorisasi berbasis proyek.
Solusi sebelumnya memiliki kelemahan yaitu saya harus mengekspos passwd saya di file hook. Tidak dapat diterima dalam kasus saya.
Yang kedua bekerja untuk saya. Dalam pengaturan auth global saya harus mengaktifkan Keseluruhan> Baca untuk pengguna Anonim. Dalam proyek ini saya ingin memicu saya harus mengaktifkan Job> Build and Job> Read for Anonymous.
Ini masih bukan solusi yang sempurna karena sekarang Anda dapat melihat proyek di Jenkins tanpa login. Mungkin ada solusi yang lebih baik lagi menggunakan pendekatan sebelumnya dengan http login tapi saya belum mengetahuinya.
sumber