JFPatch as a Service

Build Configuration

Introduction

JFPatch as a service is actually a generic cloud based RISC OS build system. It can also be supplied a Zip archive, as described on the home page, which contains the JFPatch source and patch files, and it will build these. This is only one of the modes in which it can function. If the Zip archive contains a configuration file, the JFPatch as a service system will interpret this as build instructions and return the results.

Build configuration

The build configuration is held in a file with the RISC OS filename '/robuild/yaml', '/robuild/yml' or '/robuild'. The YAML format has been allocated the filetype &F74, although the file does not have to have this filetype assigned to it.

The file may be stored in the Zip archive using either RISC OS zip conventions (using the AC/ARC0 extra field, as used by most RISC OS tools), or the standard unix conventions, with or without NFS encoding of the filename (ie, the file in the Zip can be called '.robuild.yml', or '.robuild.yml,f74' or any of the other variations.

The file is used to define how the build should be performed. The file must contain a dictionary with the following elements:

The jobs dictionary may contain the following keys:

The artifacts list items are a dictionary describing how they artifacts are to be handled:

The YAML file content is restricted to simple expressions. Flow content (eg JSON strings), block strings, anchors and aliases, directives and types are not supported.

Build environment

The build environment that the service executes files under is a variant of RISC OS and can function as you might expect RISC OS to function. There are limitations, however, which are based on the implementation, the nature of the service and security. These limitations are subject to change at any time, but the following are the most significant:

The build environment has the following tools installed:

In addition to these tools, some of the standard RISC OS commands are available.

There are libraries and headers for the C and Pascal libraries present.

Example

An example file, used in the LineEditor build.