imagemanifest

package
v1.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 23, 2026 License: AGPL-3.0 Imports: 14 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func BakedToolchains

func BakedToolchains() []string

BakedToolchains are the toolchains every managed worker image must pin. The representative benchmark installers short-circuit when the pinned version is already on PATH, and actions/setup-go resolves a pre-seeded runner tool cache, so a complete set turns per-job toolchain installation into a no-op.

Types

type BrowserSmoke added in v1.0.1

type BrowserSmoke struct {
	Version       string `json:"version,omitempty" yaml:"version,omitempty"`
	UpstreamRef   string `json:"upstream_ref,omitempty" yaml:"upstream_ref,omitempty"`
	Archive       string `json:"archive,omitempty" yaml:"archive,omitempty"`
	DownloadURL   string `json:"download_url,omitempty" yaml:"download_url,omitempty"`
	ArchiveSHA256 string `json:"archive_sha256,omitempty" yaml:"archive_sha256,omitempty"`
	BinaryPath    string `json:"binary_path,omitempty" yaml:"binary_path,omitempty"`
}

BrowserSmoke pins browser bytes used only to launch-test the image. The archive is injected into the disposable smoke instance and deleted with it; consumer jobs install the browser version from their own lockfile.

type Guest

type Guest struct {
	BuilderDiskGiB      int               `json:"builder_disk_gib" yaml:"builder_disk_gib"`
	Packages            []string          `json:"packages" yaml:"packages"`
	PackageVersions     map[string]string `json:"package_versions,omitempty" yaml:"package_versions,omitempty"`
	Variant             string            `json:"variant,omitempty" yaml:"variant,omitempty"`
	DockerActionBaseRef string            `json:"docker_action_base_ref,omitempty" yaml:"docker_action_base_ref,omitempty"`
	Browser             string            `json:"browser,omitempty" yaml:"browser,omitempty"`
}

func (Guest) BrowserCapable added in v1.0.1

func (g Guest) BrowserCapable() bool

func (Guest) DockerCapable

func (g Guest) DockerCapable() bool

func (Guest) EffectiveVariant

func (g Guest) EffectiveVariant() string

type Image

type Image struct {
	Type          string `json:"type,omitempty" yaml:"type,omitempty"`
	Alias         string `json:"alias" yaml:"alias"`
	CurrentAlias  string `json:"current_alias" yaml:"current_alias"`
	PreviousAlias string `json:"previous_alias" yaml:"previous_alias"`
	SourceAlias   string `json:"source_alias" yaml:"source_alias"`
	OS            string `json:"os" yaml:"os"`
	Release       string `json:"release" yaml:"release"`
	Architecture  string `json:"architecture" yaml:"architecture"`
}

func (Image) EffectiveType

func (i Image) EffectiveType() string

type Issue

type Issue struct {
	Path    string
	Message string
}

type Manifest

type Manifest struct {
	SchemaVersion int           `json:"schema_version" yaml:"schema_version"`
	Image         Image         `json:"image" yaml:"image"`
	Source        Source        `json:"source" yaml:"source"`
	Runner        Runner        `json:"runner" yaml:"runner"`
	CompilerCache Tool          `json:"compiler_cache" yaml:"compiler_cache"`
	Toolchains    []Toolchain   `json:"toolchains" yaml:"toolchains"`
	BrowserSmoke  *BrowserSmoke `json:"browser_smoke,omitempty" yaml:"browser_smoke,omitempty"`
	Guest         Guest         `json:"guest" yaml:"guest"`
}

Manifest pins every network-fetched input used to build a worker image. It intentionally contains no credentials or mutable aliases as sources.

func Decode

func Decode(reader io.Reader) (Manifest, error)

func Load

func Load(path string) (Manifest, error)

func (Manifest) CanonicalJSON

func (m Manifest) CanonicalJSON() ([]byte, error)

func (Manifest) Fingerprint

func (m Manifest) Fingerprint() (string, error)

func (Manifest) Validate

func (m Manifest) Validate() error

type Runner

type Runner struct {
	Version     string `json:"version" yaml:"version"`
	Archive     string `json:"archive" yaml:"archive"`
	DownloadURL string `json:"download_url" yaml:"download_url"`
	SHA256      string `json:"sha256" yaml:"sha256"`
}

type Source

type Source struct {
	ReleaseID         string `json:"release_id" yaml:"release_id"`
	BaseURL           string `json:"base_url" yaml:"base_url"`
	ChecksumsFile     string `json:"checksums_file" yaml:"checksums_file"`
	SignatureFile     string `json:"signature_file" yaml:"signature_file"`
	MetadataFile      string `json:"metadata_file" yaml:"metadata_file"`
	MetadataSHA256    string `json:"metadata_sha256" yaml:"metadata_sha256"`
	DiskFile          string `json:"disk_file" yaml:"disk_file"`
	DiskSHA256        string `json:"disk_sha256" yaml:"disk_sha256"`
	RootfsFile        string `json:"rootfs_file,omitempty" yaml:"rootfs_file,omitempty"`
	RootfsSHA256      string `json:"rootfs_sha256,omitempty" yaml:"rootfs_sha256,omitempty"`
	KeyringPath       string `json:"keyring_path" yaml:"keyring_path"`
	SignerFingerprint string `json:"signer_fingerprint" yaml:"signer_fingerprint"`
}

type Tool

type Tool struct {
	Name          string `json:"name" yaml:"name"`
	Version       string `json:"version" yaml:"version"`
	SourceCommit  string `json:"source_commit" yaml:"source_commit"`
	Archive       string `json:"archive" yaml:"archive"`
	DownloadURL   string `json:"download_url" yaml:"download_url"`
	ArchiveSHA256 string `json:"archive_sha256" yaml:"archive_sha256"`
	BinaryPath    string `json:"binary_path" yaml:"binary_path"`
	BinarySHA256  string `json:"binary_sha256" yaml:"binary_sha256"`
}

Tool pins a release artifact and its extracted executable independently. SourceCommit is provenance metadata; the release archive and installed executable remain enforced by their own SHA-256 digests.

type Toolchain

type Toolchain struct {
	Name          string `json:"name" yaml:"name"`
	Version       string `json:"version" yaml:"version"`
	Archive       string `json:"archive" yaml:"archive"`
	DownloadURL   string `json:"download_url" yaml:"download_url"`
	ArchiveSHA256 string `json:"archive_sha256" yaml:"archive_sha256"`
}

Toolchain pins one language toolchain that the image bakes so no job repeats its download and install. A multi-file toolchain cannot be described by a single executable digest the way Tool describes sccache, so the enforced pair is the release archive digest, which fully determines the extracted tree, and the exact version every installed executable must report after installation.

type ValidationError

type ValidationError struct{ Issues []Issue }

func (*ValidationError) Error

func (e *ValidationError) Error() string

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL