Server panggilan balik webhook Git (github/gitee) untuk mengambil kode baru (CI orang malang)
Alat kecil ini lahir dari proyek nyata. Tetap harus menyebarkan dan menyiapkan situs demo, dll. Mengapa repot-repot jika Anda memiliki akun git? Anda hanya perlu sertifikat baru dari github, tambahkan ini ke proyek Anda, dan atur sesuai, dan Viola, Anda mendapatkan CI orang malang Anda sendiri :)
$ npm install --save git-webhook-ci
atau
$ yarn add git-webhook-ci
Buat file js (biasanya di direktori root proyek Anda). Sebut saja webhook.js
.
const gitWebhook = require ( 'git-webhook-ci' ) ;
const config = {
"secret" : "your-github-webhook-secret" ,
"path" : "/webhook" ,
"port" : 8081 ,
"branch" : "refs/heads/master" , // New in 0.4.1 you can pass * wildcard to listen to all branches
"cmd" : "git pull origin master --no-edit"
} ;
/*
*/
gitWebhook ( config ) ;
Pengaturan minimumnya bisa seperti ini:
// Default is github
gitWebhook ( { secret : "your-github-webhook-secret" } ) ;
// For Gitee
gitWebhook ( { secret : 'your-gitee-password' , provider : 'gitee' } ) ;
// For Gitlab
gitWebhook ( { secret : 'your-gitlab-token' , provider : 'gitlab' } ) ;
Opsi konfigurasi cmd
sekarang menerima suatu fungsi.
Tanda tangannya sebagai berikut
{
secret : 'your-secret-between-you-and-github' ,
cmd : ( result , opt , ref ) => {
// result has 3 properties
// 1. payload
// 2. host
// 3. event - from github / gitee
// opt is an environment variable that you can pass to the spawn
}
}
Contoh cara menggabungkan opsi cabang wildcard, dan fungsi callback
const gitWebhook = require ( 'git-webook-ci' ) ;
const { spawn } = require ( 'child_process' ) ;
const server = gitWebhook ( {
secret : 'your-secret-between-you-and-github' ,
branch : '*' ,
cmd : ( result , opt , ref ) => {
switch ( ref ) {
case 'refs/heads/master' :
const e1 = spawn ( 'npm' , [ 'run' , 'something' ] , opt ) ;
break ;
case 'refs/heads/develop' :
const e2 = spawn ( 'npm' , [ 'run' , 'something-else' ] , opt ) ;
break ;
default :
// do special stuff using the result object
specialFunc ( result . payload , opt ) ;
}
}
} ) ;
Seperti yang Anda lihat dari contoh kode di atas. Metode gitWebhook
sebenarnya mengembalikan instance server
dari http.createServer
. Jadi Anda dapat menghentikannya, memulai ulang, dll dengan mudah.
Anda sekarang dapat meneruskan provider
opsi konfigurasi baru:
{
secret : 'your-password-between-you-and-gitee' ,
provider : 'gitee'
}
Anda hanya perlu mengubah penyedia menjadi gitlab
:
{
secret : 'your-gitlab-token' ,
provider : 'gitlab'
}
Kami telah menambahkan penyedia baru di sini - ini bukan repo git. Ini mendukung panggilan balik WeChat.
Ada beberapa perbedaan antara panggilan balik WeChat dan penyedia lainnya
Ada properti baru yang perlu Anda sediakan saat Anda memulai webhook Anda dengan WeChat. Karena ini adalah proses dua langkah. Setelah server Anda diverifikasi dengan server WeChat. Mereka hanya akan memasukkan data ke url. Jadi, Anda perlu menjalankan ini sekali seperti itu.
Pertama, Anda perlu menjalankan dengan inited:false
(default)
{
secret : 'the-token-you-setup-with-wechat' ,
provider : 'wechat' ,
inited : false // this is default
}
Kemudian konfigurasi ulang webhook Anda untuk menjalankan operasi normal:
{
secret : 'the-token-you-setup-with-wechat' ,
provider : 'wechat' ,
inited : true // default: false
}
Ada contoh lengkap di wiki untuk menunjukkan bagaimana Anda dapat melakukan ini secara otomatis, dengan modul tambahan fs-extra
, nodemon
dan node-config
.
Jika Anda menggunakan fungsi sebagai properti cmd
Anda, hanya akan ada dua parameter yang tersedia, saat menjalankan panggilan balik Anda.
{
cmd : ( result , opt ) => {
// there is no ref
}
}
Nama properti | Keterangan | Bawaan | Jenis |
---|---|---|---|
dir | Di mana direktori root git berada, defaultnya adalah tempat ia dipanggil | process.cwd() | Rangkaian |
rahasia | Pass kunci rahasia untuk mengenkripsi data antara github dan server Anda | '' | Rangkaian |
jalur | Jalur tempat panggilan web hook ke server Anda | /webhook | Rangkaian |
pelabuhan | Nomor port tempat server panggilan balik ini berjalan | 8081 | Bilangan bulat |
cabang | Cabang tempat Anda akan memicu tindakan ketika menerima acara dari github. Anda dapat memberikan * wildcard untuk mendengarkan semua cabang | refs/heads/master | Rangkaian |
cmd | Perintah untuk dieksekusi ketika panggilan balik terjadi. Anda juga dapat meneruskan ini sebagai fungsi (lihat tanda tangan di atas) dan terutama berguna ketika Anda menggunakan * untuk cabang | git pull origin master --no-edit | Rangkaian |
dimulai | hanya tersedia dengan penyedia wechat | false | Boolean |
Secara internal kami menggunakan debug
untuk melacak apa yang terjadi. Jadi Anda cukup meneruskan env saat skrip dimulai untuk men-debug pengaturan Anda.
DEBUG= * node ./webhook.js
Jika Anda melakukan itu, Anda akan melihat banyak sekali informasi. Semua tanda debug kami diawali dengan git-webhook-ci
, dan berikut adalah daftar semua kunci yang kami gunakan dalam npm ini.
Misalnya:
DEBUG=git-webhook-ci:main,git-webhook-ci:wechat node ./webhook.js
Kemudian Anda hanya akan melihat pesan debug utama (antarmuka atas) dan internal Wechat.
Anda dapat menginstal alat ini secara global.
$ npm install git-webhook-ci --global
Kemudian Anda dapat memanggilnya dari baris perintah seperti itu
$ git-webhook-ci /path/to/your/git --secret secret-you-setup
Atau di package.json
Anda
{
"scripts" : {
"webhook" : "git-webhook-ci ./ --secret secret-you-setup"
}
}
Kemudian jalankan saja dengan npm run webhook
Periksa Wiki kami untuk informasi lebih lanjut tentang cara menyiapkan aplikasi Anda.
MIT © NEWBRAN.CH
Ditenagai oleh generator-nodex.