infra-kit 0.1.85 → 0.1.87
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintcache +1 -1
- package/.turbo/turbo-eslint-check.log +4 -5
- package/.turbo/turbo-prettier-check.log +4 -5
- package/.turbo/turbo-prettier-fix.log +10 -0
- package/.turbo/turbo-test.log +14 -17
- package/.turbo/turbo-ts-check.log +4 -5
- package/dist/cli.js +26 -26
- package/dist/cli.js.map +4 -4
- package/dist/mcp.js +23 -23
- package/dist/mcp.js.map +4 -4
- package/package.json +3 -3
- package/src/commands/env-clear/env-clear.ts +2 -1
- package/src/commands/env-list/env-list.ts +2 -1
- package/src/commands/env-load/env-load.ts +5 -2
- package/src/commands/env-status/env-status.ts +2 -1
- package/src/commands/gh-merge-dev/gh-merge-dev.ts +8 -2
- package/src/commands/gh-release-deliver/gh-release-deliver.ts +3 -2
- package/src/commands/gh-release-deploy-all/gh-release-deploy-all.ts +13 -4
- package/src/commands/gh-release-deploy-selected/gh-release-deploy-selected.ts +18 -5
- package/src/commands/gh-release-list/gh-release-list.ts +2 -1
- package/src/commands/release-create/release-create.ts +3 -2
- package/src/commands/release-create-batch/release-create-batch.ts +5 -2
- package/src/commands/worktrees-add/worktrees-add.ts +26 -5
- package/src/commands/worktrees-list/worktrees-list.ts +2 -1
- package/src/commands/worktrees-remove/worktrees-remove.ts +14 -3
- package/src/commands/worktrees-sync/worktrees-sync.ts +2 -1
- package/src/entry/cli.ts +0 -18
- package/src/mcp/tools/index.ts +0 -2
- package/tsconfig.tsbuildinfo +1 -1
- package/.turbo/turbo-build.log +0 -11
- package/src/commands/gh-release-deploy-service/gh-release-deploy-service.ts +0 -193
- package/src/commands/gh-release-deploy-service/index.ts +0 -1
package/.turbo/turbo-build.log
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
> infra-kit@0.1.85 build /Users/arthur/projects/infra-kit/apps/infra-kit/cli
|
|
4
|
-
> pnpm run clean-artifacts && node ./scripts/build.js
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
> infra-kit@0.1.85 clean-artifacts /Users/arthur/projects/infra-kit/apps/infra-kit/cli
|
|
8
|
-
> rm -rf dist
|
|
9
|
-
|
|
10
|
-
✅ Build was completed successfully: cli.js - [33m0.0494[39m MB
|
|
11
|
-
✅ Build was completed successfully: mcp.js - [33m0.0424[39m MB
|
|
@@ -1,193 +0,0 @@
|
|
|
1
|
-
import select from '@inquirer/select'
|
|
2
|
-
import fs from 'node:fs/promises'
|
|
3
|
-
import { resolve } from 'node:path'
|
|
4
|
-
import process from 'node:process'
|
|
5
|
-
import yaml from 'yaml'
|
|
6
|
-
import { z } from 'zod'
|
|
7
|
-
import { $ } from 'zx'
|
|
8
|
-
|
|
9
|
-
import { getReleasePRsWithInfo } from 'src/integrations/gh'
|
|
10
|
-
import { commandEcho } from 'src/lib/command-echo'
|
|
11
|
-
import { ENVs } from 'src/lib/constants'
|
|
12
|
-
import { getProjectRoot } from 'src/lib/git-utils'
|
|
13
|
-
import { logger } from 'src/lib/logger'
|
|
14
|
-
import { detectReleaseType, formatBranchChoices, getJiraDescriptions } from 'src/lib/release-utils'
|
|
15
|
-
import type { ReleaseType } from 'src/lib/release-utils'
|
|
16
|
-
import type { ToolsExecutionResult } from 'src/types'
|
|
17
|
-
|
|
18
|
-
interface GhReleaseDeployServiceArgs {
|
|
19
|
-
version: string
|
|
20
|
-
env: string
|
|
21
|
-
service: string
|
|
22
|
-
skipTerraform?: boolean
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* Deploy a specific service in a release branch to an environment
|
|
27
|
-
*/
|
|
28
|
-
export const ghReleaseDeployService = async (args: GhReleaseDeployServiceArgs): Promise<ToolsExecutionResult> => {
|
|
29
|
-
const { version, env, service, skipTerraform } = args
|
|
30
|
-
|
|
31
|
-
commandEcho.start('release-deploy-service')
|
|
32
|
-
|
|
33
|
-
let selectedReleaseBranch = '' // "release/v1.8.0"
|
|
34
|
-
|
|
35
|
-
if (version) {
|
|
36
|
-
selectedReleaseBranch = version === 'dev' ? 'dev' : `release/v${version}`
|
|
37
|
-
} else {
|
|
38
|
-
commandEcho.setInteractive()
|
|
39
|
-
|
|
40
|
-
const releasePRsInfo = await getReleasePRsWithInfo()
|
|
41
|
-
|
|
42
|
-
const branches = releasePRsInfo.map((pr) => {
|
|
43
|
-
return pr.branch
|
|
44
|
-
})
|
|
45
|
-
|
|
46
|
-
const releaseTypes = new Map<string, ReleaseType>(
|
|
47
|
-
releasePRsInfo.map((pr) => {
|
|
48
|
-
return [pr.branch, detectReleaseType(pr.title)]
|
|
49
|
-
}),
|
|
50
|
-
)
|
|
51
|
-
|
|
52
|
-
const descriptions = await getJiraDescriptions()
|
|
53
|
-
|
|
54
|
-
selectedReleaseBranch = await select({
|
|
55
|
-
message: '🌿 Select release branch',
|
|
56
|
-
choices: [{ name: 'dev', value: 'dev' }, ...formatBranchChoices({ branches, descriptions, types: releaseTypes })],
|
|
57
|
-
})
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
const selectedVersion = selectedReleaseBranch === 'dev' ? 'dev' : selectedReleaseBranch.replace('release/v', '')
|
|
61
|
-
|
|
62
|
-
commandEcho.addOption('--version', selectedVersion)
|
|
63
|
-
|
|
64
|
-
let selectedEnv = ''
|
|
65
|
-
|
|
66
|
-
if (env) {
|
|
67
|
-
selectedEnv = env
|
|
68
|
-
} else {
|
|
69
|
-
commandEcho.setInteractive()
|
|
70
|
-
|
|
71
|
-
selectedEnv = await select({
|
|
72
|
-
message: '🧪 Select environment',
|
|
73
|
-
choices: ENVs.map((env) => {
|
|
74
|
-
return {
|
|
75
|
-
name: env,
|
|
76
|
-
value: env,
|
|
77
|
-
}
|
|
78
|
-
}),
|
|
79
|
-
})
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
commandEcho.addOption('--env', selectedEnv)
|
|
83
|
-
|
|
84
|
-
if (!ENVs.includes(selectedEnv)) {
|
|
85
|
-
logger.error(`❌ Invalid environment: ${selectedEnv}. Exiting...`)
|
|
86
|
-
process.exit(1)
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
// Parse available services from workflow file
|
|
90
|
-
const availableServices = await parseServicesFromWorkflow()
|
|
91
|
-
|
|
92
|
-
let selectedService = ''
|
|
93
|
-
|
|
94
|
-
if (service) {
|
|
95
|
-
selectedService = service
|
|
96
|
-
} else {
|
|
97
|
-
commandEcho.setInteractive()
|
|
98
|
-
|
|
99
|
-
selectedService = await select({
|
|
100
|
-
message: '🚀 Select service to deploy',
|
|
101
|
-
choices: availableServices.map((svc) => {
|
|
102
|
-
return {
|
|
103
|
-
name: svc,
|
|
104
|
-
value: svc,
|
|
105
|
-
}
|
|
106
|
-
}),
|
|
107
|
-
})
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
commandEcho.addOption('--service', selectedService)
|
|
111
|
-
|
|
112
|
-
if (!availableServices.includes(selectedService)) {
|
|
113
|
-
logger.error(`❌ Invalid service: ${selectedService}. Available services: ${availableServices.join(', ')}`)
|
|
114
|
-
process.exit(1)
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
const shouldSkipTerraform = skipTerraform ?? false
|
|
118
|
-
|
|
119
|
-
if (shouldSkipTerraform) {
|
|
120
|
-
commandEcho.addOption('--skip-terraform', true)
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
try {
|
|
124
|
-
$.quiet = true
|
|
125
|
-
|
|
126
|
-
const skipTerraformFlag = shouldSkipTerraform ? ['-f', 'skip_terraform_deploy=true'] : []
|
|
127
|
-
|
|
128
|
-
await $`gh workflow run deploy-single-service.yml --ref ${selectedReleaseBranch} -f environment=${selectedEnv} -f service=${selectedService} ${skipTerraformFlag}`
|
|
129
|
-
|
|
130
|
-
$.quiet = false
|
|
131
|
-
|
|
132
|
-
logger.info(
|
|
133
|
-
`Successfully launched deploy-single-service workflow_dispatch for release branch: ${selectedReleaseBranch}, environment: ${selectedEnv}, service: ${selectedService}`,
|
|
134
|
-
)
|
|
135
|
-
|
|
136
|
-
commandEcho.print()
|
|
137
|
-
|
|
138
|
-
const structuredContent = {
|
|
139
|
-
releaseBranch: selectedReleaseBranch,
|
|
140
|
-
version: selectedReleaseBranch.replace('release/v', ''),
|
|
141
|
-
environment: selectedEnv,
|
|
142
|
-
service: selectedService,
|
|
143
|
-
skipTerraformDeploy: shouldSkipTerraform,
|
|
144
|
-
success: true,
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
return {
|
|
148
|
-
content: [
|
|
149
|
-
{
|
|
150
|
-
type: 'text',
|
|
151
|
-
text: JSON.stringify(structuredContent, null, 2),
|
|
152
|
-
},
|
|
153
|
-
],
|
|
154
|
-
structuredContent,
|
|
155
|
-
}
|
|
156
|
-
} catch (error: unknown) {
|
|
157
|
-
logger.error({ error }, '❌ Error launching workflow')
|
|
158
|
-
process.exit(1)
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
/**
|
|
163
|
-
* Parse available services from the workflow file
|
|
164
|
-
*/
|
|
165
|
-
const parseServicesFromWorkflow = async (): Promise<string[]> => {
|
|
166
|
-
const projectRoot = await getProjectRoot()
|
|
167
|
-
const workflowPath = resolve(projectRoot, '.github/workflows/deploy-single-service.yml')
|
|
168
|
-
const content = await fs.readFile(workflowPath, 'utf-8')
|
|
169
|
-
const parsed = yaml.parse(content)
|
|
170
|
-
|
|
171
|
-
return parsed.on.workflow_dispatch.inputs.service.options
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
// MCP Tool Registration
|
|
175
|
-
export const ghReleaseDeployServiceMcpTool = {
|
|
176
|
-
name: 'gh-release-deploy-service',
|
|
177
|
-
description: 'Deploy a specific service in a release branch to a specified environment',
|
|
178
|
-
inputSchema: {
|
|
179
|
-
version: z.string().describe('Version to deploy (e.g., "1.2.5")'),
|
|
180
|
-
env: z.string().describe('Environment to deploy to (e.g., "dev", "renana", "oriana")'),
|
|
181
|
-
service: z.string().describe('Service to deploy (e.g., "client-be", "client-fe")'),
|
|
182
|
-
skipTerraform: z.boolean().optional().describe('Skip terraform deployment step'),
|
|
183
|
-
},
|
|
184
|
-
outputSchema: {
|
|
185
|
-
releaseBranch: z.string().describe('The release branch that was deployed'),
|
|
186
|
-
version: z.string().describe('The version that was deployed'),
|
|
187
|
-
environment: z.string().describe('The environment deployed to'),
|
|
188
|
-
service: z.string().describe('The service that was deployed'),
|
|
189
|
-
skipTerraformDeploy: z.boolean().describe('Whether terraform deployment was skipped'),
|
|
190
|
-
success: z.boolean().describe('Whether the deployment was successful'),
|
|
191
|
-
},
|
|
192
|
-
handler: ghReleaseDeployService,
|
|
193
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { ghReleaseDeployService, ghReleaseDeployServiceMcpTool } from './gh-release-deploy-service'
|