Skip to main content

Using Regal in your build pipeline

Its possible to use Regal to lint your Rego policies in your CI/CD pipeline(s)!

This document will guide you on how to do so. Please also review the CLI documentation for more information on the available options.

GitHub Actions

If you'd like to run Regal in GitHub actions, please consider using setup-regal. A simple .github/workflows/lint.yml to run regal on PRs could look like this, where policy contains Rego files:

name: Regal Lint
on:
pull_request:
jobs:
lint-rego:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: StyraInc/setup-regal@v1
with:
# For production workflows, use a specific version, like v0.22.0
version: latest

- name: Lint
run: regal lint --format=github ./policy

Please see setup-regal for more information.

GitLab CI/CD

To use Regal in GitLab CI/CD, you could for example use the following stage in your .gitlab-ci.yml:

regal_lint_policies:
stage: regal-lint
image:
# For production workflows, use a specific version, like v0.22.0
name: ghcr.io/styrainc/regal:latest
entrypoint: ['/bin/sh', '-c']
script:
- regal lint ./policy --format junit > regal-results.xml
artifacts:
reports:
junit: regal-results.xml
when: always
rules:
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'

The above will run Regal on the policy directory when a merge request is created or updated and will show linting violations as part of the merge request.

Community

For questions, discussions and announcements related to Styra products, services and open source projects, please join the Styra community on Slack!