Memicu membangun Jenkins untuk permintaan penggabungan dari kait web GitLab

10

Saya ingin Jenkins (1,561) membuat permintaan gabungan yang diajukan ke GitLab (6.7.5), dipicu oleh pengait web permintaan gabungan. Saya memiliki build parameterised, dan plugin Jenkins "GitLab Merge Request Builder" (1.2.0) dan "GitLab Hook" (1.0.0). Sayangnya, bermigrasi ke Jenkins CI bukanlah pilihan nyata.

Gabung Permintaan Builder Plugin ini mampu permintaan membangun merge, selama variabel gitlabMergeRequestId, gitlabTargetBranchdan gitlabSourceBranchtersedia. Ini berfungsi dengan baik ketika plugin meng-polling repositori itu sendiri, atau saya memicu build dengan payload manual (misalnya curl --data "gitlabMergeRequestId=3&so_on http://server_name/job/$JOB_NAME/buildWithParameters), tetapi saya tidak bisa melakukan ini dengan hook.

Menggunakan plugin GitLab Hook, saya bisa mendapatkan data yang diperlukan di payload JSON, tetapi nilainya memiliki kunci "salah":

  • gitlabMergeRequestId adalah id
  • gitlabTargetBranch adalah target_branch
  • gitlabSourceBranch adalah source_branch

Saya telah mencoba mengkonfigurasi parameter build dengan persyaratan plugin GitLab Merge Request Builder sebagai Namedan nilai variabel sebagai Default Value. Sayangnya (dan mungkin secara sengaja), variabel di Default Valuebidang tidak diganti, jadi Jenkins mencari permintaan penggabungan dengan id ${id}dan nilai cabang yang serupa.

Saya tidak menemukan cara untuk mengkonfigurasi payload yang dikirim dari GitLab, dan tidak ada opsi konfigurasi untuk plugin GitLab Hook maupun nama parameter yang digunakan oleh plugin GitLab Merge Request Builder.

Saya sedang mempertimbangkan untuk menulis skrip PHP kecil untuk mencegat dan mengubah muatan dari POST sebelum meneruskannya ke Jenkins. Walaupun saya yakin ini akan berhasil, itu pasti tampak tidak perlu rumit.

Satu-satunya pilihan nyata lain yang bisa saya lihat adalah mengubah sumber plugin, tetapi ini membuat mereka menjadi PITA.

Apakah saya mengabaikan sesuatu yang sudah jelas, atau apakah benar-benar tidak ada cara yang lebih sederhana untuk memicu permintaan Gabung yang dibangun dengan kait web dari GitLab ke Jenkins?

Martin Lehmann
sumber

Jawaban:

0

Lihat plugin baru ini (gitlab-plugin), mungkin itu membantu. Plugin ini mengemulasi Jenkins sebagai Layanan Web GitlabCI untuk digunakan dengan GitlabHQ.

xaniasd
sumber