#feature: add Jenkins batch build trigger

Add an admin Jenkins build page that reuses notification-enabled project config, loads Jenkins build parameters, supports persisted selections, and triggers selected jobs in one action.
This commit is contained in:
2026-06-01 18:03:33 +08:00
parent 1de5fe1ff9
commit ba916f5ce1
7 changed files with 867 additions and 27 deletions
+12 -10
View File
@@ -1,21 +1,22 @@
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\EnvController;
use App\Http\Controllers\JiraController;
use App\Http\Controllers\TestMailController;
use App\Http\Controllers\LogAnalysisController;
use App\Http\Controllers\MessageSyncController;
use App\Http\Controllers\MessageDispatchController;
use App\Http\Controllers\ProductionDiagnosisController;
use App\Http\Controllers\SqlGeneratorController;
use App\Http\Controllers\Admin\AdminMetaController;
use App\Http\Controllers\Admin\ConfigController;
use App\Http\Controllers\Admin\IpUserMappingController;
use App\Http\Controllers\Admin\JenkinsBuildController;
use App\Http\Controllers\Admin\JenkinsDeploymentController;
use App\Http\Controllers\Admin\OperationLogController;
use App\Http\Controllers\Admin\ProjectController;
use App\Http\Controllers\Admin\ScheduledTaskController;
use App\Http\Controllers\EnvController;
use App\Http\Controllers\JiraController;
use App\Http\Controllers\LogAnalysisController;
use App\Http\Controllers\MessageDispatchController;
use App\Http\Controllers\MessageSyncController;
use App\Http\Controllers\ProductionDiagnosisController;
use App\Http\Controllers\SqlGeneratorController;
use App\Http\Controllers\TestMailController;
use Illuminate\Support\Facades\Route;
// 环境管理API路由
Route::prefix('env')->group(function () {
@@ -51,7 +52,6 @@ Route::prefix('jira')->group(function () {
Route::get('/weekly-report/download', [JiraController::class, 'downloadWeeklyReport']);
});
// 提测邮件 API 路由
Route::prefix('test-mail')->group(function () {
Route::get('/sprints', [TestMailController::class, 'sprints']);
@@ -116,6 +116,8 @@ Route::prefix('admin')->middleware('admin.ip')->group(function () {
Route::post('/scheduled-tasks/{name}/toggle', [ScheduledTaskController::class, 'toggle']);
// Jenkins 发布历史
Route::get('/jenkins/build-projects', [JenkinsBuildController::class, 'projects']);
Route::post('/jenkins/trigger-builds', [JenkinsBuildController::class, 'trigger']);
Route::get('/jenkins/deployments', [JenkinsDeploymentController::class, 'index']);
Route::get('/jenkins/deployments/{id}', [JenkinsDeploymentController::class, 'show']);
});
+2 -1
View File
@@ -1,7 +1,7 @@
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\AdminController;
use Illuminate\Support\Facades\Route;
// 首页 - 显示admin框架
Route::get('/', [AdminController::class, 'index'])->name('home');
@@ -22,3 +22,4 @@ Route::get('/logs', [AdminController::class, 'index'])->name('admin.logs');
Route::get('/ip-mappings', [AdminController::class, 'index'])->name('admin.ip-mappings')->middleware('admin.ip');
Route::get('/projects', [AdminController::class, 'index'])->name('admin.projects')->middleware('admin.ip');
Route::get('/scheduled-tasks', [AdminController::class, 'index'])->name('admin.scheduled-tasks')->middleware('admin.ip');
Route::get('/jenkins-builds', [AdminController::class, 'index'])->name('admin.jenkins-builds')->middleware('admin.ip');