+ 统一管理 SSH 密钥、Docker 密码、AKSK、数据库等敏感凭据(AES 加密存储) +
+暂无凭据
+创建 SSH、Docker、AKSK 等类型的凭据,供流水线和服务器使用
+ +| 名称 | +类型 | +摘要 | +标签 | +引用ID | +状态 | +操作 | +
|---|---|---|---|---|---|---|
|
+
+ {cfg ?
+
+
+ {cred.name}
+ {cred.variable_name && (
+ {cred.variable_name}
+ )}
+ |
+
+ |
+ + {cred.summary || '-'} + | +
+
+ {(cred.tags || []).slice(0, 3).map(t => (
+
+ |
+
+ { e.stopPropagation(); handleCopyPrefix(cred.env_prefix); }}>
+ {cred.env_prefix}
+
+ |
+
+
+ {cred.is_active ? (
+
+ |
+ e.stopPropagation()}>
+
+
+
+
+
+ |
+
| 名称 | +仓库 URL | +认证方式 | +状态 | +操作 | +
|---|---|---|---|---|
| {r.name} | +{r.url} | +
+ |
+
+
+
+
+
+ |
+
| 名称 | +Registry URL | +命名空间 | +认证 | +状态 | +操作 | +
|---|---|---|---|---|---|
| {r.name} | +{r.registry_url} | +{r.namespace || '-'} | +
+ |
+
+
+
+
+
+ |
+
| 环境标识 | +显示名称 | +类型 | +颜色 | +排序 | +状态 | +操作 | +
|---|---|---|---|---|---|---|
| {env.name} | ++ + + {env.display_name} + + | ++ | {env.sort_order} | +
+ |
+
+
+
+
+
+ |
+
+ Jenkins-style Role Strategy — 按流水线 code 正则匹配分配角色 +
++ 实时匹配: {(() => { try { const n = pipelines.filter(p => new RegExp(newPattern).test(p.code)).length; return n > 0 ? `✅ 命中 ${n} 条流水线` : '⚠️ 无匹配'; } catch { return '❌ 正则语法错误'; } })()} +
+ )} +暂无 Item Role
+{role.code}
+ →
+ {role.pattern}
+ {role.description && {role.description}}
+ 该用户尚未分配任何 Item Role
+ ) : ( +
+ {roleInfo.pattern}
+
+ )}
+ code: {pipeline.code} · {pipeline.description}
+| # | +状态 | +触发方式 | +触发人 | +分支 | +耗时 | +时间 | +操作 | +
|---|---|---|---|---|---|---|---|
| #{r.build_number || r.id} | +
+ {r.status === 'success' ? |
+
+ {r.trigger_mode === 'manual' && |
+ {r.triggered_by || 'admin'} | +{r.branch || '-'} | +{fmtDuration(r.duration)} | +{r.created_at ? new Date(r.created_at).toLocaleString('zh-CN') : '-'} | +
+
+
+ {(r.status === 'running' || r.status === 'pending') && (
+
+ )}
+
+ |
+
CI/CD 流水线配置与管理
+CI/CD 构建 · 部署 · 发布一体化
流水线总数
-{stats.total}
-运行中
-{stats.running}
-成功
-{stats.success}
-失败
-{stats.failed}
-暂无流水线数据
-{pipeline.description}
-{s.label}
{s.val}
暂无流水线
+{pipeline.description || '暂无描述'}
+| # | +状态 | +触发人 | +耗时 | +时间 | +操作 | +
|---|---|---|---|---|---|
| #{r.build_number || r.id} | +
+ {r.status === 'success' ? |
+ {r.triggered_by || 'admin'} | +{fmtDuration(r.duration)} | +{r.created_at ? new Date(r.created_at).toLocaleString('zh-CN') : '-'} | +
+
+
+ |
+
流水线 #{pipelineCode}
+暂无执行记录,点击"立即执行"触发构建
+| + 0} onChange={toggleAll} className="rounded" /> + | +构建 | +状态 | +触发方式 | +用户 | +耗时 | +时间 | +操作 | +
|---|---|---|---|---|---|---|---|
| e.stopPropagation()}> + toggleSelect(run.id)} className="rounded" /> + | ++ #{run.build_number} + | +
+ |
+
+ |
+
+ |
+
+ {run.status === 'running' ? (
+
+ |
+ + {formatTime(run.created_at)} + | + e.stopPropagation()}>
+
+
+ |
+
创建用户组,将组授权给流水线,组内成员自动获得流水线权限
+暂无用户组,点击「新建用户组」创建
+