sr.ht-docs/builds.sr.ht/manifest.md

3.0 KiB

title
Build manifest reference

A build manifest is a YAML file that describes how to perform a build. Here's an example:

image: archlinux
packages:
  - meson
  - scdoc
  - wayland-protocols
  - wlroots-git
  - wayland
  - libxkbcommon
  - cairo
  - pango
  - gdk-pixbuf2
  - pixman
  - libinput
  - xorg-server-xwayland
sources:
  - https://github.com/SirCmpwn/sway
tasks:
  - setup: |
      cd sway
      meson build      
  - build: |
      cd sway
      ninja -C build      

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.

packages

list (of string)

A list of packages to install on the image. For image-specific details, consult the compatibility list

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 for details.

sources

list (of string)

A list of repositories to clone into the home directory of the build user in the build environment. Optionally, prefix the protocol with the source control management scheme, to specify a protocol other than git. Examples:

  • https://git.sr.ht/~sircmpwn/scdoc: git over https
  • git@git.sr.ht:~sircmpwn/scdoc: git over SSH (requires key)
  • hg+https://hg.sr.ht/~sircmpwn/scdoc: Mercurial over https
  • hg+ssh://hg.sr.ht/~sircmpwn/scdoc: Mercurial over SSH (requires key)

tasks

list (of string)

A list of scripts to execute in the build environment. These scripts are run with the following preamble:

#!/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

environment

dictionary (of string: string OR string: list)

A list of key/value pairs for options to set in the build environment via ~/.buildenv.

Since the value will be parsed twice, once as YAML and once by bash, string literals containing spaces must be 'doubly quoted':

environment:
  GIT_SSH_COMMAND: '"ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no"'

secrets

list (of string)

List of secret UUIDs to be added to the guest during the build. See also: secrets.