cli/docs/cmd/build/index.md
Snider a92df56fd1 docs: sync core build with CLI
- Added from-path and pwa subcommands
- Added missing flags (--archive, --checksum, --config, --format, --push)
- Updated build sdk with --dry-run and --version flags

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 16:17:00 +00:00

4.3 KiB

core build

Build Go, Wails, Docker, and LinuxKit projects with automatic project detection.

Subcommands

Command Description
sdk Generate API SDKs from OpenAPI
from-path Build from a local directory
pwa Build from a live PWA URL

Usage

core build [flags]

Flags

Flag Description
--type Project type: go, wails, docker, linuxkit, taskfile (auto-detected)
--targets Build targets: linux/amd64,darwin/arm64,windows/amd64
--output Output directory (default: dist)
--ci CI mode - minimal output with JSON artifact list at the end
--image Docker image name (for docker builds)
--config Config file path (for linuxkit: YAML config, for docker: Dockerfile)
--format Output format for linuxkit (iso-bios, qcow2-bios, raw, vmdk)
--push Push Docker image after build (default: false)
--archive Create archives (tar.gz for linux/darwin, zip for windows) - default: true
--checksum Generate SHA256 checksums and CHECKSUMS.txt - default: true
--no-sign Skip all code signing
--notarize Enable macOS notarization (requires Apple credentials)

Examples

Go Project

# Auto-detect and build
core build

# Build for specific platforms
core build --targets linux/amd64,linux/arm64,darwin/arm64

# CI mode
core build --ci

Wails Project

# Build Wails desktop app
core build --type wails

# Build for all desktop platforms
core build --type wails --targets darwin/amd64,darwin/arm64,windows/amd64,linux/amd64

Docker Image

# Build Docker image
core build --type docker

# With custom image name
core build --type docker --image ghcr.io/myorg/myapp

# Build and push to registry
core build --type docker --image ghcr.io/myorg/myapp --push

LinuxKit Image

# Build LinuxKit ISO
core build --type linuxkit

# Build with specific format
core build --type linuxkit --config linuxkit.yml --format qcow2-bios

Project Detection

Core automatically detects project type based on files:

Files Type
wails.json Wails
go.mod Go
Dockerfile Docker
Taskfile.yml Taskfile
composer.json PHP
package.json Node

Output

Build artifacts are placed in dist/ by default:

dist/
├── myapp-linux-amd64.tar.gz
├── myapp-linux-arm64.tar.gz
├── myapp-darwin-amd64.tar.gz
├── myapp-darwin-arm64.tar.gz
├── myapp-windows-amd64.zip
└── CHECKSUMS.txt

Configuration

Optional .core/build.yaml:

version: 1

project:
  name: myapp
  binary: myapp

build:
  main: ./cmd/myapp
  ldflags:
    - -s -w
    - -X main.version={{.Version}}

targets:
  - os: linux
    arch: amd64
  - os: linux
    arch: arm64
  - os: darwin
    arch: arm64

sign:
  enabled: true
  gpg:
    key: $GPG_KEY_ID
  macos:
    identity: "Developer ID Application: Your Name (TEAM_ID)"
    notarize: false
    apple_id: $APPLE_ID
    team_id: $APPLE_TEAM_ID
    app_password: $APPLE_APP_PASSWORD

Code Signing

Core supports GPG signing for checksums and native code signing for macOS.

GPG Signing

Signs CHECKSUMS.txt with a detached ASCII signature (.asc):

# Build with GPG signing (default if key configured)
core build

# Skip signing
core build --no-sign

Users can verify:

gpg --verify CHECKSUMS.txt.asc CHECKSUMS.txt
sha256sum -c CHECKSUMS.txt

macOS Code Signing

Signs Darwin binaries with your Developer ID and optionally notarizes with Apple:

# Build with codesign (automatic if identity configured)
core build

# Build with notarization (takes 1-5 minutes)
core build --notarize

Environment Variables

Variable Purpose
GPG_KEY_ID GPG key ID or fingerprint
CODESIGN_IDENTITY macOS Developer ID (fallback)
APPLE_ID Apple account email
APPLE_TEAM_ID Apple Developer Team ID
APPLE_APP_PASSWORD App-specific password for notarization

Building from PWAs and Static Sites

Build from Local Directory

Build a desktop app from static web application files:

core build from-path --path ./dist

Build from Live PWA

Build a desktop app from a live Progressive Web App URL:

core build pwa --url https://example.com