ci: improve packaging failure diagnostics
This commit is contained in:
+28
-11
@@ -536,6 +536,33 @@ function safeReleasePath(filePath) {
|
|||||||
return resolved
|
return resolved
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function summarizeCommandOutput(value) {
|
||||||
|
const lines = String(value)
|
||||||
|
.replaceAll(ansiEscapeCharacter, '')
|
||||||
|
.replace(ansiSequenceSuffixPattern, '')
|
||||||
|
.replaceAll('\r', '\n')
|
||||||
|
.split('\n')
|
||||||
|
.map((line) => line.trim())
|
||||||
|
.filter(
|
||||||
|
(line) =>
|
||||||
|
line &&
|
||||||
|
!line.includes('duplicate dependency references')
|
||||||
|
)
|
||||||
|
.map((line) => line.slice(0, 800))
|
||||||
|
const important = lines.filter((line) =>
|
||||||
|
/error|failed|fatal|cannot|unable|enoent|codesign|hdiutil|exit code/iu.test(
|
||||||
|
line
|
||||||
|
)
|
||||||
|
)
|
||||||
|
return [
|
||||||
|
...new Set([
|
||||||
|
...lines.slice(0, 8),
|
||||||
|
...important,
|
||||||
|
...lines.slice(-14)
|
||||||
|
])
|
||||||
|
].join('\n').slice(-3_000)
|
||||||
|
}
|
||||||
|
|
||||||
function printHelp() {
|
function printHelp() {
|
||||||
console.log(`${productName} 跨平台发布构建
|
console.log(`${productName} 跨平台发布构建
|
||||||
|
|
||||||
@@ -639,17 +666,7 @@ if (require.main === module) {
|
|||||||
main().catch((error) => {
|
main().catch((error) => {
|
||||||
console.error(error)
|
console.error(error)
|
||||||
if (process.env.GITHUB_ACTIONS === 'true') {
|
if (process.env.GITHUB_ACTIONS === 'true') {
|
||||||
const outputLines = String(error.outputTail ?? '')
|
const details = `${error.message}\n${summarizeCommandOutput(error.outputTail ?? '')}`
|
||||||
.replaceAll(ansiEscapeCharacter, '')
|
|
||||||
.replace(ansiSequenceSuffixPattern, '')
|
|
||||||
.replaceAll('\r', '\n')
|
|
||||||
.split('\n')
|
|
||||||
.filter(
|
|
||||||
(line) =>
|
|
||||||
line.trim() &&
|
|
||||||
!line.includes('duplicate dependency references')
|
|
||||||
)
|
|
||||||
const details = `${error.message}\n${outputLines.join('\n').slice(-3_000)}`
|
|
||||||
.replace(
|
.replace(
|
||||||
/((?:authorization|_authToken|api[_-]?key|password)\s*[:=]\s*)\S+/giu,
|
/((?:authorization|_authToken|api[_-]?key|password)\s*[:=]\s*)\S+/giu,
|
||||||
'$1[redacted]'
|
'$1[redacted]'
|
||||||
|
|||||||
@@ -96,13 +96,19 @@ async function downloadPackage(projectDir, packageName, integrity) {
|
|||||||
{
|
{
|
||||||
cwd: projectDir,
|
cwd: projectDir,
|
||||||
encoding: 'utf8',
|
encoding: 'utf8',
|
||||||
|
maxBuffer: 16 * 1024 * 1024,
|
||||||
shell: false,
|
shell: false,
|
||||||
windowsHide: true
|
windowsHide: true
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
if (result.status !== 0) {
|
if (result.status !== 0) {
|
||||||
throw new Error(
|
throw new Error(
|
||||||
`Unable to fetch ${packageName}: ${result.stderr || result.stdout}`
|
`Unable to fetch ${packageName}: ${
|
||||||
|
result.error?.message ||
|
||||||
|
result.stderr ||
|
||||||
|
result.stdout ||
|
||||||
|
`npm exited with ${result.status}`
|
||||||
|
}`
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
const output = JSON.parse(result.stdout)
|
const output = JSON.parse(result.stdout)
|
||||||
|
|||||||
Reference in New Issue
Block a user