fix netlify deploy output and uploads (#2107)

Co-authored-by: embire2 <ceo@openweb.co.za>
This commit is contained in:
Keoma Wright
2026-02-05 22:45:56 +02:00
committed by GitHub
parent 3f6050b227
commit 409696fa3c
7 changed files with 114 additions and 31 deletions

View File

@@ -7,6 +7,7 @@ import { useState } from 'react';
import type { ActionCallbackData } from '~/lib/runtime/message-parser';
import { chatId } from '~/lib/persistence/useChatHistory';
import { getLocalStorage } from '~/lib/persistence/localStorage';
import { formatBuildFailureOutput } from './deployUtils';
export function useGitHubDeploy() {
const [isDeploying, setIsDeploying] = useState(false);
@@ -65,10 +66,12 @@ export function useGitHubDeploy() {
// Then run it
await artifact.runner.runAction(actionData);
if (!artifact.runner.buildOutput) {
const buildOutput = artifact.runner.buildOutput;
if (!buildOutput || buildOutput.exitCode !== 0) {
// Notify that build failed
deployArtifact.runner.handleDeployAction('building', 'failed', {
error: 'Build failed. Check the terminal for details.',
error: formatBuildFailureOutput(buildOutput?.output),
source: 'github',
});
throw new Error('Build failed');

View File

@@ -7,6 +7,7 @@ import { useState } from 'react';
import type { ActionCallbackData } from '~/lib/runtime/message-parser';
import { chatId } from '~/lib/persistence/useChatHistory';
import { getLocalStorage } from '~/lib/persistence/localStorage';
import { formatBuildFailureOutput } from './deployUtils';
export function useGitLabDeploy() {
const [isDeploying, setIsDeploying] = useState(false);
@@ -65,10 +66,12 @@ export function useGitLabDeploy() {
// Then run it
await artifact.runner.runAction(actionData);
if (!artifact.runner.buildOutput) {
const buildOutput = artifact.runner.buildOutput;
if (!buildOutput || buildOutput.exitCode !== 0) {
// Notify that build failed
deployArtifact.runner.handleDeployAction('building', 'failed', {
error: 'Build failed. Check the terminal for details.',
error: formatBuildFailureOutput(buildOutput?.output),
source: 'gitlab',
});
throw new Error('Build failed');

View File

@@ -7,6 +7,7 @@ import { path } from '~/utils/path';
import { useState } from 'react';
import type { ActionCallbackData } from '~/lib/runtime/message-parser';
import { chatId } from '~/lib/persistence/useChatHistory';
import { formatBuildFailureOutput } from './deployUtils';
export function useNetlifyDeploy() {
const [isDeploying, setIsDeploying] = useState(false);
@@ -65,10 +66,12 @@ export function useNetlifyDeploy() {
// Then run it
await artifact.runner.runAction(actionData);
if (!artifact.runner.buildOutput) {
const buildOutput = artifact.runner.buildOutput;
if (!buildOutput || buildOutput.exitCode !== 0) {
// Notify that build failed
deployArtifact.runner.handleDeployAction('building', 'failed', {
error: 'Build failed. Check the terminal for details.',
error: formatBuildFailureOutput(buildOutput?.output),
source: 'netlify',
});
throw new Error('Build failed');
@@ -81,7 +84,7 @@ export function useNetlifyDeploy() {
const container = await webcontainer;
// Remove /home/project from buildPath if it exists
const buildPath = artifact.runner.buildOutput.path.replace('/home/project', '');
const buildPath = buildOutput.path.replace('/home/project', '');
console.log('Original buildPath', buildPath);

View File

@@ -7,6 +7,7 @@ import { path } from '~/utils/path';
import { useState } from 'react';
import type { ActionCallbackData } from '~/lib/runtime/message-parser';
import { chatId } from '~/lib/persistence/useChatHistory';
import { formatBuildFailureOutput } from './deployUtils';
export function useVercelDeploy() {
const [isDeploying, setIsDeploying] = useState(false);
@@ -64,10 +65,12 @@ export function useVercelDeploy() {
// Then run it
await artifact.runner.runAction(actionData);
if (!artifact.runner.buildOutput) {
const buildOutput = artifact.runner.buildOutput;
if (!buildOutput || buildOutput.exitCode !== 0) {
// Notify that build failed
deployArtifact.runner.handleDeployAction('building', 'failed', {
error: 'Build failed. Check the terminal for details.',
error: formatBuildFailureOutput(buildOutput?.output),
source: 'vercel',
});
throw new Error('Build failed');
@@ -80,7 +83,7 @@ export function useVercelDeploy() {
const container = await webcontainer;
// Remove /home/project from buildPath if it exists
const buildPath = artifact.runner.buildOutput.path.replace('/home/project', '');
const buildPath = buildOutput.path.replace('/home/project', '');
// Check if the build path exists
let finalBuildPath = buildPath;

View File

@@ -0,0 +1,15 @@
const MAX_BUILD_OUTPUT_CHARS = 4000;
export function formatBuildFailureOutput(output?: string) {
const trimmed = output?.trim();
if (!trimmed) {
return 'Build failed with no output captured.';
}
if (trimmed.length <= MAX_BUILD_OUTPUT_CHARS) {
return trimmed;
}
return `Build output (truncated):\n${trimmed.slice(-MAX_BUILD_OUTPUT_CHARS)}`;
}