A build manifest is a YAML file that describes how to perform a build. Here's an example: image: archlinux packages: - cmake - wlc-git - xorg-server-xwayland - xcb-util-image - json-c - pango - cairo - wayland - gdk-pixbuf2 - asciidoc sources: - https://github.com/SirCmpwn/sway tasks: - setup: | cd sway mkdir build cd build cmake .. - build: | cd sway cd build make The minimum build manifest has an image and at least one task. The various properties available are described here: ## image *string* Which OS image to build in. A list of available build images can be found on the [compatibility page](/builds.sr.ht/compatibility.md). ## packages *list* (of *string*) A list of packages to install on the image. For image-specific details, consult the [compatibility list](/builds.sr.ht/compatibility.md) ## repositories *dictionary* (of *string: string*) A list of extra repositories to enable with the image's package manager. The specific format varies by base image, [consult the compatibility page](/builds.sr.ht/compatibility.md) for details. ## sources *list* (of *string*) A list of git repositories to clone into the home directory of the build user in the build environment. ## tasks *list* (of *string*) A list of scripts to execute in the build environment. These scripts are run with the following preamble: ```sh #!/usr/bin/env bash . ~/.buildenv set -x set -e ``` ~/.buildenv contains environment variables specified by the `environment` directive. Task names must use only lowercase alphanumeric characters or underscores and must be <=128 characters in length. Tasks are executed in the order specified. Each task is run in a separate login session, so if you modify the groups of the `build` user they will be effective starting from the subsequent task. ## triggers *list* (of *trigger*) A list of triggers to execute post-build, which can be used to send emails or do other post-build tasks. See also: [Build triggers](triggers.md) ## environment *dictionary* (of *string: string* OR *string: list*) A list of key/value pairs for options to set in the build environment via `~/.buildenv`. ## secrets *list* (of *string*) List of secret UUIDs to be added to the guest during the build. See also: [secrets](/builds.sr.ht#secrets).