♻️ refactor(vscode): 设置项 autoBuildBranch 换成发布分支前缀与 Jenkins 任务
Claude-Session: https://claude.ai/code/session_01HTMgwaE3woqM5yvsHiuSAa
This commit is contained in:
1 parent
fa32d4a88b
commit
6f59b4f3fd
13 files changed
+149
-66
No files matched your search
@@ -523,7 +523,9 @@ export function App() {
|
||||
initialAutoReview={settings?.autoReview ?? true}
|
||||
initialReviewPrompt={settings?.reviewPrompt ?? ''}
|
||||
initialDevBranch={settings?.devBranch ?? 'main'}
|
||||
initialAutoBuildBranch={settings?.autoBuildBranch ?? ''}
|
||||
initialReleaseBranchPrefix={settings?.releaseBranchPrefix ?? 'release/'}
|
||||
initialJenkinsJob={settings?.jenkinsJob ?? ''}
|
||||
initialJenkinsProdHost={settings?.jenkinsProdHost ?? '正式服'}
|
||||
initialWorktreeDirectory={settings?.worktreeDirectory ?? ''}
|
||||
initialWorktreeOpenWith={settings?.worktreeOpenWith ?? 'vscode'}
|
||||
initialPycharmCommand={settings?.pycharmCommand ?? 'pycharm'}
|
||||
|
||||
@@ -26,7 +26,9 @@ interface SubmitValues {
|
||||
autoReview: boolean
|
||||
reviewPrompt: string
|
||||
devBranch: string
|
||||
autoBuildBranch: string
|
||||
releaseBranchPrefix: string
|
||||
jenkinsJob: string
|
||||
jenkinsProdHost: string
|
||||
worktreeDirectory: string
|
||||
worktreeOpenWith: 'vscode' | 'pycharm'
|
||||
pycharmCommand: string
|
||||
@@ -73,7 +75,9 @@ export interface SettingsModalProps {
|
||||
initialAutoReview: boolean
|
||||
initialReviewPrompt: string
|
||||
initialDevBranch: string
|
||||
initialAutoBuildBranch: string
|
||||
initialReleaseBranchPrefix: string
|
||||
initialJenkinsJob: string
|
||||
initialJenkinsProdHost: string
|
||||
initialWorktreeDirectory: string
|
||||
initialWorktreeOpenWith: 'vscode' | 'pycharm'
|
||||
initialPycharmCommand: string
|
||||
@@ -156,7 +160,9 @@ export function SettingsModal({
|
||||
initialAutoReview,
|
||||
initialReviewPrompt,
|
||||
initialDevBranch,
|
||||
initialAutoBuildBranch,
|
||||
initialReleaseBranchPrefix,
|
||||
initialJenkinsJob,
|
||||
initialJenkinsProdHost,
|
||||
initialWorktreeDirectory,
|
||||
initialWorktreeOpenWith,
|
||||
initialPycharmCommand,
|
||||
@@ -191,7 +197,9 @@ export function SettingsModal({
|
||||
const [autoReview, setAutoReview] = useState(initialAutoReview)
|
||||
const [reviewPrompt, setReviewPrompt] = useState(initialReviewPrompt)
|
||||
const [devBranch, setDevBranch] = useState(initialDevBranch)
|
||||
const [autoBuildBranch, setAutoBuildBranch] = useState(initialAutoBuildBranch)
|
||||
const [releaseBranchPrefix, setReleaseBranchPrefix] = useState(initialReleaseBranchPrefix)
|
||||
const [jenkinsJob, setJenkinsJob] = useState(initialJenkinsJob)
|
||||
const [jenkinsProdHost, setJenkinsProdHost] = useState(initialJenkinsProdHost)
|
||||
const [worktreeDirectory, setWorktreeDirectory] = useState(initialWorktreeDirectory)
|
||||
const [worktreeOpenWith, setWorktreeOpenWith] = useState(initialWorktreeOpenWith)
|
||||
const [pycharmCommand, setPycharmCommand] = useState(initialPycharmCommand)
|
||||
@@ -228,7 +236,9 @@ export function SettingsModal({
|
||||
setAutoReview(initialAutoReview)
|
||||
setReviewPrompt(initialReviewPrompt)
|
||||
setDevBranch(initialDevBranch)
|
||||
setAutoBuildBranch(initialAutoBuildBranch)
|
||||
setReleaseBranchPrefix(initialReleaseBranchPrefix)
|
||||
setJenkinsJob(initialJenkinsJob)
|
||||
setJenkinsProdHost(initialJenkinsProdHost)
|
||||
setWorktreeDirectory(initialWorktreeDirectory)
|
||||
setWorktreeOpenWith(initialWorktreeOpenWith)
|
||||
setPycharmCommand(initialPycharmCommand)
|
||||
@@ -313,7 +323,9 @@ export function SettingsModal({
|
||||
autoReview,
|
||||
reviewPrompt,
|
||||
devBranch: devBranch.trim(),
|
||||
autoBuildBranch: autoBuildBranch.trim(),
|
||||
releaseBranchPrefix: releaseBranchPrefix.trim(),
|
||||
jenkinsJob: jenkinsJob.trim(),
|
||||
jenkinsProdHost: jenkinsProdHost.trim(),
|
||||
// worktree 目录模板:trim 后留空 = 用默认模板(getSettings 读时回退)
|
||||
worktreeDirectory: worktreeDirectory.trim(),
|
||||
worktreeOpenWith,
|
||||
@@ -455,7 +467,7 @@ export function SettingsModal({
|
||||
日常推送的分支,留空默认
|
||||
{' '}
|
||||
<code>main</code>
|
||||
。同步按钮把这条分支的最新提交快进到下面的构建分支。
|
||||
。发布按钮从这条分支切发布分支、统计未发布提交。
|
||||
</>
|
||||
)}
|
||||
>
|
||||
@@ -469,18 +481,43 @@ export function SettingsModal({
|
||||
</Field>
|
||||
|
||||
<Field
|
||||
label="自动化构建分支"
|
||||
label="发布分支前缀"
|
||||
hint="线上跑的发布分支名前缀,默认 release/,按钮会自动取最新的一个"
|
||||
>
|
||||
<input
|
||||
type="text"
|
||||
value={releaseBranchPrefix}
|
||||
onChange={e => setReleaseBranchPrefix(e.target.value)}
|
||||
placeholder="release/"
|
||||
className={inputClass}
|
||||
/>
|
||||
</Field>
|
||||
|
||||
<Field
|
||||
label="Jenkins 任务名"
|
||||
hint={(
|
||||
<>
|
||||
gitea webhook → Jenkins 监听的分支。留空表示与开发分支相同,同步按钮会一直禁用。
|
||||
留空则不显示「部署到正式服」;触发时执行
|
||||
{' '}
|
||||
<code>opencli jks build <任务名> -p REF=… -p REMOTE_HOST=…</code>
|
||||
</>
|
||||
)}
|
||||
>
|
||||
<input
|
||||
type="text"
|
||||
value={autoBuildBranch}
|
||||
onChange={e => setAutoBuildBranch(e.target.value)}
|
||||
placeholder="留空 = 与开发分支相同"
|
||||
value={jenkinsJob}
|
||||
onChange={e => setJenkinsJob(e.target.value)}
|
||||
placeholder="留空 = 不提供部署"
|
||||
className={inputClass}
|
||||
/>
|
||||
</Field>
|
||||
|
||||
<Field label="正式服 REMOTE_HOST 值">
|
||||
<input
|
||||
type="text"
|
||||
value={jenkinsProdHost}
|
||||
onChange={e => setJenkinsProdHost(e.target.value)}
|
||||
placeholder="正式服"
|
||||
className={inputClass}
|
||||
/>
|
||||
</Field>
|
||||
|
||||
@@ -44,7 +44,9 @@ export interface SettingsValues {
|
||||
autoReview: boolean
|
||||
reviewPrompt: string
|
||||
devBranch: string
|
||||
autoBuildBranch: string
|
||||
releaseBranchPrefix: string
|
||||
jenkinsJob: string
|
||||
jenkinsProdHost: string
|
||||
worktreeDirectory: string
|
||||
worktreeOpenWith: 'vscode' | 'pycharm'
|
||||
pycharmCommand: string
|
||||
@@ -77,7 +79,9 @@ export interface SettingsOverlayState {
|
||||
autoReview: boolean
|
||||
reviewPrompt: string
|
||||
devBranch: string
|
||||
autoBuildBranch: string
|
||||
releaseBranchPrefix: string
|
||||
jenkinsJob: string
|
||||
jenkinsProdHost: string
|
||||
worktreeDirectory: string
|
||||
worktreeOpenWith: 'vscode' | 'pycharm'
|
||||
pycharmCommand: string
|
||||
@@ -369,7 +373,9 @@ export function useIssues(): UseIssuesResult {
|
||||
autoReview: values.autoReview,
|
||||
reviewPrompt: values.reviewPrompt,
|
||||
devBranch: values.devBranch,
|
||||
autoBuildBranch: values.autoBuildBranch,
|
||||
releaseBranchPrefix: values.releaseBranchPrefix,
|
||||
jenkinsJob: values.jenkinsJob,
|
||||
jenkinsProdHost: values.jenkinsProdHost,
|
||||
worktreeDirectory: values.worktreeDirectory,
|
||||
worktreeOpenWith: values.worktreeOpenWith,
|
||||
pycharmCommand: values.pycharmCommand,
|
||||
@@ -756,7 +762,9 @@ export function useIssues(): UseIssuesResult {
|
||||
autoReview: msg.autoReview,
|
||||
reviewPrompt: msg.reviewPrompt,
|
||||
devBranch: msg.devBranch,
|
||||
autoBuildBranch: msg.autoBuildBranch,
|
||||
releaseBranchPrefix: msg.releaseBranchPrefix,
|
||||
jenkinsJob: msg.jenkinsJob,
|
||||
jenkinsProdHost: msg.jenkinsProdHost,
|
||||
worktreeDirectory: msg.worktreeDirectory,
|
||||
worktreeOpenWith: msg.worktreeOpenWith,
|
||||
pycharmCommand: msg.pycharmCommand,
|
||||
|
||||
@@ -88,7 +88,9 @@ export type ExtensionToWebview
|
||||
autoReview: boolean
|
||||
reviewPrompt: string
|
||||
devBranch: string
|
||||
autoBuildBranch: string
|
||||
releaseBranchPrefix: string
|
||||
jenkinsJob: string
|
||||
jenkinsProdHost: string
|
||||
worktreeDirectory: string
|
||||
worktreeOpenWith: 'vscode' | 'pycharm'
|
||||
pycharmCommand: string
|
||||
@@ -124,13 +126,15 @@ export type ExtensionToWebview
|
||||
| { type: 'logs/cleared' }
|
||||
| { type: 'commit/state', running: boolean }
|
||||
| { type: 'commit/has-changes', value: boolean }
|
||||
// 发布点状态:nextBranch 是今天要切的分支全名,由扩展侧算好,webview 不自己拼日期。
|
||||
| {
|
||||
type: 'branch-sync/status'
|
||||
behind: number
|
||||
type: 'release/status'
|
||||
devBranch: string
|
||||
autoBuildBranch: string
|
||||
unavailable?: boolean
|
||||
reason?: string
|
||||
current?: string
|
||||
nextBranch: string
|
||||
unreleased: number
|
||||
unavailable?: string
|
||||
running: boolean
|
||||
}
|
||||
| { type: 'env-lock/status', locked: boolean, fileCount: number, failedCount?: number }
|
||||
| { type: 'issue/remove', issueNumber: number }
|
||||
@@ -160,7 +164,9 @@ export type WebviewToExtension
|
||||
autoReview: boolean
|
||||
reviewPrompt: string
|
||||
devBranch: string
|
||||
autoBuildBranch: string
|
||||
releaseBranchPrefix: string
|
||||
jenkinsJob: string
|
||||
jenkinsProdHost: string
|
||||
worktreeDirectory: string
|
||||
worktreeOpenWith: 'vscode' | 'pycharm'
|
||||
pycharmCommand: string
|
||||
@@ -215,8 +221,10 @@ export type WebviewToExtension
|
||||
| { type: 'logs/clear' }
|
||||
| { type: 'commit/run' }
|
||||
| { type: 'session/close-tab', issueNumber: number, kind: 'brainstorm' | 'implement' | 'review' | 'test' }
|
||||
| { type: 'branch-sync/check' }
|
||||
| { type: 'branch-sync/run' }
|
||||
| { type: 'release/check' }
|
||||
| { type: 'release/cut' }
|
||||
| { type: 'release/cherry-pick' }
|
||||
| { type: 'release/deploy' }
|
||||
| { type: 'env-lock/check' }
|
||||
| { type: 'env-lock/toggle' }
|
||||
| { type: 'issue/delete', issueNumber: number }
|
||||
|
||||
Reference in new issue
Block a user