diff --git a/docs/template/build.mdx b/docs/template/build.mdx index 8119f0b..588f95a 100644 --- a/docs/template/build.mdx +++ b/docs/template/build.mdx @@ -3,12 +3,14 @@ title: "Build" description: "How to build the template" --- -Configure the build process: +## Build and wait for completion + +The `build` method builds the template and waits for the build to complete. It returns build information including the template ID and build ID. ```typescript JavaScript & TypeScript wrap -Template.build(template, { +const buildInfo = await Template.build(template, { alias: 'my-template', // Template alias (required) cpuCount: 2, // CPU cores memoryMB: 2048, // Memory in MB @@ -17,10 +19,12 @@ Template.build(template, { apiKey: 'your-api-key', // Override API key domain: 'your-domain', // Override domain }) + +// buildInfo contains: { alias, templateId, buildId } ``` ```python Python wrap -Template.build( +build_info = Template.build( template, alias="my-template", # Template alias (required) cpu_count=2, # CPU cores @@ -30,6 +34,139 @@ Template.build( api_key="your-api-key", # Override API key domain="your-domain", # Override domain ) + +# build_info contains: BuildInfo(alias, template_id, build_id) +``` + + + +## Build in background + +The `buildInBackground` method starts the build process and returns immediately without waiting for completion. This is useful when you want to trigger a build and check its status later. + + + +```typescript JavaScript & TypeScript wrap +const buildInfo = await Template.buildInBackground(template, { + alias: 'my-template', + cpuCount: 2, + memoryMB: 2048, +}) + +// Returns immediately with: { alias, templateId, buildId } +``` + +```python Python wrap +build_info = Template.build_in_background( + template, + alias="my-template", + cpu_count=2, + memory_mb=2048, +) + +# Returns immediately with: BuildInfo(alias, template_id, build_id) +``` + + + +## Check build status + +Use `getBuildStatus` to check the status of a build started with `buildInBackground`. + + + +```typescript JavaScript & TypeScript wrap +const status = await Template.getBuildStatus(buildInfo, { + logsOffset: 0, // Optional: offset for fetching logs +}) + +// status contains: { status: 'building' | 'ready' | 'error', logEntries: [...] } +``` + +```python Python wrap +status = Template.get_build_status( + build_info, + logs_offset=0, # Optional: offset for fetching logs +) + +# status contains build status and logs +``` + + + +## Example: Background build with status polling + + + +```typescript JavaScript & TypeScript wrap +// Start build in background +const buildInfo = await Template.buildInBackground(template, { + alias: 'my-template', + cpuCount: 2, + memoryMB: 2048, +}) + +// Poll for build status +let logsOffset = 0 +let status = 'building' + +while (status === 'building') { + const buildStatus = await Template.getBuildStatus(buildInfo, { + logsOffset, + }) + + logsOffset += buildStatus.logEntries.length + status = buildStatus.status + + buildStatus.logEntries.forEach( + (logEntry) => console.log(logEntry.toString()) + ) + + // Wait for a short period before checking the status again + await new Promise(resolve => setTimeout(resolve, 2000)) +} + +if (status === 'ready') { + console.log('Build completed successfully') +} else { + console.error('Build failed') +} +``` + +```python Python wrap +# Start build in background +build_info = Template.build_in_background( + template, + alias="my-template", + cpu_count=2, + memory_mb=2048, +) + +# Poll for build status +import time + +logs_offset = 0 +status = "building" + +while status == "building": + build_status = Template.get_build_status( + build_info, + logs_offset=logs_offset, + ) + + logs_offset += len(build_status.log_entries) + status = build_status.status.value + + for log_entry in build_status.log_entries: + print(log_entry) + + # Wait for a short period before checking the status again + time.sleep(2) + +if status == "ready": + print("Build completed successfully") +else: + print("Build failed") ```