The Build Pipeline

October 22nd, 2019

At the core of Chipper CI is the Pipeline - the things it does when new code is pushed to a Git repository.

A typical pipeline usually has these elements:

  1. Cloning the repository at a specific commit
  2. Installing dependencies (preferably from a cache)
  3. Running tests
  4. Reporting on results

chipper ci build pipeline

Chipper CI attempts to make this as easy as possible for Laravel users. It handles cloning the repository, and caching your builds. The Pipeline handles the rest.

Each new project has a default pipeline that should Just Work™ (minus any needed environment variables specific to your application).

chipper ci default pipeline

Each step in the pipeline is completely customizable. It's just Bash, so you can do just about anything you need in there, including using sudo to install other dependencies.

Environment Variables

Environment variables are something Chipper CI can't know about ahead of time. You'll need to define the ones your project needs to successful be built and run tasks against (such as your unit tests).

You have a few options on setting up environment variables.

First, you can create a .env file for Chipper CI. By default, we copy .env.example and generate a new APP_KEY. However, you can create your own .env file (such as .env.chipper) and have the Pipeline use that for the .env file.

You can also add your own environment variables in the Project Settings.

chipper ci env vars

These become system environment variables and thus override settings in your project's .env file (which is how the DotEnv package works when reading the .env file).

Reporting on Results

You'll probably want to know the result of your builds!

You have a few options:

  • Post to Slack. Everyone loves more Slack notifications. Here's a few more, courtesy of Chipper CI!
  • Post to a URL of your choice. You want webhooks? We got webhooks.
  • Post to Telegram. Because I couldn't get David to install Slack.
  • The pipeline is just Bash, so do whatever you want! (for example, using conditionals)