Six CI systems

Ready-made jobs for GitLab CI, GitHub Actions, Azure DevOps, Google Cloud Build, Jenkins and Bitbucket Pipelines, plus a plain shell version for other CI systems that have sh, curl and jq.

One job to add

The portal generates the job for your CI system. You add that one job to your pipeline file and store a CI token and two portal URLs in your CI's secret store.

A token for one pipeline

Each pipeline has its own token, tied to one asset. It can start scans of that asset and read their results, and nothing else.

A gate you set

The CI job fails when a scan finds issues at or above the severity you choose, counting every open finding or only the findings new since the previous scan.

Honest about coverage

If part of a scan did not run, the log says so, and you can set the job to fail instead of passing.

Fix steps from playbooks

Each finding comes with suggested steps from the platform's built-in remediation playbooks.

What is CI/CD pipeline scanning?

A job in your pipeline, after your deploy step, starts a scan of the one asset its token is tied to. The result passes or fails the CI job.

The portal generates that job for your CI system, and you add it to your pipeline file. PentestOps does not hook your repositories, Git events or deploys by itself.

QuestionShort answer
What you addOne job, generated by the portal for your CI system, added to your pipeline file.
What you storeA CI token and two portal URLs, in your CI's secret store.
When the scan startsWhen your pipeline reaches the job, which you place after your deploy step.
When the gate fails the CI jobA scan finds issues at or above the severity you choose, counting every open finding or only the findings new since the previous scan.
Which CI systemsSix have a ready-made job. Other CI systems that have sh, curl and jq can use a plain shell version.
Which planIncluded in the Enterprise plan.

Six CI systems, a ready-made job for each

The portal generates the job for the CI system you choose. Six systems have a ready-made job, and there is no seventh. There is also a plain shell version for other CI systems that have sh, curl and jq.

CI systemWhere the job runs
GitLab CIThe standard hosted runner.
GitHub ActionsThe standard hosted runner.
Azure DevOpsThe standard hosted runner.
Google Cloud BuildThe standard hosted runner.
JenkinsYour own Jenkins agent, which needs sh, curl and jq.
Bitbucket PipelinesThe standard hosted runner.

How you set it up

Setup takes one job and three values: a CI token and two portal URLs. The portal generates the job for your CI system.

  • Choose your CI system and your gate. The portal generates the job for that CI system. You choose the severity at which the CI job fails, and whether it counts every open finding or only the findings new since the previous scan.
  • Store the token and two portal URLs. Put the CI token and the two portal URLs in your CI's secret store. The token is shown once.
  • Add the job to your pipeline file. Place it after your deploy step.
  • Run your pipeline as usual. Each time the job runs, it downloads the scan script from your own portal and starts a scan of the asset.

A token for one pipeline

Each pipeline has its own token, tied to one asset. The token can start scans of that asset and read their results, and nothing else. It is shown once, so keep it in your CI's secret store, and an admin can rotate or revoke it.

The target and your assets

The pipeline's target is added to your Asset Inventory and counts toward your plan's assets; a target already there is reused and nothing more is counted. Scans run once the target's ownership is verified.

The gate and what the job returns

The gate fails the CI job when a scan finds issues at or above the severity you choose: critical, high, medium or low. You also choose what counts, either every open finding or only the findings that are new since the previous scan.

A failed gate fails the CI job and nothing more. To hold a release, make that job a required check in your own CI or Git host.

The job ends with one of five exit codes.

Exit codeWhat it means
0The gate passed.
1The gate failed, or the job could not set up or fetch the scan script. The log says which.
2No verdict.
3The gate passed, but coverage was incomplete and you asked the job to refuse that.
4The wait ran out.

Honest about coverage and about failures

If part of a scan did not run, the log says so, and you can set the job to fail instead of passing. That case ends with exit code 3.

When a scan ends without finishing, the pipeline log and the portal say why, when the scanner recorded a reason.

Results, fix steps and reports in the portal

  • Every run is listed. Runs are listed newest first, and each run lists its findings most severe first.
  • Fix steps with each finding. Each finding comes with suggested steps from the platform's built-in remediation playbooks.
  • Reports and compliance reports. Each run links to the reports page with that scan selected, so a report or a compliance report can be generated from it.
  • An email summary. When a pipeline scan completes, admins, managers and analysts are emailed a summary with counts by severity and the ten most severe findings by title.

Scanning a target inside your network

A target inside your network can be scanned from a pipeline through a PentestOps agent installed there, when the target is an IP address, a network range or a domain name and the agent is online.

A URL or an API cannot run as internal. If your target is one of those, a pipeline cannot scan it through an agent.

What CI/CD pipeline scanning does not do

  • It does not block pull requests or merges on its own.
  • It does not comment on pull requests or merge requests.
  • It does not publish SARIF or send results to GitHub code scanning.
  • It does not scan your source code, dependencies, containers or infrastructure as code.
  • It is not an IDE plugin.
  • It does not scan each commit or each diff.
  • It is not zero configuration.
  • It does not hook your repositories, Git events or deploys, so it does not scan automatically on every deploy.
  • It does not run a URL or an API as an internal scan.
  • It does not have a ready-made job for every CI system.

Where it sits in your plan

CI/CD pipeline scanning is included in the Enterprise plan. Current plan detail is on the pricing page, and you can talk to sales about Enterprise scope.

Frequently Asked Questions

Which CI systems does PentestOps have a ready-made job for?

Six: GitLab CI, GitHub Actions, Azure DevOps, Google Cloud Build, Jenkins and Bitbucket Pipelines. There is no seventh. Other CI systems that have sh, curl and jq can use a plain shell version of the job.

What do we have to add to our pipeline?

One job. The portal generates it for your CI system and you add it to your pipeline file, after your deploy step. You also store a CI token and two portal URLs in your CI's secret store. Each time the job runs, it downloads the scan script from your own portal.

What can the pipeline token do?

Each pipeline has its own token, tied to one asset. It can start scans of that asset and read their results, and nothing else. It is shown once, and an admin can rotate or revoke it.

When does the gate fail the CI job?

When a scan finds issues at or above the severity you chose, which can be critical, high, medium or low. You also choose whether every open finding counts or only the findings that are new since the previous scan.

Can a failed gate hold a release?

A failed gate fails the CI job and nothing more. To hold a release, make that job a required check in your own CI or Git host.

Can it scan a target inside our network?

Yes, through a PentestOps agent installed there, when the target is an IP address, a network range or a domain name and the agent is online. A URL or an API cannot run as internal.

Where do the fix suggestions come from?

Each finding comes with suggested steps from the platform's built-in remediation playbooks.

Does it scan our source code or dependencies?

No. It does not scan your source code, dependencies, containers or infrastructure as code. A pipeline scan tests the asset its token is tied to.

Which plan includes it?

CI/CD pipeline scanning is included in the Enterprise plan. See pricing for current plan detail.

Put a scan after your deploy

CI/CD pipeline scanning is included in the Enterprise plan. A 7-day free trial covers external and internal scanning only. Talk to our team about Enterprise scope and the CI system you run.