Skip to content

Commit 1180e8b

Browse files
committed
Show logs and build errors
1 parent fca6504 commit 1180e8b

File tree

3 files changed

+38
-27
lines changed

3 files changed

+38
-27
lines changed
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import * as API from "api/api";
2+
3+
export const templateVersionLogs = (versionId: string) => {
4+
return {
5+
queryKey: ["templateVersion", versionId, "logs"],
6+
queryFn: () => API.getTemplateVersionLogs(versionId),
7+
};
8+
};

site/src/api/queries/templates.ts

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -157,18 +157,16 @@ const waitBuildToBeFinished = async (version: TemplateVersion) => {
157157
} while (jobStatus === "pending" || jobStatus === "running");
158158

159159
// No longer pending/running, but didn't succeed
160-
throw new JobError(data.job);
160+
throw new JobError(data.job, version);
161161
};
162162

163-
class JobError extends Error {
164-
private job: ProvisionerJob;
163+
export class JobError extends Error {
164+
public job: ProvisionerJob;
165+
public version: TemplateVersion;
165166

166-
constructor(job: ProvisionerJob) {
167+
constructor(job: ProvisionerJob, version: TemplateVersion) {
167168
super(job.error);
168169
this.job = job;
169-
}
170-
171-
get code() {
172-
return this.job.error_code;
170+
this.version = version;
173171
}
174172
}

site/src/pages/CreateTemplatePage/CreateTemplatePage.tsx

Lines changed: 24 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,15 @@ import { CreateTemplateForm } from "./CreateTemplateForm";
1111
import { ErrorAlert } from "components/Alert/ErrorAlert";
1212
import { useMutation, useQuery } from "@tanstack/react-query";
1313
import {
14+
JobError,
1415
createTemplate,
1516
templateByName,
1617
templateVersion,
1718
templateVersionVariables,
1819
} from "api/queries/templates";
1920
import { ProvisionerType } from "api/typesGenerated";
2021
import { calculateAutostopRequirementDaysValue } from "utils/schedule";
22+
import { templateVersionLogs } from "api/queries/templateVersions";
2123

2224
const provisioner: ProvisionerType =
2325
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- Playwright needs to use a different provisioner type!
@@ -122,17 +124,15 @@ const DuplicateTemplateView = () => {
122124
const templateByNameQuery = useQuery(
123125
templateByName(organizationId, searchParams.get("fromTemplate")!),
124126
);
127+
const activeVersionId =
128+
templateByNameQuery.data?.template.active_version_id ?? "";
125129
const templateVersionQuery = useQuery({
126-
...templateVersion(
127-
templateByNameQuery.data?.template.active_version_id ?? "",
128-
),
129-
enabled: templateByNameQuery.data !== undefined,
130+
...templateVersion(activeVersionId),
131+
enabled: templateByNameQuery.isSuccess,
130132
});
131133
const templateVersionVariablesQuery = useQuery({
132-
...templateVersionVariables(
133-
templateByNameQuery.data?.template.active_version_id ?? "",
134-
),
135-
enabled: templateByNameQuery.data !== undefined,
134+
...templateVersionVariables(activeVersionId),
135+
enabled: templateByNameQuery.isSuccess,
136136
});
137137
const isLoading =
138138
templateByNameQuery.isLoading ||
@@ -146,6 +146,12 @@ const DuplicateTemplateView = () => {
146146
const formEntitlements = useFormEntitlements();
147147

148148
const createTemplateMutation = useMutation(createTemplate());
149+
const createError = createTemplateMutation.error;
150+
const isJobError = createError instanceof JobError;
151+
const templateVersionLogsQuery = useQuery({
152+
...templateVersionLogs(isJobError ? createError.version.id : ""),
153+
enabled: isJobError,
154+
});
149155

150156
if (isLoading) {
151157
return <Loader />;
@@ -176,13 +182,20 @@ const DuplicateTemplateView = () => {
176182
});
177183
navigate(`/templates/${template.name}`);
178184
}}
179-
180-
// jobError={jobError}
181-
// logs={jobLogs}
185+
jobError={isJobError ? createError.job.error : undefined}
186+
logs={templateVersionLogsQuery.data}
182187
/>
183188
);
184189
};
185190

191+
const ImportStaterTemplateView = () => {
192+
return <div>Import</div>;
193+
};
194+
195+
const UploadTemplateView = () => {
196+
return <div>Upload</div>;
197+
};
198+
186199
const useFormEntitlements = () => {
187200
const { entitlements } = useDashboard();
188201
const allowAdvancedScheduling =
@@ -201,14 +214,6 @@ const useFormEntitlements = () => {
201214
};
202215
};
203216

204-
const ImportStaterTemplateView = () => {
205-
return <div>Import</div>;
206-
};
207-
208-
const UploadTemplateView = () => {
209-
return <div>Upload</div>;
210-
};
211-
212217
const prepareData = (formData: CreateTemplateData) => {
213218
const {
214219
default_ttl_hours,

0 commit comments

Comments
 (0)