Coding设置ServiceHook
1.登录
必须是团队所有者登录
找到需要设置的项目
2. webhook.php
<?php
$input = json_decode(file_get_contents("php://input"), true);
$message = '';
switch ($_SERVER['HTTP_X_CODING_EVENT']) {
case 'ping':
$message = 'pong';
break;
case 'push':
case 'merge':
$cmd = "nohup sh /home/sourse/shell/jack.sh &";
$message = shell_exec($cmd);
break;
}
header('Content-Type: application/json');
echo json_encode(compact('message'));
#!/bin/bash
cd /home/sourse/html/
git clone https://e.coding.net/666/hhh.git
git fetch --all
git reset --hard origin/master
git pull
cd hhh
cnpm i
npm run build
# 如果需要发布到其他服务器
scp -r hhh 127.0.0.2:/usr/local/nginx/html/
官网文档https://help.coding.net/docs/project-settings/open/webhook.html
官网php实例:
< ?php
$input = json_decode(file_get_contents("php://input"), true);
$message = '';
switch ($_SERVER['HTTP_X_CODING_EVENT']) {
case 'ping':
$message = 'pong';
break;
case 'push':
$tmp = sys_get_temp_dir();
$path = "$tmp/{$input['repository']['name']}";
$cmd = "rm -rf $path; cd $tmp; git clone {$input['repository']['clone_url']}";
$message = shell_exec($cmd);
break;
}
header('Content-Type: application/json');
echo json_encode(compact('message'));
3. 报错
就是coding 测试的时候正常,
然后有人push就401报错,
说签名错误
java.lang.Exception: Signature Invalid
at org.kohsuke.stapler.HttpResponses.error(HttpResponses.java:83)
at net.coding.jenkins.plugin.CodingPushTrigger.onPost(CodingPushTrigger.java:127)
at net.coding.jenkins.plugin.webhook.CodingWebHook$PostTaskRunnable.run(CodingWebHook.java:172)
at hudson.security.ACL.impersonate(ACL.java:342)
at net.coding.jenkins.plugin.webhook.CodingWebHook.getDynamic(CodingWebHook.java:142)
at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:710)
at org.kohsuke.stapler.Function$MethodFunction.invoke(Function.java:396)
at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:408)
解决方案: