How is RelativeCI working?

RelativeCI uses @relative-ci/agent to collect, validate, filter, and send webpack stats and build information to the service API.

The API analyzes the webpack stats using bundle-stats, saves the result, and triggers the enabled integrations(GitHub commit status report, GitHub pull request comment, Slack notification).

https://app.relative-ci.com allows users to view project metric trends or access in-depth job reports for every project.


Does RelativeCI GitHub application have access to my repository source code?

RelativeCI does not have access to the repository source code. The GitHub application installation will ask for the following permissions:

  • Metadata - list collaborators and repository metadata
  • Checks - add commit status checks and reports
  • Pull requests - add pull request comments


What data is the agent sending?

The agent validates, filters the webpack stats, and sends only the necessary data (eg: asset/module name and size). Also, the agent relies on env-ci to read information about the current build job. We do not access, process, or send any source code.

To inspect the agent payload, you can use payloadFilepath option to save the data on disk.

What environment variables are required?

@relative-ci/agent expects the presence of specific environment variables to identify the project and label individual jobs:

  • RELATIVE_CI_KEY: the RelativeCI API key specific for your project
  • Continuous Integration(CI) environment variables: RelativeCI uses env-ci to normalize the variables across different CI services. The agent uses the following properties: branch, build, buildUrl, commit, isCi, pr, prBranch, service, slug.

How can I exclude specific assets or modules?

@relative-ci/agent uses the webpack stats as a source of data. The webpack stats configuration allows you to exclude assets or modules:

Webpack plugin setup example

// webpack.config.js
const { RelativeCiAgentWebpackPlugin } = require('@relative-ci/agent');

module.exports = {
  // ... your webpack config
  plugins: [
    // ... other plugins
    new RelativeCiAgentWebpackPlugin({
      stats: {        excludeAssets: [/webpack-stats.json/]      }    })

CLI setup example

// webpack.config.js
const { StatsWriterPlugin } = require('webpack-stats-plugin');

module.exports = {
  // ... your webpack config
  plugins: [
    // ... other plugins

    // Write out stats file to build directory.
    new StatsWriterPlugin({
      filename: 'stats.json',
      stats: {
        context: './src', // optional, will improve readability of the paths
        assets: true,
        entrypoints: true,
        chunks: true,
        modules: true,        excludeAssets: [/webpack-stats.json/]

How can I enable the webpack plugin only for one build task

If you run multiple build tasks for every commit, it is recommended to configure @relative-ci/agent to run only once. To achieve this, enable the plugin based on a specific environment variable:

// webpack.config.js
const { RelativeCiAgentWebpackPlugin } = require('@relative-ci/agent');

module.exports = {
  // ... your webpack config
  plugins: [
    // ... other plugins
    new RelativeCiAgentWebpackPlugin({
      enabled: process.env.RELATIVE_CI    })

Run the build task with the environment variable:

RELATIVE_CI=true npm run build


What is a base branch?

The base branch is the project default branch. The default value is master, but you can change it to match your workflow on Project -> Settings.


What is the job baseline?

A baseline is the latest job in the base branch.


What payment methods are supported?

RelativeCI uses Paddle.com to manage subscriptions. We support all major card providers and PayPal.

Will I be charged sales tax or VAT?

Depending on your region or entity type (consumer/organization), Paddle will collect the applicable tax. The total price will be calculated at the payment step.

Can I cancel my account?

You can cancel your organization subscription any time.

What is your refund policy?

You can ask for a refund within 14 days from your latest payment.

How do you count the number of jobs?

A job is a successful request sent by @relative-ci/agent for one of your projects. We count all the jobs across all the organization projects for the current billing period.

What if I exceed my subscription's monthly jobs quota

The number of jobs for each plan is a soft limit. We will continue to process your requests if you exceed your subscription quota. If the number of jobs is exceeding the quota the following month, a representative will get in touch to help with a more suitable plan.

Have other questions?Contact us via email, Twitter, or Github!