~sircmpwn/sr.ht-docs

dde54921f016da40f8d1a53e401055cfad97c7d1 — Drew DeVault 3 years ago f24312a
Add manifest reference under builds.sr.ht
2 files changed, 104 insertions(+), 1 deletions(-)

M builds.sr.ht/index.md
A builds.sr.ht/manifest.md
M builds.sr.ht/index.md => builds.sr.ht/index.md +1 -1
@@ 64,7 64,7 @@ features of the build.yml - here's an example that deploys
          rsync --rsh="$sshopts" -rP index.html $deploy:/var/www/web.synapse-bt.org/
          rsync --rsh="$sshopts" -rP dist $deploy:/var/www/web.synapse-bt.org/

A [full reference](manifests.md) for build manifests is available.
A [full reference](manifest.md) for build manifests is available.

## Build images


A builds.sr.ht/manifest.md => builds.sr.ht/manifest.md +103 -0
@@ 0,0 1,103 @@
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
[here](/builds.sr.ht/#build-images).

## packages

*list* (of *string*)

A list of package names to install on the image. The details of this process
varies from image to image.

## repositories

*dictionary* (of *string: string*)

A list of extra repositories to enable with the image's package manager.
The format is name: url, and the syntax of url varies between images.

- **Arch Linux** uses `url#key-id`, where `url` is the URL of the package
repository and `key-id` is the ID of the published PGP key the packages are
signed with.

## 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:

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

## 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. This uses the same structure as triggers in
[the API](/builds.sr.ht/api.md#post-apijobs), but as YAML rather than JSON.

## 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).