Continuous Integration with CircleCI

Integrating Prism into your Circle CI pipeline is easy. The simplest way to get up and running is by using Stoplight’s Prism Docker image.

To get started, you will need to reference the Prism Docker image in the docker section of either the build or test sections of your Circle CI configuration file. This file is typically located under the .circleci directory in the root of your repository.

When integrating Prism into a CircleCI pipeline, there are two different approaches:

  • Starting Prism in the background to act as either a mock or contract/validation server
  • Having Prism conduct a scenario against a running server by running as a dedicated test step

Running Prism in the Background

Below is a sample Circle CI configuration file (version 2) using Prism as a mock or contract/validation server:

version: 2
jobs:
  build:
    docker:
      # The first image is where your commands will be run,
      # so be sure that the prism image is not first
      - image: your-normal-image:your-version
      # Customize the 'command' to fit your needs.
      - image: stoplight/prism:latest
        command: [prism, ...]
    steps:
      # Run test suite against http://localhost:4010
      ...

Once the Prism container is started, it will automatically start listening on http://localhost:4010 for any open connections.

Running Prism in the Foreground

Below is a sample Circle CI configuration file (version 2) with Prism conducting a scenario:

version: 2
jobs:
  build:
    docker:
      - image: your-normal-image:your-version
    steps:
      - checkout
      - run:
          name: Install prism
          command: curl https://raw.githubusercontent.com/pytlesk4/stoplight-todos/master/prism.sh | sh
      - run:
          name: Start your service
          command: ...
          background: yes
      - run:
          name: Run scenario
          command: prism conduct ...
      ...

When running prism conduct you can:

  • Include the Scenario JSON on your CI server, and pass in its absolute file path
  • Pass in the absolute URL to the scenario JSON served up via HTTP

Don’t forget to pass in any required environment values with the --env command line flag (or you can provide the filepath to a json file with your environment variables)!

Did you know? You can find the full command to run your scenario collection or individual scenarios in the Stoplight application. Click on the “Home” button of a scenario under “Trigger This Collection”.


Related Articles