掘金 人工智能 前天 11:05
Coze智能体开发实战-单Agent综合实战
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文详细介绍了如何利用Gitee Webhooks,结合PHP脚本和Coze平台的工作流功能,实现自动化代码审查。通过设置Webhooks,当代码提交到Gitee仓库时,触发PHP脚本,该脚本会拉取代码,获取增量代码,并将其传递给Coze平台的工作流进行审查。审查结果通过消息推送给企业微信机器人。整个过程实现了代码提交后的自动化审查,提高了代码质量和开发效率。

📌 创建Gitee Webhook: 在Gitee仓库管理界面添加Webhook,配置URL(指向部署的PHP脚本),选择push事件,并可设置密码以增强安全性。URL需要是外网可直接访问的地址。

💻 PHP脚本实现: 编写PHP脚本,用于接收Gitee Webhook的推送数据。脚本首先克隆或拉取仓库代码,然后获取增量代码,并调用Coze平台的API。

⚙️ Coze工作流配置: 在Coze平台创建工作流,用于代码审查。工作流接收增量代码作为输入,进行代码规范检查,并根据检查结果推送消息到企业微信机器人。

🔑 API密钥和Token: 在Coze平台获取个人访问令牌,用于PHP脚本调用Coze API。将令牌和工作流ID配置到PHP脚本中。

🚀 自动化流程: 当代码推送到Gitee仓库时,Webhook触发PHP脚本,脚本执行代码拉取、增量代码获取和API调用,实现代码的自动化审查。

添加Webhooks

第1步: 创建gitee账号,步骤省。

第2步:某仓库 - 管理 - 添加webHook

第3步:填写URL、勾选pull,不设密码

第4步:index.php源码

<?php // 步骤1:检查仓库是否存在,若不存在则克隆function cloneRepoIfNotExists($repoUrl, $localPath) {    if (!is_dir($localPath)) {         $command = "git clone $repoUrl $localPath";        exec($command, $output, $returnCode);        if ($returnCode === 0) {            return true;        } else {            echo "Failed to clone repository: " . implode("\n", $output) . "\n";            return false;        }    }    return true;}// 步骤2:拉取最新代码function gitPull($localPath) {    chdir($localPath);    $command = "git pull";    exec($command, $output, $returnCode);    if ($returnCode === 0) {        return true;    } else {        echo "Failed to pull the latest code: " . implode("\n", $output) . "\n";        return false;    }}// 步骤3:获取增量代码function getIncrementlCode($oldCommit, $newCommit, $localPath) {    chdir($localPath);    // 执行 git diff 命令获取增量代码    $command = "git diff $oldCommit $newCommit";    exec($command, $output, $returnCode);    if ($returnCode === 0) {        // 将输出合并为一个字符串        $incrementalCode = implode("\n", $output);        return $incrementalCode;    } else {        echo "Failed to get incremental code: " . implode("\n", $output) . "\n";        return null;    }}// 步骤4:改写curl代码为PHP调用接口的方式function callApi($incrementalCode) {    $url = 'https://api.coze.cn/v1/workflow/run';    $token = '你自己的coze令牌';    $workflowId = '你自己的工作流ID';    $data = [        "parameters" => [            "input" => $incrementalCode        ],        "workflow_id" => $workflowId    ];    $dataJson = json_encode($data);    $ch = curl_init($url);    curl_setopt($ch, CURLOPT_POST, 1);    curl_setopt($ch, CURLOPT_POSTFIELDS, $dataJson);    curl_setopt($ch, CURLOPT_HTTPHEADER, [        "Authorization: Bearer $token",        "Content-Type: application/json"    ]);    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);    $response = curl_exec($ch);    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); // 修正:curl_getinfo 用于获取 HTTP 状态码    curl_close($ch);    return [        'http_code' => $httpCode,        'response' => $response    ];}// 步骤5: 处理 Gitee Webhook请求// 假设Gitee Webhook 发送的是JSON数据$inputJSON = file_get_contents('php://input'); // 修正:file_get_content -> file_get_contents$input = json_decode($inputJSON, TRUE);// 检查是否为 push 事件if ($input && isset($input['ref']) && isset($input['before']) && isset($input['after']) && isset($input['repository']['git_http_url'])) {    $oldCommit = $input['before'];    $newCommit = $input['after'];    $repoUrl = $input['repository']['git_http_url'];    $repoName = basename($repoUrl, '.git');    $localRepoPath = __DIR__ . '/' . $repoName;    // 检查并克隆仓库    if (cloneRepoIfNotExists($repoUrl, $localRepoPath)) {        // 执行 git pull 操作        if (gitPull($localRepoPath)) {            // 获取增量代码            $incrementalCode = getIncrementlCode($oldCommit, $newCommit, $localRepoPath);            if ($incrementalCode) {                // 调用 API 并传递增量代码                $result = callApi($incrementalCode);            }        }    }}

代码审查工作流

原理:提交代码后,通过Webhooks,调用工作流检查代码是否符合规范,如果不符合,推送消息给企业微信机器人。

第1步:工作空间 - 资源库 - “+资源” - 工作流

第2步:连接“大模型”

第3步:测试节点

第4步:连接“结束”节点

第5步:试运行

第6步:发布

第7步:工作空间 - 资源库 - 工作流

第8步:单击“check_python_code“名称

复制workflow_id的值,替换index.php的$workflowId的值

第9步:让外部应用访问我们的工作流

第10步:扣子API - 授权 - 个人访问令牌 - 添加新令牌

第11步:弹出对话框里,一定要复制好令牌。因为只显示一次。替换index.php里$token的值。

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

Gitee Webhooks 代码审查 Coze
相关文章