Skip to main content

livecycle.yaml

Livecycle uses a configuration file, livecycle.yaml, to describe the process of building and running a playground environment.

livecycle.yaml can be defined in your repository settings (or during installation). Additionally, you can add the livecycle.yaml file in the repository root and Livecycle will read it during playground creation. When using this approach, it's possible to create and test different configuration for different branches.

Examples

Here's an example of a livecycle.yaml file for a Gatsby JAMStack application:

version: v1alpha1
web:
build:
type: Dockerfile
dockerfile:
contents: |
FROM node:14-buster as build
RUN npm install -g gatsby-cli
WORKDIR /app
COPY package.json yarn.lock ./
RUN yarn
COPY . .
RUN gatsby build
output:
type: static
static:
path: /app/public

Livecycle.yaml Annotated version

livecycle.yaml
# Version of the configuration file
version: v1alpha1

# Define the service that will be loaded in livecycle web interface
web:
# Build section - defines how livecycle is going to build this project
build:
# List of environment variables to inject during build.
# When using Docker based build, these variables will inject as build arg
build_args:
# Environment Variable name
- name: MY_ENV_VAR
# Environment Variable Value
value: SOME_VALUE
# Whether the value of the environment variable is encrypted.
# See the section on secrets and variable encryption
encrypted: true
# Type of build definition, currently only Dockerfile is supported
type: Dockerfile
# Dockerfile build type configuration section
dockerfile:
# (Optional) path to Dockerfile, default to ./Dockerfile
path: ./Dockerfile
# (Optional) define/override Dockerfile contents.
# Can be use when project doesn't use Dockerfile
# or there's need for customization
contents: |
FROM node:14-buster as build
RUN npm install -g gatsby-cli
WORKDIR /app
COPY package.json yarn.lock ./
RUN yarn
COPY . .
RUN gatsby build

# Output section, for defining how the project
# is going to be published and run on livecycle.dev
output:
# Type of the output artifact, can be static or image
type: static
# Static output configuration section
static:
# Path section
path: /app/public
# Image output configuration for running the container
image:
# Port of the container to expose the traffic on
defaultPort: 80
# Env variables, can be use to add runtime env variables to the application container
env:
- name: MY_ENV_VAR
# Environment variable Value
value: SOME_VALUE
# Whether the value of the environment variable is encrypted.
# See the section on secrets and variable encryption
encrypted: false

# Proxy section, for defining the behavior of the playground router
proxy:
# List of routing rules, these rules will
# evaluated in-order with priority to rules with force: true
rules:
# Matching of a url, can use regex and capture groups
- match: /api/(.*)
# Target url to redirect/rewrite to, can use
# replacement expression of captured groups
target: https://some_service.com/api/$1
# Action to return, can be redirect/rewrite, default: rewrite
action: rewrite
# Force the rule - when force is false, request first
# is handled by the playground service and only when there is 4xx error
# the request will be handled by this router rule
force: true