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
, gitlabTargetBranch
dan gitlabSourceBranch
tersedia. 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
adalahid
gitlabTargetBranch
adalahtarget_branch
gitlabSourceBranch
adalahsource_branch
Saya telah mencoba mengkonfigurasi parameter build dengan persyaratan plugin GitLab Merge Request Builder sebagai Name
dan nilai variabel sebagai Default Value
. Sayangnya (dan mungkin secara sengaja), variabel di Default Value
bidang 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?