Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
143 changes: 140 additions & 3 deletions docs/template/build.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -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.

<CodeGroup>

```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
Expand All @@ -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
Expand All @@ -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)
```

</CodeGroup>

## 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.

<CodeGroup>

```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)
```

</CodeGroup>

## Check build status

Use `getBuildStatus` to check the status of a build started with `buildInBackground`.

<CodeGroup>

```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
```

</CodeGroup>

## Example: Background build with status polling

<CodeGroup>

```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")
```

</CodeGroup>