Skip to main content

signaloid-cli builds

Create and manage builds on Signaloid Cloud Compute Engine.

Synopsis

signaloid-cli builds <command> [options]

Description

The builds command group allows you to create builds from source code or repositories, monitor build progress, and manage build artifacts. Builds compile your C/C++/Fortran code on Signaloid's specialized cores.

Subcommands

  • list - List all builds
  • get - Get details about a specific build
  • create:source - Create a build from a local source file
  • create:repo - Create a build from a connected repository
  • status - Check build status
  • watch - Wait for build completion
  • output - Get build output (logs)
  • output-urls - Get URLs to build outputs
  • cancel - Cancel a running build
  • delete - Delete a build

Complete Build Workflow

#!/bin/bash

# Method 1: Build from source file
echo "Creating build from source..."
BUILD_RESPONSE=$(signaloid-cli builds create:source \
--file main.c \
--lang C \
--args "--argA")

BUILD_ID=$(echo $BUILD_RESPONSE | jq -r '.BuildID')
echo "✓ Build created: $BUILD_ID"

# Wait for completion
echo "Waiting for build..."
if signaloid-cli builds watch --build-id $BUILD_ID; then
echo "✓ Build completed successfully"

# Get build output
signaloid-cli builds output --build-id $BUILD_ID --out build.log
echo "✓ Build output saved to build.log"

# Create and run task
TASK_ID=$(signaloid-cli tasks create --build-id $BUILD_ID | \
jq -r '.TaskID')
echo "✓ Task created: $TASK_ID"

# Wait for task
signaloid-cli tasks watch --task-id $TASK_ID
signaloid-cli tasks output --task-id $TASK_ID
else
echo "✗ Build failed"
signaloid-cli builds output --build-id $BUILD_ID
exit 1
fi

Build Management Script

#!/bin/bash

# List recent failed builds
echo "Recent failed builds:"
signaloid-cli builds list --status "Failed" --limit 5 | \
jq -r '.Builds[] | "\(.BuildID): \(.CreatedAt)"'

# Clean up old builds (older than 30 days)
THIRTY_DAYS_AGO=$(date -u -d '30 days ago' +%Y-%m-%dT%H:%M:%SZ)

signaloid-cli builds list --to $THIRTY_DAYS_AGO | \
jq -r '.Builds[].BuildID' | \
while read BUILD_ID; do
echo "Deleting old build: $BUILD_ID"
signaloid-cli builds delete --build-id $BUILD_ID
done

Exit Codes

CodeDescription
0Success (or build completed)
1Error or build failed

The watch command returns:

  • 0 if build completes successfully
  • 1 if build fails, is cancelled, or times out

Tips & Tricks

Parallel Builds

# Create multiple builds in parallel
for file in *.c; do
signaloid-cli builds create:source --file $file --lang C &
done
wait
echo "All builds created"

Monitor Build Queue

#!/bin/bash

while true; do
IN_PROGRESS=$(signaloid-cli builds list --status "In Progress" | \
jq '.Builds | length')
echo "Builds in progress: $IN_PROGRESS"
sleep 10
done

Retry Failed Builds

# Get failed builds
FAILED_BUILDS=$(signaloid-cli builds list --status "Failed" | \
jq -r '.Builds[].BuildID')

# Retry each (by getting original build and creating new one)
for BUILD_ID in $FAILED_BUILDS; do
BUILD_INFO=$(signaloid-cli builds get --build-id $BUILD_ID)
REPO_ID=$(echo $BUILD_INFO | jq -r '.RepositoryID')

if [ "$REPO_ID" != "null" ]; then
echo "Retrying build for repo: $REPO_ID"
signaloid-cli builds create:repo --repo-id $REPO_ID
fi
done

Troubleshooting

Build Stays in "Initialising" State

Problem: Build doesn't progress beyond initialization.

Solutions:

  1. Wait a few more minutes (initialization can take time)
  2. Check build output for errors: signaloid-cli builds output --build-id <id>
  3. Verify repository is accessible
  4. Check that the build directory exists in the repository

"Build failed" with No Error Message

Problem: Build fails without clear error.

Solutions:

  1. Get detailed output: signaloid-cli builds output --build-id <id>
  2. Check if source file is valid C/C++/Fortran
  3. Verify all dependencies are available
  4. Check for missing includes or libraries

Build Timeout

Problem: watch command times out.

Solutions:

  1. Increase timeout: --timeout 300000 (5 minutes)
  2. Check build status manually: signaloid-cli builds status
  3. Large builds may take longer - adjust timeout accordingly

See Also

Learn More