#feature: Jenkins 构建入口与自动创建 release 分支

加入 crm-web/crm-opm 并可跳转 Jenkins 发布页;自动创建 release 时 commit 使用 release-版本号,并跳过本地 git hook,避免 agent-be 被拦下。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-08-14 09:14:57 +08:00
co-authored by Cursor
parent 103340536b
commit c45d68e201
7 changed files with 286 additions and 47 deletions
@@ -31,6 +31,7 @@ class JenkinsBuildController extends Controller
'slug' => $project->slug,
'name' => $project->name,
'jenkins_job_name' => $project->jenkins_job_name,
'jenkins_job_url' => $this->jenkinsClient->getJobUrl($project->jenkins_job_name),
'parameters' => $this->jenkinsClient->getParameterDefinitions($project->jenkins_job_name),
];
})
@@ -39,6 +40,7 @@ class JenkinsBuildController extends Controller
return response()->json([
'success' => true,
'data' => [
'jenkins_host' => rtrim((string) config('jenkins.host'), '/'),
'projects' => $projects,
],
]);
@@ -79,10 +81,14 @@ class JenkinsBuildController extends Controller
'project_slug' => $project->slug,
'project_name' => $project->name,
'job_name' => $project->jenkins_job_name,
'jenkins_job_url' => $this->jenkinsClient->getJobUrl($project->jenkins_job_name),
'success' => (bool) ($result['success'] ?? false),
'message' => $result['message'] ?? null,
'queue_url' => $result['queue_url'] ?? null,
'build_number' => $result['build_number'] ?? null,
'build_url' => isset($result['build_number'])
? $this->jenkinsClient->getJobUrl($project->jenkins_job_name, (int) $result['build_number'])
: null,
];
}
@@ -120,14 +126,23 @@ class JenkinsBuildController extends Controller
/** @var Project $project */
$project = $projects[$build['project_slug']];
$status = $this->jenkinsClient->getBuildStatus(
$project->jenkins_job_name,
$build['queue_url'] ?? null,
isset($build['build_number']) ? (int) $build['build_number'] : null
);
$buildNumber = $status['build_number'] ?? ($build['build_number'] ?? null);
$results[] = [
'id' => $build['id'],
'project_slug' => $project->slug,
'job_name' => $project->jenkins_job_name,
...$this->jenkinsClient->getBuildStatus(
$project->jenkins_job_name,
$build['queue_url'] ?? null,
isset($build['build_number']) ? (int) $build['build_number'] : null
'jenkins_job_url' => $this->jenkinsClient->getJobUrl($project->jenkins_job_name),
...$status,
'build_url' => $status['build_url'] ?? (
$buildNumber
? $this->jenkinsClient->getJobUrl($project->jenkins_job_name, (int) $buildNumber)
: null
),
];
}